去年秋天,当我正在从学习51单片机向学习32位单片机转换的时候,恰逢北京兆易公司与EEWORLD论坛共同举办了评测活动,我幸运地获得了GD32F350开发板的评测机会,这不光是我第一次接触兆易公司的产品,也是首次接触32位单片机。毫不夸张地说,是兆易公司的产品将我带入了32位单片机的大门。 下图正中红色的开发板就是GD32F350,左上角是自己搭建的扩展板,其下是LCD5110显示屏,照片下边是输出控制的继电器组,这些都是当时评测项目的组成部分。照片右边的是一块GD32E230C开发板,这块板是完成前面项目后得到的奖品。
刚从51单片机转向32位单片机时,遇到的困难是非常大的。51单片机有位操作指令,可以方便地直接操作某个引脚,而32位单片机则需要通过调用函数来操作,一开始很不习惯固件库的操作,尤其是被代码中琳琅满目的GPIO搞得晕头转向,不知所措。经过反复观看教学视频,在多个论坛中发帖求助,还在微信群里得到指教,终于点亮了LED灯,继而成功地驱动了LCD5110显示屏,然后又调通了USART和SPI串口通讯,顺利地接收到从另一个单片机发送的检测数据,就这样攻克了一个又一个堡垒,一步步走进了32位单片机的大门。经过一个多月的不懈努力,功夫不负有心人,在许多未曾谋面的老师无私帮助下,终于按期完成了评测项目。下图是当时完成项目的照片:
这个项目是接收检测数据,然后输出控制信号去驱动电机。承蒙评委的厚爱,我的这个项目入围了优秀奖,奖品是一块GD32E230C开发板(见下图),又给了我一次深入学习GD32单片机的机会。
收到这块开发板时,我立马被这块TFT显示屏吸引了,这是我第一次接触彩屏,之前仅仅是用过LCD1602和LCD5110等低分辨率的黑白显示屏,拿到彩屏感觉像走进了新的世界。首先我按照厂家提供的DEMO程序,逐步测试了LED灯点亮、用户KEY的轮询和中断方式、系统滴答中断的启用、I2C对AT24C02的读写操作等等。下图是利用AT24C02定时保存数据,利用系统滴答中断作时钟源做的模拟时钟程序:
今年2月份,我又得到了一块MAX30102样片,我开始准备用GD32E230开发板来驱动,因为用这个彩屏来动态显示心率波动应该是非常理想的。我从两方面入手,一方面是做好动态显示,另一方面是做好I2C驱动MAX30102以便读取数据。动态显示这一部分没有遇到太多的困难,已经基本完成,模拟的图形如下图,为了简便起见,我仅仅是模拟了锯齿波的图形。
不过I2C驱动MAX30102却没有那么顺利,开始用引脚模拟I2C直接操作,由于开发板上多余的空闲引脚很少,我找了PB3、PB5和PB8三个引脚来驱动MAX30102,但一直都不成功,通过逻辑分析仪来测试,发现PB3有不明的类似时钟信号,PB8有无规律的类似数据信号,在程序代码及开发板资料中又找不到是哪个功能使用了这两个引脚,折腾了几天后,只好改用I2C1来驱动(I2C0已经被开发板用于驱动AT24C02flash了),可谁知I2C1的驱动也挺麻烦的,外接AT24C02读不出数据。正准备用逻辑分析仪来进一步检查时,正好在网上找到一个适用于STM32F103C8T6的血氧心率项目代码,下载测试竟然顺利通过了编译,于是我暂停了在GD32E230开发板上的测试。 前不久,兆易公司又与EEWORLD论坛开始了GD32E231开发板的评测活动,我理所当然地又报名参加,现在正等待中,期望能再次幸运降临,获得这次的评测机会,能够更深入地了解新产品、掌握更多的新知识。
|