打印
[STM32H5]

【NUCLEO- H563ZI 测评】 SPI驱动墨水 一、翻车了

[复制链接]
956|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
dvacos|  楼主 | 2023-8-12 16:59 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
#申请原创# SPI驱动墨水屏翻车!
在能接收串口数据后,就能开始调试代码了(虽然仿真,打断点也可以用,但是私以为不好用)下面打算使用SPI驱动墨水屏幕,做一个小项目。
项目简介
我想用墨水屏作一个电子的“备忘录”,因为墨水屏只有刷新才会消耗电源,一块电池就可以使用很久(因为我想要有一星期的备忘录,所以会有一个简单的“日历”,需要交互,所以要电池)。前期打算就用按键、编码器进行交互,后续想要改成类似Kindle的做法,在屏幕的上方加一个边框加上红外,来识别点击区域和手势!

一排排横纵交替的红外发射和接收,形成简单的阵列,手指放在哪个区域,对应区域的红外就回被拉高或拉低,这样就可以获得粗略的点击区域用于交互了。
PS:以上的做法只能得到粗略的坐标,不能识别到很精确的坐标,但是能用。而且市面上没有(就我看到的)在墨水屏上压合TP的,是不是压合TP会影响墨水屏??
后续还想制作一个电脑上位机,通过usb直接给开发板发送数据,直接把想要显示的数据传递给开发板。
什么是墨水屏
墨水屏的显示材料是电子墨水,这些电子墨水呈胶囊结构,不同颜色的墨水附着在正、负电荷上,通电后,通过正负电压使带着不同颜色墨水的电荷相互吸引或排斥,改变电荷的排列,显示出文字和图片。
电子墨水是由**一颗颗微小的胶囊组成**,胶囊的大小约等同于人类头发的直径。每颗胶囊里装有黑白混合的多个液体粒子,**白色粒子带负电荷,黑色粒子带正电荷。**根据同性相斥、异性相吸的原理,只要在胶囊的两侧按需加上正负电荷,就能使黑白粒子按照一定的规则游动,从而显示白或者黑,组成各种文字和图案。
由于这些极其微小的胶囊粒子在电荷的影响下,如同液态般运作,所以被形象地称为电子“墨水”。
每个胶囊中含有很多粒子,如果再**混合加入青色(C)、洋红(M)、黄色(Y)等颜色的粒子**,就可以实现全色域的显示效果,也就是**彩色墨水屏**。
但是由于混入了不同颜色的墨水,彩色的墨水回存在白色 与 黑色的中间 或者 在白色 与 黑色的底部,所以会导致墨水屏白的不纯粹。

现在的墨水屏正在快速的发展,已经有快速刷新的彩色墨水屏了。
为什么用墨水屏
优点
1、零蓝光护眼;
2、阅读舒适:接近纸张印刷的显示效果;
3、省电节能、超低耗电
优点解释
1、墨水屏则是将周围的光(比如灯光或自然光)照到屏幕上,再反射进人的眼睛中,对人眼的刺激较小。所以大部分墨水屏会有 背光灯 功能。周围光线强的时候,你可以关掉背光灯;周围光线很暗的时候,你可以打开 背光灯 ,调到合适的亮度就能看见。
2、使用过墨水屏的人都知道,墨水屏幕和纸非常相似,长时间阅读眼睛不会像其他屏幕一样难受
3、墨水屏只有在刷新时才会消耗电力,而一旦刷新完成并保持显示状态,就不再消耗电力。维持显示状态不需要电力的原因是,刷新过程中墨水已经被控制到指定位置并形成了所需的图案,此后不再需要移动墨水,因此不再消耗电源。
缺点
1、高成本
2、刷新慢
3、寿命问题
初始化SPI
SPI硬件确认
通过查阅um3115-stm32h5-nucleo144这个文件可以看见,得知SPI的引脚

从上图可知先找到CN7排针,再找到D22-D25引脚,就是4线SPI的引脚了。

SPI引脚位置再开发板上的位置如图。

D22-D25对应的STM32的引脚具体引脚定义。
D22->PB5  -> SPI1_MOSI
D23->PB3  -> SPI1_MISO
D24->PG10-> SPI1_NSS
D25->PB4  -> SPI1_SCK
SPI1_NSS类似于片选CS信号,但是有所不同,所以我就随便选择了一个IO作为CS
Cubemx 配置


选择全双工的主机,并且配置位8bits 的数据位后,其余默认即可。
实验
生成工程后,CubeMX只是初始化了SPI1但是没有用于发送数据,所以我们需要添加一些代码由于测试是否测功初始化

如图,我在While 中不断的发送0XCF 0X66,接下来就接逻辑分析仪,确认数据是否正确!

直接调用SPI发送的数据如上图,虽然有数据但是和我写的不对啊,有很多数据不是我们填写的。
这时候要注意我们可以观察到CS脚一直保持着低电平,并且结合上文,我们没有使用NSS引脚,所以我们吧CS加上。

如图我们在发送数据前拉低CS ,发送完成后就拉高CS

可以看见我们发送的数据就和我们程序所写的一致了。
可能有人会问,为什么一定要接CS?
据我查到的文章,逻辑分析仪需要用CS来做一些判断。
PS:使用逻辑分析仪是要注意采样的速率,太低的速率会影响数据的正确性。CPOL 和 CPHA的配置不同同样也会导致数据不同。
SPI配置完成了。
初始化墨水屏
结合上文,我们明白控制墨水屏实际上就是控制电子墨水的上下移动,但是SPI没办法直接控制墨水的移动,所以墨水和SPI发送的数据直接有一个人,翻译并且指挥着墨水的移动,就是墨水屏幕的驱动IC,我们把图片、文字转化为驱动IC能看懂的代码,就可以控制屏幕了。和其他的屏幕一样第一步就是初始化屏幕了,下问就是相关的方法了。

我买的墨水屏,SES 2.6寸

结合规格书,可知这是一块分辨率为296X152 的 SPI接口三色墨水屏。

推荐电路

控制引脚相关定义
之前我只配置了SPI通讯的引脚,驱动墨水屏还需要其他引脚的配合。如下:
BS1 : 总线接口选择引脚  ,选择3/4线SPI
BUSY : 繁忙状态输出引脚  
RES# : 复位信号输入脚, 低电平有效  
D/C# : 数据/命令控制引脚  
确认好引脚后确认初始化相关的参数,经查这块屏幕可以使用微雪2.13bc的初始化参数
    EPD_2IN13BC_Reset();
    EPD_2IN13BC_SendCommand(0x06); // BOOSTER_SOFT_START
    EPD_2IN13BC_SendData(0x17);
    EPD_2IN13BC_SendData(0x17);
    EPD_2IN13BC_SendData(0x17);
    EPD_2IN13BC_SendCommand(0x04); // POWER_ON
    EPD_2IN13BC_ReadBusy();
    EPD_2IN13BC_SendCommand(0x00); // PANEL_SETTING
    EPD_2IN13BC_SendData(0x8F);
    EPD_2IN13BC_SendCommand(0x50); // VCOM_AND_DATA_INTERVAL_SETTING
    EPD_2IN13BC_SendData(0xF0);
    EPD_2IN13BC_SendCommand(0x61); // RESOLUTION_SETTING
    EPD_2IN13BC_SendData(EPD_2IN13BC_WIDTH); // width: 104
    EPD_2IN13BC_SendData(EPD_2IN13BC_HEIGHT >> 8); // height: 212
EPD_2IN13BC_SendData(EPD_2IN13BC_HEIGHT & 0xFF);
所以我们可以愉快的接线测试了!!
硬件
由于最近没空花板子,所以在立创开源随便找了一驱动板

可以看见FPC座子都是反过焊接的!应为ses的墨水屏和通用的不一致,1脚对应着别人的24脚。
(这几个座子焊了我2个小时。当时手上只有无铅的焊锡,痛苦)
现在我把数据全部正确的发送了,但是屏幕没有任何反应,我怀疑是驱动板的问题,但是这是别人测试过的,物料也一一确认过、测量过。
本次的分享就到这里了,后续我会持续分享的!我不会放弃的!

使用特权

评论回复
沙发
MessageRing| | 2023-8-12 23:34 | 只看该作者
这个我记得有老哥提供驱动的

使用特权

评论回复
板凳
小十一| | 2023-8-14 09:07 | 只看该作者
1脚对应24脚,你有没有想过FPC座子分上接 下接 上下接

使用特权

评论回复
地板
dvacos|  楼主 | 2023-8-14 09:48 | 只看该作者
现在已经换上了

使用特权

评论回复
5
Undshing| | 2023-8-14 23:37 | 只看该作者
墨水屏时间长了不是会擦除不了吗?

使用特权

评论回复
6
dvacos|  楼主 | 2023-8-15 11:30 | 只看该作者
Undshing 发表于 2023-8-14 23:37
墨水屏时间长了不是会擦除不了吗?

长时间不刷新会有残留的现象

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

23

主题

112

帖子

2

粉丝