Toriyung

导航

SPI(硬件)---OLED&SSD1306的使用

先说结论:proteus貌似不是很支持硬件I2C和硬件SPI。。两次试验都没成功

但基本的原理还是记录一下

 

工具

  软件:Keil、CUBEMX、Proteus 

  硬件:单片机---STM32F103C6T6A、OLED+SSD1306---UG-2864HSWEG01   

 

原理图

 

 

 查询SSD1306芯片知4线SPI的D7~D3接低电平,D2悬空,D1为数据输入,D0为系统时钟;E,R/W接低电平,CS接片选引脚,D/C接命令/数据选择引脚,RES接复位,如图

 

 

 

SPI通讯协议
SPI有四根线,分别为MISO,MOSI,SCK,NSS,当需要对芯片进行命令/数据选择时(如本文中使用的SSD1306),需要多使用一根输出用GPIO引脚进行DC选择

SPI通讯过程如下,NSS拉底电平为开始信号,数据的有效性与时钟对应关系由CPOL和CPHA的选择分为4种情况,CPOL表示空闲时电平的高低,CPHA表示触发边沿是在第一个边沿还是第二个边沿

 

 

本次实验由于多了一个DC引脚,所以实际上的通讯顺序应该是:DC引脚电平变化→NSS拉低电平→传输数据→NSS拉高电平→DC引脚电平变化(这一步可有可没有)

 

 

 

主要代码

初始化完成后,SPI通讯的主要语句就是

HAL_SPI_Transmit(SPI_HandleTypeDef *hspi, uint8_t *pData, uint16_t Size, uint32_t Timeout);

 

后续

本次使用proteus仿真失败,等后续使用实物板子进行实验

posted on 2022-10-08 12:45  Toriyung  阅读(1193)  评论(0编辑  收藏  举报