毕业设计--2020-02-01 奇耘4.2寸墨水屏 程序设计中的一些反思

毕业设计中的墨水屏的方案是使用的奇耘4.2 寸的墨水屏, 在当时的硬件设计时我将 墨水屏和 OLED 12864 设计在了一条总线上,以为他们同样都是 SPI 总线就可以比较方便的进行控制。 在程序的设计上 我设计了 SPI  +DMA 结合的方案来进行屏幕的刷新。(这里我的 OLED 的刷新方案是适用的一次刷新一整个屏幕的方案  ,直接在单片机 (STM32F407)内部新建了一个数组将所有的数据保存在内存中、墨水屏中也是一样)

毕业设计--2020-02-01 奇耘4.2寸墨水屏 程序设计中的一些反思_第1张图片

但是在后来的测试中我发现了一些的问题,问题的具体的现象就是  我的墨水屏在 OLED 刷新的时候 回产生错误,经过我的排查错误的原因是  两个硬件设备对时钟信号空闲电平要求的不同。

墨水屏要求SPI时钟信号在 空闲状态下是低电平    OLED 要求SPI时钟信号在默认状态下是高电平

毕业设计--2020-02-01 奇耘4.2寸墨水屏 程序设计中的一些反思_第2张图片毕业设计--2020-02-01 奇耘4.2寸墨水屏 程序设计中的一些反思_第3张图片

这是官方手册里面的时序图  硬件设计的时候没有考虑到这回事,结果到了程序设计的时候就得费事了、、、、

我的解决方案是 更换 IO的状态  就是在不同的硬件使用的时候将IO的硬件状态修改(这里墨水屏部分还是采用的 模拟IO 的形式,暂时还没换成硬件SPI)

因为 OLED刷新比较简单  时间较短 所以我把设置相关的函数留在 OLED那边毕业设计--2020-02-01 奇耘4.2寸墨水屏 程序设计中的一些反思_第4张图片毕业设计--2020-02-01 奇耘4.2寸墨水屏 程序设计中的一些反思_第5张图片

在OLED 刷新之前 设置成 OLED 模式

毕业设计--2020-02-01 奇耘4.2寸墨水屏 程序设计中的一些反思_第6张图片

使用结束就切换回 EPD  也就是模拟IO模式  暂时就用这个模式, 至于硬件SPI  也考虑过 修改电平极性来解决问题,但是最终还是有问题没解决  最终放弃。  这一次的主要问题就是在于 在进行硬件设计的时候没有去考虑程序的设计方法。 结果就导致 切换起来很麻烦,得不偿失!

 

你可能感兴趣的:(毕设,那些年我学的Stm32,墨水屏,STM32F4)