SPI:
1、SPI——串行外围接口——4线同步串行通讯接口
2、方便连接各种外设/芯片
3、信号定义:
1、MOSI:主出从入,主设备发送到从设备的信号
2、MISO:主入从出,从设备发送到主设备的信号
3、SCK:由主设备控制产生的SPII工作时钟,每个SCK周期完成一个bit的传输
4、SS:从设备选择端,当从设备收到该端为低电平时,设备有效;对于主设备,该端平时为高电平,可以用于在有效传输周期内给出低电平选通
SPI的特点:
1、串行的
2、同步的
3、全双工的
4、主从模式的
5、点对点或总线的
6、灵活的时钟极性/相位格式
7、可变帧大小从4位到16位
SPI信号——SCK极性与相位:
1、通讯由片选信号的下降沿发起,然后时钟信号的奇数沿总是用来通知主机和从机去采集数据信号数据的值,时钟信号的偶数沿总是用来驱动我们的主机和从机去改变数据线上的值切换到下一个bit
2、通讯由时钟信号第一个沿发起,SS为低电平,奇数沿改变数据线上的值,偶数沿采集数据信号
主模式——Master mode:
1、控制整个传输过程:
1、通过SS信号选择对应的通信从节点
2、决定SCK波特率,相位,极性
3、产生SCK时钟信号
4、驱动MOSI信号
5、采样MISO信号
2、CPU通过向SPIx_D写入数据来启动一次传输过程
从模式——Slave mode:响应主节点的信号:
1、当SS信号被选通时才激活
2、根据预先约定的相位/极性来检测SCK信号
3、驱动MISO信号
4、采样MOSI信号
步骤:
1、把SPI模块对应的时钟打开
2、把引脚指定给SPI模块使用
3、设置SPIx寄存器以接收/传输
SPIx_D:
1、发送和接收都是双缓冲结构
2、移位缓冲寄存器用于数据收发,CPU不能读写
3、数据寄存器能被CPU访问
4、发送时,数据自动从数据寄存器转移到移位寄存器
5、接收时,数据自动从移位寄存器转移到数据寄存器
6、发送和接收的数据寄存器使用相同的寄存器地址
7、读写该寄存器地址具有不同的含义
SPIx_C1
SPIx_C2
SPIx_BR
SPIx_S
I2C:
1、I2C——Inter-IC Bus:一种双向2线制同步串行通讯接口
2、顾名思义,简单、方便地连接各种外设/芯片:一种双向2线制串行总线
I2C的基本特征:
1、串行
2、同步
3、单端
4、双向(但非双工)
5、主从
6、总线
I2C电气特征:
1、两根信号线(还有共地):
1、SDA串行数据线
2、SCL串行时钟线
2、SDA和SCL引脚是特殊的,可线与:
1、漏极开路
2、漏电极开路
3、所有的SDA引脚,所有的SCL引脚,是逻辑“与”的关系
4、SDA和SCL都接了上拉电阻
5、总线空闲时,都是高电平(不耗电流)
6、兼容性好,可以是5V,也可以是3.3V
I2C的优点:
1、只需要2根信号线(节约面积、引脚、成本)
2、协议简单
3、协议容易实现(硬件模块、开漏引脚、GPIO)
4、支持的器件多,功能丰富
5、总线可以同时挂载多个器件
6、总线电气兼容性好
7、速率较高
8、距离较远
I2C的电平逻辑:
1、I2C是电平有效的,与SPI不一样(边沿有效)
2、信号定义:数据线SDA的电平,在时钟线SCL为低电平时,发生变化;数据线SDA的电平,在时钟线SCL为高电平时,保持稳定不变;SDA仅在特殊情况下(I2C总线开始或结束时),在SCL为高时变化
3、起始位:当SCL处于高电平时,SDA从高电平向低电平跳变,产生“起始”位。总线在起始条件产生后便处于忙的状态。可将“起始”位简记为S
4、停止位:当SCL处于高电平时,SDA从低电平向高电平跳变,产生“停止”位。总线在停止条件产生后处于空闲状态,可将“停止”位简记为P
I2C的通讯数据帧:
1、SA:从机地址:
1、I2C总线可以连接多个从机设备,但是无需额外的片选信号引脚
2、接在一起的多个的多个器件设备,使用地址进行区分
3、主机不需要地址,每个从机器件都必须有个地址
4、从机地址不能重复,地址为7bits
2、D:数据:8bits一个字节数据,MSB在先,LSB在后
3、A/A:应答(ACK)和无应答(NACK):
1、每传输一个字节,都需要数据的接收方给出一个应答
2、若应答位由从机给出,则从机短暂控制接管SDA,主机释放SDA线(但时钟SCL仍然由主机控制)
3、0表示应答ACK,1表示无应答NACK
4、遇到非应答NACK,应停止数据的发送
I2C高阶:重复起始和子地址:
1、Sr:重复起始:
1、I2C通讯中,有时需要切换数据收发的方向
2、例如I2C设备是个EEPROM存储器时,要读EEPROM,需要先写入地址(主→从),再读取数据(从→主)
3、此时无需给出停止位,然后再给开始位
4、而是直接再产生一次开始位,就可以了,称为“重复起始”位,记为Sr
2、子地址:
1、有一些I2C器件,除了器件自身的从机地址SA外,内部还有若干个单元可被访问,相应具有子地址
2、典型的例如上述的EEPROM存储器,本课实验用到的加速传感器
3、子地址可以是1字节~N字节,通讯时当做I2C的数据发送
步骤:
1、配置好时钟打开
2、把引脚配置给I2C模块使用
3、设置I2C寄存器以接收/传输
加速传感器所用的4个寄存器:
1、I2Cx_F
2、I2Cx_C1
3、I2Cx_S
4、I2Cx_D
I2C接口定义
网站声明:如果转载,请联系本站管理员。否则一切后果自行承担。
加入交流群
请使用微信扫一扫!