5回答

1收藏

[评测分享] 【Silicon Labs EFR32xG22】SPI接口驱动LCD显示

#板卡评测 #板卡评测 4436 人阅读 | 5 人回复 | 2020-07-16

SPI接口驱动LCD显示
在吸取了前次试用的经验后,果断的更换为BRD4182A模块进行测试,发现整个IDE用起来突然就顺手了很多,官方应该是基于这个模块来设计的,所以支持很好。
BRD4182A无线模块和BRD4001A联合使用的时候,LCD的显示部分实际是搭载在主板上的,所以和使用串口时差不多,都需要有个使能开关,将显示模块切换到EFR32MG22处理器上来。
1.   基本硬件配置说明
和串口的试用比起来,LCD似乎更加复杂一些了,他的接口配置也比较多。LCD显示模块为夏普的1.28英寸128x128图形点阵液晶,型号为LS013B7DH03。
    液晶的驱动使用SPI接口,占用PC02-SCLK,PC00-MOSI,PC06-CS,没有使用MISO,说明液晶为只写,不能回读。
    液晶同时要求一个周期性变化的引脚EXTCOMIN,占用PA00,这个引脚可选通过软件直接控制周期性改变状态,也可以采用RTCC,利用PRS自动完成。
    还有一个就是使能引脚,占用PC07,必须将该引脚置位高电平,才能让EFR32MG22具备LCD的控制权。
2.   工程创建
同前面工程创建过程基本相同,不同的是这次IDE支持的非常好,所以,我们想要看到的选项直接都出来了,赞一下。
创建工程的时候我们直接就选择最高版本的Gecko SDK V2.7版。下面就是按照提示创建就行了。
工程创建完成后,我们同样需要创建一个Simplicity ConfiguratorDocument。
打开硬件配置器,在“DefaultMode Peripherals”中选择需要添加的硬件设备,有些设备在我们对端口进行配置的时候他会自动添加上。
例如外设选择CMU,HAL选择Button,LED,SPI Display,其它不选。
选择后,右侧的DefaultMode->Peripherals下面就会出现我们刚才选择的外设和硬件接口层。
我们这里就说明一下SPI Display的配置过程,其它不做详细说明。
选择SPI Display
我们可以看到一些缺省的设置,如上图所示,我们需要配置其它的相关选项,保留Displaytype不动,这个就是我们的LCD型号。
配置完后,应该是这个样子的,这时候我们保存一下硬件配置文件。我们可以观察到,系统自动帮我们选择了USART0的外设,之前我们并没有选择。
同样我们也需要配置USART0,并且配置为SPI类型。
将SPI波特率更改为500K,实际LCD允许1.1M,我们也可以选择其它的波特率。
按照硬件原理图配置其它的SPI接口,保存硬件配置。
3.   软件配置说明
在开始软件程序开发前,我们需要先增加官方提供的硬件驱动库文件。在工程名上点击鼠标右键,选择属性,在选择Project Modules,我们需要选中HAL Config项下的SPIDISPLAY这一项。
点击OK后,系统自动为我们增加了几个支持目录,包括glib,kit-drivers,spidisplay。
    编译中发现了一些找不到头文件的问题,解决如下。
编译错误提示1:
编译的时候,系统提示displayconfigapp.h文件没有,我们在提示信息下面可以看到具体路径,现在我们不使用它,但是驱动中需要这个文件,我们把它找到后,复制到当前工程中,具体路径为
SDK目录v2.7\util\silicon_labs\silabs_core\graphics下面
方便起见,直接复制SDK目录v2.7\hardware\kit\EFR32MG22_BRD4182A\config下,不用再添加路径支持了。
编译错误提示2:
    找不到em_types.h文件。
通过查找,发现因为包含他的路径不在我们工程所搜路径内,我们添加就行。
具体路径为:
    SDK目录:v2.7\platform\middleware\glib
4.   软件测试
打开main.c文件
添加
    #include "display.h"
#include "glib.h"
static GLIB_Context_tcontext;
static const char *msg = "Hello GLIB!";
void setupGlib(void)
{
       DMD_init(0);
    GLIB_contextInit(&context);
    GLIB_drawString(&context,msg, strlen(msg), 10, 10, true);
        DMD_updateDisplay();
}
然后编译,发现了超多的错误,这个主要是因为我们再emlib下面没有添加相应的库文件。我们只需要把emlib相应的C文件和H文件都复制到工程后,问题就可以解决了。
如果没有大问题,基本编译就通过了。
5.   演示
我这里实现了一个主循环扫描按键和小灯闪烁,并将按键扫描结果显示再LCD上的一个基本演示。


完成了LCD显示单元的测试内容。

分享到:
回复

使用道具 举报

回答|共 5 个

倒序浏览

沙发

story_xjj

发表于 2020-7-16 10:03:09 | 只看该作者

这个是反白显示状态,如果正常显示的话和启动的时候自带内容的显示效果相当。不过感觉不反白的时候显示挺舒服
回复 支持 反对

使用道具 举报

板凳

yanyan0620

发表于 2020-8-19 19:06:46 | 只看该作者

请教一下,我这边在成功创建工程后创建Simplicity ConfiguratorDocument,打开配置器后里面的硬件设备呈现这样,并没有出现peripheral和hal,这是为什么呢?望指教

错误.png (55.03 KB, 下载次数: 89)

错误.png
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 注册/登录

本版积分规则

关闭

站长推荐上一条 /3 下一条