UART
UART(Universal Asynchronous Receiver Transmitter) 通用异步收发器,是一种全双工的、异步串行数据总线。数据位一般为5-8位(太长会因为时钟频率的缘故,产生误差)。 一般含串口的芯片集成有 UART 控制器,我们只需要操作其寄存器即可完成通信。 以4412开发板为例,讲解其串口2使用(基本上可以理解为一堆寄存器操作):
- 设置主板的 GPA1_0 和GPA1_1 引脚为 UART2的发送和接收引脚,操作寄存器 GPACON[7:0]
- 设置 UART2 的帧格式, ULCON2
8位数据位 1位停止位 无校验 正常模式 - 设置 UART2 的发送和接收模式为轮询模式 UCON2[3:0]
- 设置波特率 UBRDIV2/UFRACVAL2
- 将要发送的数据写入发送寄存器
RS232
RS232 和 RS485 是电气层面的说法,实际上还是串口协议。 直接使用串口有会有如下问题:
- 电气接口特性未定义:比如连接器、电平等
- 使用的是TTL电平,抗干扰能力很差
- 通信距离短
然后RS232就来了,其连接器标准为 DB9(如下图,早期的很多PC、投影仪都有这个接口),主要使用的引脚其实只有三个(RXD/TXD/GND),其传输距离可达15m。
RS485
但RS232也有问题
- 比如电平太高了(-5~-15 表示 1,+5~+15表示0),容易损坏接口电路芯片;
- 速度低
- 易产生共模干扰
所以又有了 RS485。RS485采用差分信号,抗干扰能力强,传输距离可达1500m;同时语序多个收发器,具备多站能力,能够形成网络;电压低,同时兼容TTL。 但RS485是半双工的,编程上需要做一点特殊处理。
差分传输是一种信号传输的技术,区别于传统的一根信号线一根地线的做法,差分传输在这两根线上都传输信号,这两个信号的振幅相同,相位相反。 在这两根线上的传输的信号就是差分信号。 两线电压差 +2 ~ +6表示1,-2 ~ - 6表示0.
IIC
IIC(Inter-Integrated Circuit)其实是IICBus简称,所以中文应该叫集成电路总线,它是一种串行通信总线,使用多主从架构。 IIC 多设备连接图:
SPI
SPI是串行外设接口(Serial Peripheral Interface)的缩写,是一种高速的,全双工,同步的通信总线,并且在芯片的管脚上只占用四根线,节约了芯片的管脚,同时为PCB的布局上节省空间,提供方便, SPI多从设备连接图:
|