STM32 SPI with 0.96 OLED
SPI协议
基本介绍
SPI有主、从两种模式,通常由一个主模块和一个或多个从模块组成(SPI不支持多主机),主模块选择一个从模块进行同步通信,从而完成数据的交换。提供时钟的为主设备(Master),接收时钟的设备为从设备(Slave),SPI接口的读写操作,都是由主设备发起,当存在多个从设备时,通过各自的片选信号进行管理。
引脚定义
- MISO( Master Input Slave Output):主设备数据输入,从设备数据输出;
- MOSI(Master Output Slave Input):主设备数据输出,从设备数据输入;
- SCLK(Serial Clock):时钟信号,由主设备产生;
- CS/SS(Chip Select/Slave Select):从设备使能信号,由主设备控制,一主多从时,CS/SS是从芯片是否被主芯片选中的控制信号,只有片选信号为预先规定的使能信号时(高电位或低电位),主芯片对此从芯片的操作才有效。
通信原理
SPI主设备和从设备都有一个串行移位寄存器,一次传输为8位。
通信流程
- 主设备发起信号,将CS/SS拉低,启动通信。
- 主设备通过发送时钟信号,来告诉从设备进行写数据或者读数据操作(采集时机可能是时钟信号的上升沿(从低到高)或下降沿(从高到低)),它将立即读取数据线上的信号,这样就得到了一位数据(1bit)。
- 主机(Master)将要发送的数据写到发送数据缓存区(Menory),缓存区经过移位寄存器(缓存长度不一定,看单片机配置),串行移位寄存器通过MOSI信号线将字节一位一位的移出去传送给从机,同时MISO接口接收到的数据经过移位寄存器一位一位的移到接收缓存区。
- 从机(Slave)也将自己的串行移位寄存器(缓存长度不一定,看单片机配置)中的内容通过MISO信号线返回给主机。同时通过MOSI信号线接收主机发送的数据,这样,两个移位寄存器中的内容就被交换。
STM32实现(使用0.96Oled)
0.96Oled引脚介绍
- GND <—> 电源地
- VCC <—> 电源正(3~5.5V)
- D0(SCL) <—> SCK管脚
- D1(SDA) <—> MOSI管脚
- RES(RST) <—>用来复位(低电平复位)
- DC(D/C) <—> 数据和命令控制管脚 1表示数据 0表示命令
- CS(NSS) <—> 片选管脚
All articles in this blog are licensed under CC BY-NC-SA 4.0 unless stating additionally.
Comment