CortexM3的UART

来源:互联网 发布:unity3d 5.3.4f1 下载 编辑:程序博客网 时间:2024/04/30 13:59

UART的定义

Universal Asynchronous Receiver/Transmitter
通用异步收发器
UART是一种典型的异步穿行通信接口,支持双向通信,可以实现全双工数据传输
串口与通用串行通信口是两回事

(USB通用串行接口与老串口(也叫COM口,通讯口)不是一个意思,老串口在很老的机器上或现在的电脑上都有,主要用于低速设备通讯用,多用于MODEM——电话调制解调器,已经被淘汰了)

UART简介

UART是实现设备间异步串行通信的关键模块,处理数据总线与串口之间的串并并串转换。
其过程是:CPU先把准备发送出去的数据写入到UART的数据寄存器端口,在通过FIFO(First Input First Output,先入先出队列)传送到串行发送器,如果没有FIFO,CPU每次只能写一个数据到UART的数据寄存器端口。

UART通信字符帧格式

UART通信时需保证收发两端的帧格式一直,否则会出现通信错误。
UART数据帧格式

UART物理电平接口

RS232

  • 逻辑1为相对于地为-3到-15伏
    逻辑0为相对于地为+3到+15伏
  • 由于最大通信距离(约为15米)的限制,它常常用于本地设备之间的通信。
  • 当一个微控制器的UART相连于PC时,它需要一个RS232驱动器来转换电平。

RS485

  • RS485只定义电压与阻抗
  • 与TTL电平兼容
  • 常用于远距离通信
  • 需要RS485驱动器来将单端信号转换为双端信号

UART数据收发原理

UART通过TX脚发送数据,RX脚接受数据,实现全双工收发。

阻塞式与非阻塞式

阻塞式

阻塞式即在发送或接受数据过程中,始终查询状态,占用CPU时间。只有当发送或接受结束后才推出。

非阻塞式

非阻塞式在执行到发送或接收函数时,发送函数仅仅将数据推送给寄存器,并不保证传送成功,如果能传送则返回TRUE,否则返回FALSE。接收函数同理.
因此UARTCharGetNonBlocking
经常与UARTCharsAvail一同使用,后者返回一个标志,反映接受FIFO中是否有数据。

UART中断清除

当UART发送或接受到一个数据后,会置位相应的中断标志位,如果允许中断,则会进入中断(发送中断或接受中断),使用中断能够减少主程序中消耗的事件,提高效率。
因为UART的中断关联了发送或接受,因此不能像单一中断如Systick一样由CPU进入中中断后自动清除中断标志位,只能由编程人员根据情况清除中断标志位。*如果不清除,则会导致反复地进入中断。*UARTIntClear

原创粉丝点击