【ESP32-C3-DevKitM-1】硬件SPI+0.96寸OLED
[复制链接]
3、硬件SPI的评测
首先,ESP32-C3 SoC有以下三种型号
后两种是SoC芯片层面叠封4MB SPI Flash所得,同时在ESP32-C3模组上也分为两种,ESP32C3MINI1(U)和ESP32-C3-WROOM-02(U),其中ESP32C3MINI1(U)用的SoC是ESP32-C3FN4和ESP32-C3FH4,ESP32-C3-WROOM-02(U)用的是ESP32-C3,所以它需要在模组层面外挂4MB SPI Flash,当然了,这两款模组都是用QSPI与Flash连接,所以如下图,这六个SPI接口是不对外的,因为一般都要接flash,这六个接口是属于SPI0/1,它们共用一套硬件接口,其中SPI0的CS脚为SPICS0,SPI1的CS脚为任意脚。
SPI2为通用SPI,有6条CS线,最多支持1组主机(Master)/从机设备和5组从机设备(Slave),同时相关引脚都可以任意映射,见下图,当然了,默认是下图展示的引脚分布。
接下来我将使用硬件SPI来去驱动0.96寸OLED。
1、初始化SPI
第一步是初始化SPI总线,就是配置具体的信号脚分布,不使用的设置为-1,然后调用spi_bus_initialize
第二步是将设备加入SPI总线,主要就是设置频率,模式(CPOL和CPHA)和CS脚的分布,其他的参数和细节可以参考编程指南,最后调用spi_bus_add_device就可以了
2、编写写入数据函数
因为OLED是显示模块,为从设备,同时并不需要向控制器发送数据,所以控制器只需要向OLED写数据就行了,首先在结构体中编写好各种参数,比如脉冲的长度length等,当然了,其他参数我没用到,需要的话可以参考编程指南,最后调用spi_device_polling_transmit就可以了。
3、编写OLED相关函数
关于0.96寸的OLED的驱动程序网上资料很多,我这里就不细讲了,这里要设置DC脚和RST脚,写命令时要拉低DC脚,写数据时要拉高DC脚,同时在OLED的初始化中要进行初始化GPIO设置,关于GPIO的配置比较简单,直接看例程和API指南就行,部分具体配置见下图
最后在主程序调用如下函数
最后实际效果如下
|