NRF52832之串行通信学习

时间:2024-05-23 19:03:35

一、SPI

1.SPI概述

NRF52832之串行通信学习

2.SPI数据通信

NRF52832之串行通信学习

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概述

NRF52832之串行通信学习

2、I2C数据传输

NRF52832之串行通信学习

数据传输流程

NRF52832之串行通信学习

三、UART

NRF52832之串行通信学习

四、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。