3858|11

44

帖子

4

TA的资源

一粒金砂(中级)

楼主
 

GD32L233C-START评测——07.RTC+SPI墨水屏显示时间——综合试验2 [复制链接]

 

本帖最后由 wadeRen 于 2022-3-22 22:41 编辑

[TOC]

[文章导航]

GD32L233C-START评测——01.开箱、开发包
GD32L233C-START评测——02_1.搭建开发环境、简单调试
GD32L233C-START评测——02_2.搭建开发环境、简单调试
GD32L233C-START评测——03_1.CoreMark测试、RT-Thread-Nano移植
GD32L233C-START评测——03_2.CoreMark测试、RT-Thread-Nano移植
GD32L233C-START评测——04.模拟IIC与硬件IIC驱动OLED对比
GD32L233C-START评测——05.SPI测试——驱动TFT屏
GD32L233C-START评测——06.LPUART+DMA+MCU睡眠唤醒——综合试验1

前言

  • 距离上一篇评测隔了挺长时间,不过本篇又是一个综合测试。
  • 最近项目太忙,断更了一段时间,现在恢复。并把前面欠下的抓紧补上。
  • 做本篇测试的目的,为了完结前面第五篇的遗留(链接),也是为了后面的综合项目趟坑。

1、外设简介

1.1、RTC简介

简单理解,RTC就是一个定时器,不过是专门用作记录时间的(年月日时分秒)。
比较关键的点是,RTC可以工作在省电模式,通过合适的硬件设计即可在主时钟停掉时继续计时,回到正常运行模式后,时间也正常。

1.2、SPI简介

大家都知道,就不再啰嗦了。只是我们用到的是非四线制的常规模式。

1.3、墨水屏

这个可得好好说说了。

墨水屏,也叫水墨屏,有些地方也叫电子纸。最大的特点是:

  • 显示效果类似白纸黑字;
  • 掉电后可保持显示;
  • 低功耗(刷新时只有mW级别的功耗,不刷新时几乎零功耗);

为了与咱们MCU主打的低功耗保持一致,故买了一个2.9寸墨水屏(好贵),来作为这个评测内容的一部分,以及综合项目也是基于这个墨水屏设计的。

2、试验内容说明

目标:在墨水屏上显示RTC记录的当前时间。
墨水屏介绍:2.9寸黑白双色;可局刷;分辨率296x128;灰度等级2。

硬件平台:GD32L233C-START开发板+自制墨水屏转接板。
关键外设:RTC、SPI。
连接说明:RST—PB7、DC—PB8、BUSY—PB9、SPI_CS—PB12、SPI_CLK—PB13、SPI_MOSI—PB15、SPI_MISO—PB14。
模式说明:因为墨水屏仅需接收MCU给其的显示数据,无需返回数据给MCU,所以我们仅需实现SPI为发送即可。
另: 为了驱动墨水屏,特意制作了一块转接板。

3、外设初始化

3.1、RTC初始化

本次测试里只是用了日历功能,未使用闹钟和侵入检测等功能,故初始化较为简单。

  1. void bsp_rtc_config(void)
  2. {
  3. /*使用外部32.768K时钟*/
  4. rcu_osci_on(RCU_LXTAL);
  5. rcu_osci_stab_wait(RCU_LXTAL);
  6. rcu_rtc_clock_config(RCU_RTCSRC_LXTAL);
  7. prescaler_s = 0xFF;
  8. prescaler_a = 0x7F;
  9. rcu_periph_clock_enable(RCU_RTC);
  10. rtc_register_sync_wait();
  11. }

注意: 此处使用了外部的32.768K晶振,因为经过实际测试,使用内部的时钟,每分钟有5S左右的误差。

3.2、SPI初始化

SPI的初始化与GD32L233C-START评测——05.SPI测试——驱动TFT屏的SPI初始化相同,不再啰嗦。

3.3、SPI写字节

同上,参考GD32L233C-START评测——05.SPI测试——驱动TFT屏

4、其它

宏定义GPIO读写:

  1. #define DEV_Digital_Write(_pin, _value) gpio_bit_write(_pin, _value == 0? RESET:SET)
  2. #define DEV_Digital_Read(_pin) gpio_input_bit_get(_pin)

至此,墨水屏相关的基础代码介绍完毕。RTC部分参考例程,先输入时间,再进行显示。

5、主函数

主函数代码如下:

  1. int main(void)
  2. {
  3. systick_config();
  4. led_init();
  5. gd_eval_com_init(EVAL_COM); //初始化串口O
  6. led_flash(1); //所有LED亮400ms,灭400ms
  7. /* enable PMU and BKP clock */
  8. rcu_periph_clock_enable(RCU_PMU);
  9. rcu_periph_clock_enable(RCU_BKP);
  10. /* enable the access of the RTC registers */
  11. pmu_backup_write_enable();
  12. bsp_rtc_config();
  13. /*编译下载代码时不屏蔽此行,即可重新设置时间*/
  14. //RTC_BKP0 = 0;
  15. /* check if RTC has aready been configured */
  16. if(BKP_VALUE != RTC_BKP0) {
  17. rtc_setup();
  18. } else {
  19. /* detect the reset source */
  20. if(RESET != rcu_flag_get(RCU_FLAG_PORRST)) {
  21. printf("power on reset occurred....\n\r");
  22. } else if(RESET != rcu_flag_get(RCU_FLAG_EPRST)) {
  23. printf("external reset occurred....\n\r");
  24. }
  25. printf("no need to configure RTC....\n\r");
  26. rtc_show_time();
  27. }
  28. rcu_all_reset_flag_clear();
  29. MX_GPIO_Init();
  30. MX_SPI1_Init();
  31. while(1)
  32. {
  33. printf("123\r\n");
  34. display_application();
  35. }
  36. }

6、效果

说明:
1.上电后在串口工具中输入时间,年月日时分秒;
2.墨水屏开始刷新并依次显示,兆易创新LOGO、电子工程世界LOGO、输入的时间;
3.此后屏幕DC下拉,关闭供电;
4.每隔一分钟时间刷新一次。

总结

  • 墨水屏的坑太多了,也是因为我第一次用,所以用的非常纠结。尤其是字体取模和BMP图取模时。
  • MCU片内的低速时钟精度太低了,不适合做时间显示类的应用。
  • RTC外设在这个试验中仅仅用了一小部分,后面的综合项目会逐渐融入RTC的其它功能。
  • 此次试验中部分功能未完全实现,比如农历的年月日及周几,并未实现,而是固定显示这个的。后面会完善。

结语

  • 本次试验测试了两个外设(其实仅RTC一个),比较新奇的是墨水屏,我对它的显示效果很满意,对它宣传的低功耗也很期待。
  • 以上内容若有错误,请不吝赐教。我这厢有礼了~:Onion-45:
  • 开源的综合试验项目已经有了方向和初步的想法,下篇公布。
  • 后续会穿插外设测试和试验项目。

另:附件上传工程源码和转接板光绘文件。附件说明如下:

15-GD32L233CCT6-Test.zip:LPUART发送接收+DMA传输+LPUART接收唤醒MCU。

artwork_pinBoard_V0.1.zip:24pin 0.5mm FPC接口墨水屏转接板。

此帖出自GD32 MCU论坛

最新回复

  详情 回复 发表于 2022-3-25 10:57
点赞 关注(1)
 

回复
举报

7018

帖子

0

TA的资源

五彩晶圆(高级)

沙发
 

厉害了,墨水屏再贵也要买一个,为了试验测评

此帖出自GD32 MCU论坛

点评

哈哈,本来也挺有兴趣的,就买来了。  详情 回复 发表于 2022-3-23 08:29
 
 
 

回复

44

帖子

4

TA的资源

一粒金砂(中级)

板凳
 
Jacktang 发表于 2022-3-23 07:24 厉害了,墨水屏再贵也要买一个,为了试验测评

哈哈,本来也挺有兴趣的,就买来了。

此帖出自GD32 MCU论坛
 
 
 

回复

7190

帖子

11

TA的资源

版主

4
 

我在某鱼上买了N个,就是全刷一闪一闪就不爽,局刷又会出现乱码,还没有时间来整理。希望楼主继续完善,做到局刷。

此帖出自GD32 MCU论坛

点评

我买的2.1寸的几块钱吧,4.2的好象贵一点,一直吃灰中。。。  详情 回复 发表于 2022-3-23 15:58
另,弱弱的问一下某鱼买的,价格是多少啊??我这买的好贵啊,60+。  详情 回复 发表于 2022-3-23 13:44
我的局刷试了下问题不大,但有时候也会出现乱码,有时候不会,我晚上可以改完放上来给你看。  详情 回复 发表于 2022-3-23 13:43
 
 
 

回复

44

帖子

4

TA的资源

一粒金砂(中级)

5
 
lugl4313820 发表于 2022-3-23 11:22 我在某鱼上买了N个,就是全刷一闪一闪就不爽,局刷又会出现乱码,还没有时间来整理。希望楼主继续完善,做 ...

我的局刷试了下问题不大,但有时候也会出现乱码,有时候不会,我晚上可以改完放上来给你看。

此帖出自GD32 MCU论坛
 
 
 

回复

44

帖子

4

TA的资源

一粒金砂(中级)

6
 
lugl4313820 发表于 2022-3-23 11:22 我在某鱼上买了N个,就是全刷一闪一闪就不爽,局刷又会出现乱码,还没有时间来整理。希望楼主继续完善,做 ...

另,弱弱的问一下某鱼买的,价格是多少啊??我这买的好贵啊,60+。

此帖出自GD32 MCU论坛
 
 
 

回复

7190

帖子

11

TA的资源

版主

7
 
lugl4313820 发表于 2022-3-23 11:22 我在某鱼上买了N个,就是全刷一闪一闪就不爽,局刷又会出现乱码,还没有时间来整理。希望楼主继续完善,做 ...

我买的2.1寸的几块钱吧,4.2的好象贵一点,一直吃灰中。。。

此帖出自GD32 MCU论坛

点评

难受~~~ 我这个一个2.9寸的,60+。贵了十几倍噢。我giao、  详情 回复 发表于 2022-3-24 22:42
 
 
 

回复

22

帖子

0

TA的资源

一粒金砂(中级)

8
 
GD32L233C单片机用什么开发环境,没有用过,以前用STM32F4-7系列,用STM32CUBEIDE开发挺容易。
此帖出自GD32 MCU论坛

点评

是Keil,也不复杂。你可以下载我上传的工程源码来看看,也简单的很。  详情 回复 发表于 2022-3-24 22:41
 
 
 

回复

44

帖子

4

TA的资源

一粒金砂(中级)

9
 
lugl4313820 发表于 2022-3-23 11:22 我在某鱼上买了N个,就是全刷一闪一闪就不爽,局刷又会出现乱码,还没有时间来整理。希望楼主继续完善,做 ...

你看,我的局刷没问题呢,我尝试了一下你说的乱码问题,在显示之前有一个“清除窗口”的操作,你要给它清除足够大的地方,就能正常局刷。

比如说,我这里显示时间用了8个字符,7个字符的宽度(两个冒号占一个1字符的宽度 )。在填充时间数据的函数前,要清除出来“字符高度*7个字符宽度”的空间,再填充显示数据。

代码如下:

  • /*清除空间*/
  • Paint_ClearWindows(5, 55, 5 + Font40.Width * 7, 55 + Font40.Height, WHITE);
  • /*填充数据*/
  • Paint_DrawTime(5, 55, &sPaint_time, &Font40, WHITE, BLACK);
  • /*显示*/
  • EPD_2IN9_V2_Display_Partial(BlackImage);

效果图如下:

此帖出自GD32 MCU论坛
 
 
 

回复

44

帖子

4

TA的资源

一粒金砂(中级)

10
 
jiande1 发表于 2022-3-23 21:39 GD32L233C单片机用什么开发环境,没有用过,以前用STM32F4-7系列,用STM32CUBEIDE开发挺容易。

是Keil,也不复杂。你可以下载我上传的工程源码来看看,也简单的很。

此帖出自GD32 MCU论坛
 
 
 

回复

44

帖子

4

TA的资源

一粒金砂(中级)

11
 
lugl4313820 发表于 2022-3-23 15:58 我买的2.1寸的几块钱吧,4.2的好象贵一点,一直吃灰中。。。

难受~~~

我这个一个2.9寸的,60+。贵了十几倍噢。我giao、

此帖出自GD32 MCU论坛
 
 
 

回复

1

帖子

0

TA的资源

一粒金砂(初级)

12
 

此帖出自GD32 MCU论坛
 
 
 

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

开源项目 更多>>
    查找数据手册?

    EEWorld Datasheet 技术支持

    相关文章 更多>>
    关闭
    站长推荐上一条 1/10 下一条
    中星联华&ADI明日直播
    直播主题:大咖面对面,轻松玩转高速ADC性能测试
    直播时间:3月25日(周二)14:00
    活动奖励:京东卡、双肩包

    查看 »

     
    EEWorld订阅号

     
    EEWorld服务号

     
    汽车开发圈

     
    机器人开发圈

    About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

    站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网 3

    北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

    电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
    快速回复 返回顶部 返回列表