Q:为什么有的设备适用SPI,有的适用IIC?
I:发出一个数据就会收到一个数
因为用的是同一个寄存器,所以当发出数据时,会在时钟的驱使下读入数据,放入RX buffer
在发送数据的同时就会接收到数据:MISO 信号线上的数据被一位一位地移入“shift register”,
然后被放入“Rx Buffer”并且 RXNE 标记位被置一。
通过状态寄存器可以得知是否发送完毕、是否可以读了
数据从寄存器发送完毕的状态:通过接收非空RXNE来间接判断(先发送在接收)
TXE/RXNE:描述发送接收buffer的状态
1、SPI接口的应用
SPI(Serial Peripheral Interface),SPI 接口主要应用在 EEPROM、FLASH、实时时钟、网络控制器、OLED 显示驱动器、AD转换器,数字信号处理器、数字信号解码器等设备之间。
2、SPI和IIC对比
3、SPI一主多从示意图
公用:DO/DI/SCLK
片选引脚可以避免数据传输中的干扰
4、SPI设备的访问
1、先使能片选引脚
2、在片选引脚有效的期间在进行数据的收发
传输一个字节,由高到低示意图如下:
5、传输模式
SPI 有四种传输模式,如下表所示,主要差别在于 CPOL 和 CPHA 的不同。
⚫ CPOL(Clock Polarity,时钟极性)表示 SCK 在空闲时为高电平还是低电平。当
CPOL=0,SCK 空闲时为低电平,当 CPOL=1,SCK 空闲时为高电平。
⚫ CPHA(Clock Phase,时钟相位)表示 SCK 在第几个时钟边缘采样数据。当 CPHA=0,
在 SCK 第一个边沿采样数据,当 CPHA=1,在 SCK 第二个边沿采样数据
6、SPI控制器驱动
芯片通过SPI控制器实现对SPI设备的操作
1、初始化
模式、时钟频率、8位还是16位:CPOL/CPHA、BR0~2、DFF
2、数据读写
因为用的是同一个寄存器,所以当发出数据时,会在时钟的驱使下读入数据,放入RX buffer
通过状态寄存器可以得知是否发送完毕、是否可以读了
数据从寄存器发送完毕的状态:通过接收非空RXNE来间接判断(先发送在接收)
TXE/RXNE:描述发送接收buffer的状态