首页 > 技术文章 > 项目复盘记录

aloneYu 2020-04-02 21:25 原文

在最近的项目中,碰到了一些问题,在此记录,备忘

MCU屏

首先,串口屏一般是用户通过串口发送特定指令,MCU屏根据指令做相应的操作与响应,而自己从MCU屏出发做项目,相当于实现串口屏的封装功能。

初始化

主要内容是,通过某种(spi,semc...)通信方式在主芯片与MCU屏芯片之间通信,初始化也就是设置屏的一系列参数(显示方向是否偏转,颜色(RGB,GBR...),显示模式(部分显示...)等),这通常可以从供应商获取。

实现功能接口

在项目中,接口的实现通过阅读MCU屏的芯片资料可以大致实现,主要是卡在显示刷新速度上,发现刷新很慢,一度怀疑是屏本身的性能受限导致,现在知道是编写接口时,一个双重的循环大大降低了代码效率导致的,所以在使用多重循环时最好用简单的算法,否则多次嵌套之后,在嵌入式软件中,特别是实时操作系统中,代码效率会影响系统运行,甚至导致系统挂掉。


EEPROM

在项目中是外接的、挂在IIC总线上的EEPROM,使用专用IIC引脚。

引脚配置

简单处还是碰到了一个小问题,那就是IIC引脚需要配置开漏。

IIC配置

主机端,时钟频率与通信频率不是同一个东西,EEPROM支持的通信频率一般为100khz,400khz,1mhz。

IIC一般没有大区别,但是对EEPROM来说,需要仔细看它的文档,通信IIC协议可能会有小小的区别,主要是关注EEPROM的子地址,读写地址,读写时序,总大小,页大小。

特别说明

在项目中,EEPROM卡壳的原因是意象不到的,是因为使用了不恰当的库函数。

库函数一般是好用的,不需要了解如何实现,只需要知道怎么用就行,但是也不能完全信任库函数,比如当库函数老旧,不能处理某些特殊情况等。

另,使用IO口模拟IIC能清楚知道时序的要求,能加深IIC时序的印象,美哉。

void*型指针做参数,能对不同类型的指针进行包容,但是在程序最底层要转为实际的有类型指针。

 

推荐阅读