【最靓的GD+我与GD32的情结】

[复制链接]
503|10
 楼主 | 2019-8-3 17:48 | 显示全部楼层 |阅读模式
本帖最后由 hu9jj 于 2019-8-7 14:57 编辑

    去年秋天,正当我准备从8位单片机转向32位单片机的时候,我报名参加了EEWORLD论坛举办GD32F350开发板diy大赛,从此开始与兆易创新的GD32产品有了亲密的接触,也开启了32位单片机的学习之路。一年来已经使用过多款不同型号的开发板,下图是我的GD32小家庭的合影,可以毫不夸张地说,这些开发板见证了我的单片机成长过程。
a01.jpg
    上图左边的是GD32F350开发板,中间的是GD32E230C开发板,右边的是GD32E231C开发板。



一、入门篇

    我的第一块GD32开发板是GD32F350,这也是我第一次接触32位单片机。打开包装后,红彤彤的开发板呈现在我的眼前。
a1GD32F350开发板1.jpg

   我小心翼翼地焊接好排针,并找了几个一次性水笔笔芯的橡胶帽充作脚垫,以便能够保护开发板和工作台面(见下图):
a2GD32F350开发板焊好接口1.jpg


    准备工作基本做好之后,迫不急待地通电测试,三颗LED灯不停地闪烁了起来。
a3GD32F350开发板上电测试1.jpg


    当时我的项目计划是做一个小水电站的自动控制装置,该装置接收水源的水位高低信息,然后自动控制进水闸门的开大或关小。也就是说要根据水位高低来控制开大或关小的两个继电器动作,继电器再控制电机的正反转来带动进水闸门。
    由于我之前只接触过51单片机,缺乏必要的基础,转换到ARM单片机的难度可想而知。不要说固件库函数操作的复杂性,光是开发平台的建立就花费了我不少时间。经过近两个月的不懈努力,在许多素不相识的坛友老师们热心帮助下,我从点亮LED灯开始,到成功地驱动LCD5110显示屏,建立起了与51单片机的SPI通讯,控制继电器模块的正确动作,最后成功地完成了项目计划。下图是测试的过程:
a4GD32F350开发测试1.jpg

    下图是最后的综合调试,接收到51单片机输出的水位高低信息,然后根据需要控制继电器的动作:

a5联合调试1.jpg

    最后我的这个项目有幸获得了纪念奖,奖品是一块GD32E230C开发板。




二、巩固篇
    收到GD32E230C开发板之后,我立即被这块2.2英寸的TFT彩屏吸引住了,之前使用的是LCD1602和LCD5110显示屏,第一次接触TFT彩屏,真有点好马配好鞍的感觉。
b1GD32E230开发板.jpg

    通过学习范例,我很快就掌握了彩屏的基本应用,也掌握了软字库的寻址方法。之前我都是利用数组的行号来选择软字库中需要的汉字,程序代码不直观。从范例程序中学到了用汉字内码来定位软字库中的行号,从而确定所需要的汉字,这样程序代码就非常直观。
    当时我正好获得到一块美信MAX30102血氧心率传感器芯片,我准备利用GD32E230C加TFT彩屏来做一个类似医院急救用的血氧心率监护装置,可以在家中动态监测病人的血氧浓度和心率波形。可是这块芯片配套使用的是mbed函数库,而我移植到GD32时一直不成功,显示界面虽然做出来了,但一直取不到传感器的数据,反复尝试了多次,仍无结果。
b2GD32E230应用.jpg


    后来我在网上找到一个使用STM32F103C8T6芯片的项目压缩包,解压、编译、下载到STM32F103最小系统板上直接可以运行,于是我添加了LCD5110显示屏,然后将心率的波形显示在小小的LCD5110上(参见下图)。
b3LCD5110.jpg



   这次虽然暂时没能在GD32开发板上实现,但对我的学习历程来说却是收获颇丰,写出的代码不再象之前那样杂乱无章,函数和变量名基本上做到了望文生义,程序结构清晰,完全可以说是巩固了之前学习的基础知识。




三、提高篇

    今年4月份我又报名参加了兆易创新和EEWORLD举办的GD32E231 diy大赛,这次厂方除了提供了开发板之外还赠送了两颗芯片,方便测试者自己设计打样PCB板来焊接应用装置。

c1GD32E231C.jpg


   GD32E231芯片还有一个特色,就是内置了两个运算放大器,这为芯片的应用添色不少,有些微弱的模拟信号不需要外置电路就可以进行放大处理,也可以对PWM的输出信号进行放大。
c2GD32E231C.jpg


    这次我的项目计划是做一个智能红外人体感应报警装置,能按照用户设置的不同时段发出不同的声音提示,例如白天就奏响音乐,晚上就播放警报声,当然这个时间段和播放的内容完全可以让用户自行设置。该装置还配备了一块AT24C02来保存报警记录,使用SD1302提供日历和时钟信息。
    开始我还准备将录制的音乐(语音)文件保存在MCU中,可以灵活方便地选择播放内容,可是测试了很久都不成功,只好暂时用两块音乐IC代替。
红外检测采用的是HC-SR501模块,预留了添加可燃气体和烟雾传感器等接口,可根据需要添加相应的模块。
项目的框图如下:
c3BlockDiagram.jpg

    通过这个项目的实施,我对多功能按键有了更深刻的认识。因为开发板上的用户按键通常只有一个,为了让按键发挥更多的功能,需要通过识别按键按下时间的长短来执行不同的操作,这就需要有一个可靠的识别程序。我通过启用SysTick进行毫秒计数,当按键按下时开始计数,按键抬起时结束计数,最后根据这个毫秒值来执行不同的操作,成功地解决了开发板上用户按键不够的问题。下图为项目测试过程:
c4allset.jpg

    项目总结尽管已经提交了,但还有许多需要改进的地方,尤其是用多块音乐IC作声源的方案缺陷很大,后来我买了一块JQ8400-TF语音模块,用这个模块可以合成自己需要的各种声音,选择播放或者组合播放,完全可以替代用目前的多个音乐IC方案,下一步准备利用赠送的GD32E231芯片,自己设计打样PCB板,结合新的方案来做一个更具实用价值的智能报警装置。
    很幸运,我的这个项目最后被评为三等奖,奖品之一是一块兆易创新高端开发板。目前尚未收到开发板,收到后又可以展开手脚,接触新器件、学习新知识了。




四、展望篇

    通过近一年来与GD32的亲密接触,是兆易创新的产品带我进入了32位单片机的大门,同时也对GD32系列的单片机有了一定的了解。尽管总体来看GD不如STM那么普及,但两者之间的差距正在逐步缩小,有些方面几乎是并驾齐驱,甚至是领先,例如率先在中国推出的基于Arm® Cortex®-M23内核的MCU,还有前面提到的集成了两个运算放大器等。在当前美国对我国高科技实施打压的国际环境下,国内爱国情结空前高涨,对民族产品也情有独衷,相信咱们兆易创新只要脚踏实地,做好产品和服务,假以时日,肯定会得到越来越多用户的支持和青睐。







使用特权

评论回复
 楼主 | 2019-8-3 18:27 | 显示全部楼层
    后记:本想等收到奖品——兆易创新高端开发板之后再来写这篇文章的,但无奈期限临近,开发板还遥遥无期,所以只好先写这前三块开发板,新的高端开发板使用情况待以后再介绍了。

使用特权

评论回复
| 2019-8-3 22:55 | 显示全部楼层
楼主钻研技术的精神值得学习!

使用特权

评论回复
 楼主 | 2019-8-4 08:04 | 显示全部楼层
lisingch 发表于 2019-8-3 22:55
楼主钻研技术的精神值得学习!

谢谢夸奖和鼓励!

使用特权

评论回复
| 2019-8-4 13:41 | 显示全部楼层
看来楼主要拿奖了

使用特权

评论回复
 楼主 | 2019-8-4 14:33 | 显示全部楼层
GD32chip 发表于 2019-8-4 13:41
看来楼主要拿奖了

谢谢支持!

使用特权

评论回复
| 2019-8-5 23:43 | 显示全部楼层

后面用GD32做大项目记得联系我,我供应IC

使用特权

评论回复
 楼主 | 2019-8-6 08:34 | 显示全部楼层
GD32chip 发表于 2019-8-5 23:43
后面用GD32做大项目记得联系我,我供应IC

好的,谢谢了。

使用特权

评论回复
 楼主 | 2019-8-20 10:27 | 显示全部楼层
本帖最后由 hu9jj 于 2019-8-20 15:05 编辑

    盼望已久的GD32高端开发板终于收到了,下面是包装盒,整个包装大约有【新华词典】那么大,为了比较,拍照时边上放了一个充电宝。
open_00.jpg


    打开包装,除了开发板之外,还有一张光盘、一根网线和两根USB数据线。
open_02.jpg



    开发板上配有3.5英寸的TFT显示屏,还有LAN网线接口、九针串口、SD口、耳机插孔、JTAG接口和多个USB接口。
open_01.jpg


    硕大的GD32F450ZKT6芯片占据开发板中央。
open_03.jpg


    上电测试,出现清晰的GD32LOGO,还有一只跑动的豹子。
open_04.jpg


    下一步则准备收集相关的资料,建立好开发平台,又可以测试、学习起来。

使用特权

评论回复
| 2019-8-23 16:36 | 显示全部楼层
楼主,我想请教个问题,stm32103ZET6的LCD例程,如何移植到GD32F47ZKT6例程,或者相关开发板的移植也可以,我想参考一下,目前跟技术工程师那边沟通也无果,需要自己移植。

使用特权

评论回复
 楼主 | 2019-8-23 20:04 | 显示全部楼层
tzq1245999022 发表于 2019-8-23 16:36
楼主,我想请教个问题,stm32103ZET6的LCD例程,如何移植到GD32F47ZKT6例程,或者相关开发板的移植也可以 ...

    我使用的LCD5110显示屏比较简单,是用GPIO模拟SPI通讯完成驱动的。我移植时仅仅是修改了引脚的宏定义,偶尔根据逻辑分析仪调整一下延时时间就行,没遇到过更多的困难。

使用特权

评论回复
扫描二维码,随时随地手机跟帖
您需要登录后才可以回帖 登录 | 注册

本版积分规则

我要发帖 投诉建议 创建版块 申请版主

快速回复

您需要登录后才可以回帖
登录 | 注册
高级模式

论坛热帖

在线客服 快速回复 返回顶部 返回列表