一、SPI
1.SPI概述
2.SPI数据通信
Controller:指SPI中的控制寄存器,通过此来配置SPI总线传输模式;
SSPBUF:指SPI内部缓冲区,以FIFO形式存在,保存传输过程中的临时数据;
SSPSR:指SPI中的移位寄存器,根据设计好的bit-width将数据移入或移出SSPBUF
传输数据:主机先将数据移入SSPBUF,SSPBUF中的数据自动按照顺序移入SSPSR中,通过MOSI传给从机,从机通过MISO接收数据至SSPSR,自动按照顺序移入SSPBUF。发送一位后会收到一位,先发高/低位可选。
由于SPI是双缓冲形式的,因此一位数据在传入SSPSR/SSPBUF后,下一位数据可以立刻移入SSPBUF/SSPSR。
二、I2C
1、I2C概述
2、I2C数据传输
数据传输流程
三、UART
四、SPI、I2C、UART比较
三者共同点:都是串行通信,数据按一位传输
三者不同点:SPI和I2C是同步传输,必须同时收发,始终校准数据;会占用CPU时间,实现复杂通信时,CPU运算速度受限于数 据总线;
UART为异步传输,用稳定的波特率校准数据,更灵活;用DMA几乎不占用CPU时间。
SPI、I2C不同点:
1.传输方式:SPI为全双工,I2C为半双工;
2.从设备选择方式:SPI用片选,多一个从机就多一条线,I2C用地址,不会占用额外的线;
3.数据准确性:I2C较高,因为有ACK,而SPI没有;
4.传输速率:SPI较高,手册中给出最高8Mbps,I2C最高400kbps。