USART:Universal Synchronous/Asynchronous Receiver/Transmitter通用同步异步收发器(STM32中就是这个)
UART:通用异步收发器,
当进行异步通信时,两个是没有区别的,区别在域USART比UART多了同步通信功能,这个同步通信功能可以把USART当做SPI来用,比如用USART来驱动SPI设备。USART支持同步模式,这时需要同步时钟信号USART_CK,也就是说USART和UART的区别之一就是能提供主动时钟,通常情况同步信号很少使用,因此一般的单片机USART和UART是一样的,都是用异步模式。
STM32的USART的起始位应该不只是一个低电平,应该理解成下降沿加一个低电平。如下图,首先是检测一个下降沿,然后再进行两次三个点的采样。
同步是指:发送方发出数据后,等接收方发回响应以后才发下一个数据包的通讯方式。
异步是指:发送方发出数据后,不等接收方发回响应,接着发送下个数据包的通讯方式。
同步是阻塞模式,异步是非阻塞模式。
其中SPI IIC为同步通信 UART为异步通信, usart为同步&异步通信。
单工、半双工、全双工
单工数据传输只支持数据在一个方向上传输;
半双工数据传输允许数据在两个方向上传输,但是,在某一时刻,只允许数据在一个方向上传输,它实际上是一种切换方向的单工通信;
全双工数据通信允许数据同时在两个方向上传输,因此,全双工通信是两个单工通信方式的结合,它要求发送设备和接收设备都有独立的接收和发送能力。
I2C是半双工,SPI的全双工,uart是全双工。
方便记忆的方法:I2C只有一根可以用来传输数据的线,SPI和UART都是有两根线可以传输,