内部通信UART、I2C、SPI
目录
?全双工异步通信,有两根线发送与接收。
UART串口通信需要两个信号线来实现,一根用于串口发送,另外一根负责串口接收。
一开始高电平,然后拉低表示开始位,接着8个数据位,然后校验位,最后拉高表示停止位,并且进入空闲状态,等待下一次的数据传输。
起始位:先发出逻辑0的信号,表示传输开始。
数据位:支持 4、5、6、7、8 位等,完成约定后才能正确地传输。
检验位 目前简单常用的数据校验方式是奇偶校验??? 协议就变成了:开始+数据+停止。
停止位:一个字符结束标志。
设波特率为 9600位/秒,数据位为 8 位,无校验位。波特率表示它表示每秒传输二进制数据的位数
由于波特率为 9600,时钟50Mhz. 因此我需要的计数为:50000000/9600≈5208。每位占用时间1s/9600=104166ns。
半双工通信
?IIC总线分别由SDA(串行数据线)和SCL(串行时钟线)及上拉电阻组成。
在总线空闲时SCL和SDA由上拉电阻拉高保持高电平状态。
IIC总线的传输速率在标准模式下可达100kbit/s;快速模式下可达400kbit/s;高速模式下可达3.4Mbit/s
起始与终止信号:SCL为高期间,
? ? ? ? ? ? ?SDA : 由高到低,起始信号
? ? ? ? ? ? ?SDA:由低到高,终止信号
ACK(从机应答):拉低代表收到数据
高速、全双工、同步通信总线 。由一个主模块和一个或多个从模块组成。
MISO(主设备数据输入)、MOSI(主设备数据输出)、SCLK(时钟)和CS/SS(片选)
SPI的时钟极性和时钟相位特性可以设置4种不同的SPI通信操作模式
主设备发起信号,将CS/SS拉低,启动通信。
主设备通过发送时钟信号,来告诉从设备进行写数据或者读数据操作(采集时机可能是时钟信号的上升沿(从低到高)或下降沿(从高到低),因为SPI有四种模式,后面会讲到),它将立即读取数据线上的信号,这样就得到了一位数据(1bit)。
两个移位寄存器中的内容就被交换。
CPOL:时钟极性, 表示 SPI 在空闲时, 时钟信号是高电平还是低电平。
CPHA:时钟相位, 表示 SPI 设备是在 SCK 管脚上的时钟信号变为上升沿时触发数据采样, 还是在时钟信号变为下降沿时触发数据采样。
CPOL= 0,CPHA=0。SCK串行时钟线空闲是为低电平,数据在SCK时钟的上升沿被采样,数据采样是在上升沿,数据发送是在下降沿。