查看: 1881|回复: 5

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

[复制链接]
  • TA的每日心情
    开心
    2022-11-7 10:36
  • 签到天数: 898 天

    连续签到: 1 天

    [LV.10]以坛为家III

    发表于 2020-7-16 10:03:08 | 显示全部楼层 |阅读模式
    分享到:
    SPI接口驱动LCD显示
    在吸取了前次试用的经验后,果断的更换为BRD4182A模块进行测试,发现整个IDE用起来突然就顺手了很多,官方应该是基于这个模块来设计的,所以支持很好。
    BRD4182A无线模块和BRD4001A联合使用的时候,LCD的显示部分实际是搭载在主板上的,所以和使用串口时差不多,都需要有个使能开关,将显示模块切换到EFR32MG22处理器上来。
    1.   基本硬件配置说明
    和串口的试用比起来,LCD似乎更加复杂一些了,他的接口配置也比较多。LCD显示模块为夏普的1.28英寸128x128图形点阵液晶,型号为LS013B7DH03。
    1.jpg
        液晶的驱动使用SPI接口,占用PC02-SCLK,PC00-MOSI,PC06-CS,没有使用MISO,说明液晶为只写,不能回读。
        液晶同时要求一个周期性变化的引脚EXTCOMIN,占用PA00,这个引脚可选通过软件直接控制周期性改变状态,也可以采用RTCC,利用PRS自动完成。
        还有一个就是使能引脚,占用PC07,必须将该引脚置位高电平,才能让EFR32MG22具备LCD的控制权。
    2.   工程创建
    同前面工程创建过程基本相同,不同的是这次IDE支持的非常好,所以,我们想要看到的选项直接都出来了,赞一下。
    2.png
    创建工程的时候我们直接就选择最高版本的Gecko SDK V2.7版。下面就是按照提示创建就行了。
    工程创建完成后,我们同样需要创建一个Simplicity ConfiguratorDocument。
    打开硬件配置器,在“DefaultMode Peripherals”中选择需要添加的硬件设备,有些设备在我们对端口进行配置的时候他会自动添加上。
    例如外设选择CMU,HAL选择Button,LED,SPI Display,其它不选。
    选择后,右侧的DefaultMode->Peripherals下面就会出现我们刚才选择的外设和硬件接口层。
    3.png
    我们这里就说明一下SPI Display的配置过程,其它不做详细说明。
    选择SPI Display
    4.png
    我们可以看到一些缺省的设置,如上图所示,我们需要配置其它的相关选项,保留Displaytype不动,这个就是我们的LCD型号。
    5.png
    配置完后,应该是这个样子的,这时候我们保存一下硬件配置文件。我们可以观察到,系统自动帮我们选择了USART0的外设,之前我们并没有选择。
    6.png
    同样我们也需要配置USART0,并且配置为SPI类型。
    7.png
    将SPI波特率更改为500K,实际LCD允许1.1M,我们也可以选择其它的波特率。
    按照硬件原理图配置其它的SPI接口,保存硬件配置。
    3.   软件配置说明
    在开始软件程序开发前,我们需要先增加官方提供的硬件驱动库文件。在工程名上点击鼠标右键,选择属性,在选择Project Modules,我们需要选中HAL Config项下的SPIDISPLAY这一项。
    8.png
    点击OK后,系统自动为我们增加了几个支持目录,包括glib,kit-drivers,spidisplay。
    9.png
        编译中发现了一些找不到头文件的问题,解决如下。
    编译错误提示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上的一个基本演示。


    10.jpg 11.jpg 12.jpg
    完成了LCD显示单元的测试内容。

    回复

    使用道具 举报

  • TA的每日心情
    开心
    2022-11-7 10:36
  • 签到天数: 898 天

    连续签到: 1 天

    [LV.10]以坛为家III

     楼主| 发表于 2020-7-16 10:03:09 | 显示全部楼层
    这个是反白显示状态,如果正常显示的话和启动的时候自带内容的显示效果相当。不过感觉不反白的时候显示挺舒服
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2020-8-18 21:15
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]初来乍到

    发表于 2020-8-19 19:06:46 | 显示全部楼层
    请教一下,我这边在成功创建工程后创建Simplicity ConfiguratorDocument,打开配置器后里面的硬件设备呈现这样,并没有出现peripheral和hal,这是为什么呢?望指教
    错误.png
    回复 支持 反对

    使用道具 举报

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

    本版积分规则

    关闭

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

    手机版|小黑屋|与非网

    GMT+8, 2024-4-25 20:12 , Processed in 0.139898 second(s), 21 queries , MemCache On.

    ICP经营许可证 苏B2-20140176  苏ICP备14012660号-2   苏州灵动帧格网络科技有限公司 版权所有.

    苏公网安备 32059002001037号

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.