什么是usart?和其他通信又有什么区别?

如下图:

        USART是一种用于串行通信的设备,可以在同步和异步模式下工作。

        usart有两根数据线,一根发送线(tx)一根接收线(rx),它可以实现同时的双向通信,因此是一种全双工串行通信,但是其缺陷是支持点对点,不支持多设备

常用设备:比如usb转ttl,蓝牙模块等

异步模式

在异步模式下,USART不使用时钟信号来同步发送和接收的数据,而是依赖于双方设置的相同波特率。数据传输通过起始位、数据位、奇偶校验位(可选)和停止位来实现同步。

  • 起始位:表示数据传输的开始,通常为低电平。
  • 数据位:实际传输的数据位,可以是5到9位。
  • 奇偶校验位:用于检测传输错误(可选)。
  • 停止位:表示数据传输的结束,通常为高电平。
  • 同步模式

    在同步模式下,USART使用一个额外的时钟信号(SCLK)来同步发送和接收的数据。发送方和接收方共享这个时钟信号,确保数据传输的同步和准确性。

  • 数据位:与异步模式相同,可以是5到9位。
  • 时钟信号(SCLK):用于同步发送和接收的数据。
  • 同步数据帧:数据帧的结构与异步模式相似,但在时钟信号的同步下进行传输。
  • 但是在一般不加时钟的多,一般用异步。

    数据传输过程
    1. 初始化:在使用USART进行通信前,需要配置USART的波特率、数据位、奇偶校验位、停止位和工作模式(同步或异步)。
    2. 发送数据:将数据写入发送数据寄存器,USART会根据配置的波特率和其他参数自动发送数据。
    3. 接收数据:当USART接收到数据后,会将其存储在接收数据寄存器中,可以通过中断或轮询的方式读取数据。
    双工模式介绍:
    1. 全双工(Full Duplex):USART在全双工模式下,可以同时发送和接收数据。它通常使用两个独立的数据线:TX(发送)和RX(接收)。全双工通信提高了数据传输的效率,因为发送和接收操作不会互相阻塞。

    2. 半双工(Half Duplex):虽然USART的硬件设计支持全双工,但它也可以配置为半双工模式。在半双工模式下,同一时间只能发送或接收数据,而不能同时进行。这种模式通常使用一根数据线(通常是TX/RX共用一根线),需要切换方向来发送或接收数据。

    3. 单工(Simplex):单工通信是指数据只能单向传输,即只能发送或只能接收,不能同时进行。虽然USART硬件一般不用于单工通信,但在某些特定应用场景中,可以将其配置为单工模式

    接线:

    在这我们一般取用异步接线,

    TX与RX要交叉连接,因为对于设备2来说,设备1的发送(tx)就是它的接收(rx),对方同理。

    电平标准:

            电平标准是数据1和数据0的表达方式,是传输线缆中人为规定的电压与数据的对应关系,串口常用的电平标准有如下三种:

             TTL电平:+3.3V或+5V表示1,0V表示0

             RS232电平:-3~-15V表示1,+3~+15V表示0

            RS485电平:两线压差+2~+6V表示1,-2~-6V表示0(差分信号)

    串口参数时序:

    波特率:串口通信的速率

    起始位:标志一个数据帧的开始,固定为低电平

    数据位:数据帧的有效载荷,1为高电平,0为低电平,低位先行

    校验位:用于数据验证,根据数据位计算得来

    停止位:用于数据帧间隔,固定为高电平

    数据包:

    HEX:

           

    文本:

    疑问解答:

    看到这是不是有了一些疑问?

    1.既然大部分是利用异步通信,那么他们是如何保证数据发送和接收不会错误?

    2.usart和uart是一个吗?有区别吗?

    3.usart和iic、rs485、can等又有什么区别?

    1.        

            既然双设备利用串行双向发送,那么发送和接收肯定要约定好一个频率,主机按照一定频率发送,从机按照一定频率接收,这样子才不会出现丢包、空包。因此,在这里面,就出现了一种通信参数,叫做波特率。        

            发送端和接收端必须配置相同的波特率,即每秒钟传输的比特数。以此保证串口每发送的一位数据,其都能接收到,常见波特率:9600、115200、19200。

    2.

  • USART:支持同步和异步两种模式。在同步模式下,USART使用时钟信号进行数据同步传输,这意味着发送和接收需要共享一个时钟信号。在异步模式下,USART的工作方式与UART相同,不需要共享时钟信号。
  • UART:只支持异步模式,不需要共享时钟信号,发送和接收数据通过串行数据线进行。
  •         主要的区别在于 USART 具有同步传输的能力,可以通过外部时钟源进行精确的时钟同步,而 UART 只能支持异步传输。USART 在物理层面的连接和电信号处理方面也稍有区别。

            因此,选择使用 UART 还是 USART 取决于具体的应用需求。如果只需要基本的异步传输功能,可以选择 UART。如果需要同步传输或更高级的功能,如多主机通信、同步通信等,可以选择 USART。

    3.

    作者:苦学嵌入式

    物联沃分享整理
    物联沃-IOTWORD物联网 » STM32 USART通信实现指南

    发表回复