Lecture11-12
主要学习
➢ 总线基础
➢ UART协议
➢ I2C协议
➢ SPI协议
1.总线的基础 protocol 协议
总线只是一组导线的集合,在嵌入式板上的所有其他主要组件(包括I/O子系统、内存子系统和主处理器)之间传输各种数据信号、地址和控制信号(时钟信号、请求、确认、数据类型等)
有三条与处理器相关的内部总线:数据总线、地址总线和控制总线。这三者共同构成了“系统总线”
并行通信
当使用并行数据传输发送数据时,多个数据位(data bits)同时(at the same time)通过多个信道(channel)传输
串行通信
串行数据传输通过单个通道一个接一个(one after another)(按特定顺序(at special order))发送数据位
simultaneous同时的
二者作比较
哪种通信更适合总线系统 当然是串行通信
因为更少的花费 更少的连接 而且总线数据量不大
而并行通信使用在传输数据量大 对时间要求比较严格(time-sensitive)
比如 视频流
串行通信 两种分类:同步(synchronous)和异步(asynchronous)
同步传输:
▪ 数据位通过主时钟(master clock)在时间上以连续流的形式传输。
▪ 数据发射器(transmitter)和接收器(receiver)都使用同步时(synchronized clock)钟频率工作。
异步传输:
▪ 数据位可以在任何时间点发送。
▪ 需要停止位和开始位
idle:怠速发动机或其它机械装置的怠速状态
二者比较
USRT协议
Universal Asynchronous Reception and Transmission (UART)
Protocol for Asynchronous communication in BUS system
TX: Transmitter
RX: Receiver
One connection for data transmission
Frequently used in conjunction(结合) with the RS-232 standard
在没有时钟的情况下,RX如何正确理解数据?
Start bit — indicates the beginning of the data word ▪
Stop bit(s) — indicates the end of the data word
Data length — how many bits does TX transmit
Transmission speed (Baud rate波特率) — the bit rate of the serial port (bits/second)
发送
数据长度:8 bit 开始位(start bit)都是低的 终止位都是高的
传输速度(transmission speed)是保证接受数据正确的基础
否则就会
优势
✓ 操作简单,有很好的文档记录,因为它是一种广泛使用的方法,有很多在线资源
✓ 不需要时钟
✓ 允许错误检查的奇偶校验位
▪ 缺点:
✓ 不能用于多个主系统和从系统
✓ 每个UART的波特率必须在彼此的10%以内,以防止数据丢失。
✓ 低速
2.I2C协议
I2C是什么
内部集成电路(I2C)
▪ 总线系统中的同步通信协议
▪ 遵循主/从层次结构
▪ 一主多从
▪ 只有主机可以启动数据传输
▪ 广泛用于需要许多不同部件的项目
(例如传感器、引脚、扩展和驱动器)协同工作
▪ 标准数据传输速率为100kbits/s,而快速模式传输速率为400kbits/s。
Inter-integrated-circuit (I2C)
▪ Protocol for Synchronous communication in BUS system
▪ Follows a master/slave hierarchy
▪ One master, multiple slaves
▪ Only master can initiate a data transmission
▪ Widely used for projects that require many different parts
(e.g. sensors, pin, expansions and drivers) working together
▪ The standard data transfer rate is 100kbits/s while the Fast Mode transfer rate is 400kbits/s.
I2C结构
串行数据线(serial data line)(SDA):传输数据、地址和
控制信号
串行时钟线(serial clock line)(SCL):用于同步
数据长度是8位
启动条件:
✓ 始终发生在传输开始时,并由主设备启动
✓ 唤醒总线上的空闲从属设备
✓ SDA线路从高状态转换为低状态,而SCL为高状态
停止条件与之相反,但同样由主设备发出
地址字节:
✓ 从机地址以8位字节格式发送
✓ 上7位构成从机地址
✓ 第8位用作读/写命令位
✓ 0:写入从机;1:从从从机读取
Address Byte:
✓ A slave address is sent in 8-bit byte format
✓ the upper 7 bits, constitute the slave address
✓ the 8th bit serves as a READ/WRITE# command bit
✓ 0: write to a slave; 1: read from a slave
确认(acknowledge)和不确认位(Not acknowledge)(ACK/NACK)
✓ 在每个字节传输之后,接收设备发送一个ACK或NACK位。
✓ ACK用于表示字节(地址或数据)已成功发送和接收
✓ NACK表示某个地方发生了错误
✓ 由接收器产生的ACK,SDA低和SCL高
数据位
✓ 8位字节格式
✓ 从地址字节开始
✓ 每个字节必须在ACK/NACK之后
✓ SDA线上的数据在高时钟周期内必须保持稳定。
✓ 接收器仅在SCL高时读取数据位
✓ 仅当时钟信号低时,才允许更改数据线。
在时钟信号是高位时 数据信号是稳定的
SPI协议
▪ 串行外围接口(SPI)
▪ 总线系统中的同步通信协议
▪ 遵循主/从层次结构
▪ 一个主设备,一个/多个从设备
▪ 全双工,可同时发送和接收数据
▪ Serial Peripheral Interface (SPI)
▪ Protocol for Synchronous communication in BUS system
▪ Follows a master/slave hierarchy
▪ One master, one/multiple slaves
▪ Full-duplex, where data can be sent and received simultaneously
四种逻辑信号
SCLK: Serial Clock, set by Master 时钟信号
MOSI: master output, slave input 输入信号
MISO: master input, slave output 反馈信号
SS (or CS): slave select or chip
select (slaves are daisy-chained) daisy-chained 菊花链
第一步主机输出时钟信号
第二步主电源将SS/CS引脚切换至低电压状态,从而激活从电源:
第三步:主设备沿MOSI线路一次向从设备发送一位数据。从机在接收位时读取位
第四步如果需要响应,从机将沿MISO线一次向主机返回一位数据。主机在接收位时读取位
SPI中的两个时钟参数
✓ 时钟极性(clock polarity)(CPOL)-设置空闲状态下时钟信号的极性
✓ 时钟相位 (clock phase)(CPHA)-选择时钟相位
四种不同组合
Clock idle state 是0 数据在时钟从低到高转换时采样
Clock idle state是0 数据在时钟从高到低转换时采样
剩下的情况分别是从高到低和从低到高
优势
✓ 无启动和停止位,因此数据可以连续传输而不中断
✓ 没有像I2C这样复杂的从寻址系统
✓ 数据传输速率高于I2C(几乎是I2C的两倍)
✓ 分开的MISO和MOSI线路,因此可以同时发送和接收数据(全双工)
缺点
✓ 使用四根导线(I2C和UART使用两根导线)
✓ 未确认数据已成功接收(I2C有此功能)
✓ 没有像UART中的奇偶校验位那样的错误检查形式
✓ 仅允许单个主控形状