SPI及IIC
通信方式
通信双方之间的工作方式或信号传输方式。
终端与其他设备通过数据传输进行通信,根据数据的传输方式,有串行通信和并行通信。
串行通信
又称为点对点通信。
对于点对点之间的通信,根据数据的同步方式,又分为异步传送和同步传送两种方式。
根据数据的传输方向与时间关系,又可分为单工通信、半双工通信及全双工通信三种方式。
通信接口
接口指的是输入输出的硬件接口,实现通信的接口就是通信接口。
实现串行通信的接口就是串行接口,即串口。
实现并行通信的接口就是并行接口,即并口。
通信总线
一组传输通道,是各种逻辑器件构成的传输数据的通道,一般由数据线、地址线、控制线等构成。
-
总线的分类
- 按功能分,总线可分为 内部总线、系统总线和I/O总线。
- 按时序控制方式分,总线可分为 同步总线和异步总线。
- 按传送的数据格式分,总线可分为 串行总线和并行总线。
接口和总线都有相互连接的含义,但前者强调的是两个部件之间的连接,而后者更注重于多个部件的互连;前者强调信号和数据形式的转换,后者更注重可扩展性、灵活性、规范化,许多总线都有相应的规范和标准。接口与总线有时也不加区分,合称为总线接口或接口总线等。
通信协议
传输数据的规则。
接口:规定硬件接口和电平标准。
总线:规定信号线、功能以及工作工程。
协议:规定接口、总线、和传输规则。
SPI
Serial Peripheral interface,串行外围设备接口。一种高速的,全双工,同步的通信总线。
原理和使用简单,占用引脚资源少, 是一种常用的通信方式。
信号线
SPI 共包含 4 条总线。
SS(Slave Select):片选信号线,当有多个SPI 设备与 MCU 相连时,每个设备的这个片选信号线是与 MCU 单独的引脚相连的,而其他的 SCK、MOSI、MISO 线则为多个设备并联到相同的 SPI 总线上,低电平有效。
SCK (Serial Clock):时钟信号线,由主通信设备产生,不同的设备支持的时钟频率不一样,如 STM32 的 SPI 时钟频率最大为 f PCLK /2。
MOSI (Master Output Slave Input):主设备输出 / 从设备输入引脚。主机的数据从这条信号线输出,从机由这条信号线读入数据,即这条线上数据的方向为主机到从机。
MISO(Master Input Slave Output):主设备输入 / 从设备输出引脚。主机从这条信号线读入数据,从机的数据则由这条信号线输出,即在这条线上数据的方向为从机到主机。
配置方法
- 时钟使能。
GPIO时钟使能及SPI时钟使能设置。 - 配置GPIO工作模式。
配置GPIO,自定义引脚,推挽输出,上拉;
配置SPI引脚SCK、MOSI、MISO所用到的引脚为复用功能。 - SPI设置工作模式。
配置工作模式为全双工,主机模式,SCK闲时电平为高,第二个时钟沿采样数据,内部从机选择软件管理模式。设置SPI的时钟频率,设置数据格式,内部从机选择设置为主机。 - 使能SPI,启动传输。
STM32CubeMX配置SPI
IIC
Inter-Integrated Circuit,一种两线式串行总线,用于连接微控制器及其外围设备。
多用于主控制器和从器件间的主从通信,在小数据量场合使用,传输距离短,任意时刻只能有一个主机等特性。
IIC有两个信号线,一条是双向的数据线SDA,一条是串行时钟线SCL。
配置方法
- 引脚配置
SCL、SDA可以配置成推挽输出、开漏输出。
SCL、SDA也可以配置成开漏输出、开漏输出(开漏输出为防止多个器件存在短路)。
注意:必须器件内部自带上拉电阻,或者外界接上拉电阻,或者软件设置上拉电阻。
SCL、SDA也可以配置成推挽输出、推挽输出与浮空输入。 - 开漏输出和线与
- 硬件IIC
会自动配置为开漏输出。 - 软件IIC
推挽输出:输出0,N-MOS激活。 输出1,P-MOS激活
开漏输出(不带上拉电阻):输出0,N-MOS激活。输出1,P-MOS不会激活,不会输出高电平。
开漏输出(带上拉电阻):输出0,N-MOS激活。输出1,P-MOS激活
简言之,开漏输出必须有上拉电阻才能输出高电平。
STM32CubeMX配置IIC
SPI驱动OLED屏幕
- 移植OLED文件
- 修改引脚
- 修改main函数
IIC驱动mpu6050
- 移植mpu6050_DMP文件
- 修改引脚
- 修改main函数