去年就尝试用STM32点亮墨水屏,但是没有成功,经过这一段时间的学习,决定拿出吃灰的墨水屏再次尝试。
一、硬件
- 开发板:正点原子的miniSTM32开发板;
- 墨水屏:2.13寸的三色墨水屏,分辨率为250×122,驱动芯片是SSD1680,24PIN的PFC接口,通过转接板、杜邦线与开发板连接,SPI串口通讯;
二、软件设计
- 工程搭建:
(1)打开STM32CubeMX,选择芯片,新建工程,配置时钟系统。
(2)GPIO 配置:PA1→RST;PA2→DC;PA3→BUSY;PA4→SPI_CS;PA6→PWR;
其中,PA3(BUSY)引脚为输入模式,其他都是输出推挽模式。
(3)SPI配置:
开发板有三组SPI,每组SPI包括四个引脚:MISO,Master In/Slave Out,主设备数据输入,从设备数据输出;MOSI,Master Out/Slave In,主设备数据输出,从设备数据输入;SCLK,Serial Clock,时钟信号;CS,Chip Select,从设备片选信号。这里从设备(墨水屏)没有数据输出,主设备(STM32)也就没有数据输入,所以SPI模式选择“Transmit Only Master”,不需要MISO引脚。SPI1_SCK默认的引脚是PA5,SPI1_MOSI默认的引脚是PA7。
关于NSS(也就是CS,片选信号),如果选择硬件NSS,默认的引脚是PA4,这样传输速度更快,CPU功耗更低;不用控制CS引脚的电平高低,编程更简单。这里选择的是软件控制CS引脚,可能更灵活些,而且不用修改例程。
SPI的时间参数包括时钟极性(Clock Polarity,CPOL)和时钟相位(Clock Phase, CPHA),共四种模式,这里选择模式0,即低电平、上升沿、奇数边沿。
(4)生成工程源码:
注意,这里需要修改堆的大小,作为图像的动态缓存。2.13的屏一幅图像大概需要4000字节,三色屏需要传两幅图像(黑-白,红-白)所以这里设置成0X2000(8192字节)。其他屏可根据图像的实际大小调整。
2. 代码编写:
实在是懒得(bu hui)写,直接把微雪的例程搬过来,选择的是EPD_2IN13B_V4,编译通过,下载成功,终于点亮了这块墨水屏。
三、实验现象:
全部评论