OLED的波形曲线、进度条、图片显示(STM32 HAL库 模拟SPI通信 5线OLED屏幕)详细篇 (2)

OLED的波形曲线、进度条、图片显示(STM32 HAL库 模拟SPI通信 5线OLED屏幕)详细篇

考虑到已经使用的IO和硬件上的布局,最好是将一个模块的相关线放在一起,所以选择如下接线方式:

D0   ---->  B5

D1   ---->  B6

RST  ---->  B7

DC   ---->  B8

CS   ---->  B9

(三)  CubeMX GPIO配置

OLED的波形曲线、进度条、图片显示(STM32 HAL库 模拟SPI通信 5线OLED屏幕)详细篇

所使用的IO

OLED的波形曲线、进度条、图片显示(STM32 HAL库 模拟SPI通信 5线OLED屏幕)详细篇

(四) 整体配置图

OLED的波形曲线、进度条、图片显示(STM32 HAL库 模拟SPI通信 5线OLED屏幕)详细篇

五、 编程(程序部分) (一)    分析原理

有IIC通信方式为什么要有SPI,我看可以简单对比一下:

 

IIC通信方式:两条数据线,通信数据较慢

SPI通信方式:四条数据线,通信数据脚快

 

这就看项目需要,如果需要刷屏速度的话当然选用SPI方式优秀

OLED的波形曲线、进度条、图片显示(STM32 HAL库 模拟SPI通信 5线OLED屏幕)详细篇

在此之前要知道,OLED SPI通信中不需要单片机读取OLED模块的任何数据,所以单片机按照一定的规则向SPI线上写数据就可以了。在通信中单片机充当SPI的主机,OLED模块为SPI的从机。因为主机不需要接收从机数据,所以标准的四线SPI中MISO线就没必要存在了。通信使用的是标准的三线SPI,即CS、CLK、MOSI。

 

根据这个时序图就可以了解如何变成,在CS为低电平时就是芯片通信启动;D/C是数据或者命令的选择,也就是主机拉高拉低可以控制写的数据是指令还是数据;SCLK(D0)是时钟引脚,MOSI (D1 SDIN)为数据已经。当SCLK上升沿的瞬间,从机将会读取MOSI上的电平。发送一个字节时,是高位在前低位在后的。

所以发送一个字节大的函数,这实现了单向的数据传输SPI

实现步骤:

l  先保证时钟线默认为低电平

l  循环发送8位数据,发送最高位数据:

|  设置时钟线为低电平

|   判断发送的数据是1还是0,1则发送高电平,0则低低电平

|   设置时钟线为高电平(此时有上升沿)

l  数据左移一位,让次高位在最高位上

l  循环发送8位数据,发送次高位数据:

|   设置时钟线为低电平

|   判断发送的数据是1还是0,1则发送高电平,0则低低电平

|   设置时钟线为高电平(此时有上升沿)

l  数据左移一位,……

l  ……

l  保证时钟线最终为高电平

代码,需要交流可加本人微信,见文章结尾

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wpwgxw.html