打印

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

[复制链接]
2621|30
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
本帖最后由 hu9jj 于 2019-8-7 14:57 编辑

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

    上图左边的是GD32F350开发板,中间的是GD32E230C开发板,右边的是GD32E231C开发板。



一、入门篇

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


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



    准备工作基本做好之后,迫不急待地通电测试,三颗LED灯不停地闪烁了起来。



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


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



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




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


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



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




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




三、提高篇

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




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



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


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


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




四、展望篇

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







使用特权

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

使用特权

评论回复
板凳
lisingch| | 2019-8-3 22:55 | 只看该作者
楼主钻研技术的精神值得学习!

使用特权

评论回复
地板
hu9jj|  楼主 | 2019-8-4 08:04 | 只看该作者
lisingch 发表于 2019-8-3 22:55
楼主钻研技术的精神值得学习!

谢谢夸奖和鼓励!

使用特权

评论回复
5
GD32chip| | 2019-8-4 13:41 | 只看该作者
看来楼主要拿奖了

使用特权

评论回复
6
hu9jj|  楼主 | 2019-8-4 14:33 | 只看该作者
GD32chip 发表于 2019-8-4 13:41
看来楼主要拿奖了

谢谢支持!

使用特权

评论回复
7
GD32chip| | 2019-8-5 23:43 | 只看该作者

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

使用特权

评论回复
8
hu9jj|  楼主 | 2019-8-6 08:34 | 只看该作者
GD32chip 发表于 2019-8-5 23:43
后面用GD32做大项目记得联系我,我供应IC

好的,谢谢了。

使用特权

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

使用特权

评论回复
评论
键盘手没手 2019-10-31 18:48 回复TA
用我老师的一句话,先把它本身整明白,头都没有呢直接跟人移植,往哪按啊,不给搞死了。哈哈哈哈 
10
hu9jj|  楼主 | 2019-8-23 20:04 | 只看该作者
tzq1245999022 发表于 2019-8-23 16:36
楼主,我想请教个问题,stm32103ZET6的LCD例程,如何移植到GD32F47ZKT6例程,或者相关开发板的移植也可以 ...

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

使用特权

评论回复
11
drer| | 2019-9-9 14:41 | 只看该作者
写的真不错啊

使用特权

评论回复
12
gwsan| | 2019-9-9 14:54 | 只看该作者
写的也太好了 支持一下

使用特权

评论回复
13
hu9jj|  楼主 | 2019-9-9 15:43 | 只看该作者
gwsan 发表于 2019-9-9 14:54
写的也太好了 支持一下

谢谢支持!

使用特权

评论回复
14
xk2yx| | 2019-9-10 13:16 | 只看该作者
看来是个GD粉,支持国产。

使用特权

评论回复
15
hu9jj|  楼主 | 2019-9-10 13:37 | 只看该作者

谢谢夸奖!还在继续学习过程中。

使用特权

评论回复
16
hu9jj|  楼主 | 2019-9-10 13:41 | 只看该作者
xk2yx 发表于 2019-9-10 13:16
看来是个GD粉,支持国产。

刚开始学习32位单片机时正好碰上EEWORLD和兆易公司举办评测活动,幸运地获得了评测机会,在大家的帮助下完成了评测计划,也算初步入了门,现在正在测试新获得的F450高端开发板。

使用特权

评论回复
17
tzq1245999022| | 2019-10-28 20:55 | 只看该作者
hu9jj 发表于 2019-8-23 20:04
我使用的LCD5110显示屏比较简单,是用GPIO模拟SPI通讯完成驱动的。我移植时仅仅是修改了引脚的宏定义 ...

我看你的是GD32F450芯片啊,请问stm32F450移植到GD32F450的嘛??仅仅修改了引脚嘛??能方便交流一下嘛  我的Q:1245999022  

使用特权

评论回复
18
hu9jj|  楼主 | 2019-10-28 22:43 | 只看该作者
tzq1245999022 发表于 2019-10-28 20:55
我看你的是GD32F450芯片啊,请问stm32F450移植到GD32F450的嘛??仅仅修改了引脚嘛??能方便交流一下嘛  ...

GD32F450的板子上配有TFT显示屏,板子上的程序仍是厂家的例程,我还没有尝试移植其他的代码。我移植LCD5110显示屏代码是基于GD32F350和GD32E231这两块开发板,移植时只是修改了引脚操作的宏定义,有次还用逻辑分析仪观看时序图,调整了一点延时,移植过程比较顺利,LCD5110的驱动本身也不复杂。

使用特权

评论回复
19
zeshoufx| | 2019-10-28 22:47 | 只看该作者
谢谢分享,,,,,,,,,,,,

使用特权

评论回复
20
tzq1245999022| | 2019-10-29 09:50 | 只看该作者
hu9jj 发表于 2019-10-28 22:43
GD32F450的板子上配有TFT显示屏,板子上的程序仍是厂家的例程,我还没有尝试移植其他的代码。我移植LCD51 ...

那这就尴尬了,GD32F407XKT6,LCD例程没有,说是与STM32同型号的可以直接移植,基本不需要有多大改动,现在移植完成后,显示屏开机花屏,然后变黑屏,按照网上解释的原因,也没有调出来??不知道啥原因

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

认证:Microchip
简介:让我们来为您提供帮助。我们可提供各种资源来帮助您解决一切问题。是否需要与我们的客户支持团队联系?您可以通过电话、在线聊天功能或电子邮件与他们联系。

151

主题

1059

帖子

11

粉丝