首先感谢灵动微电子提供这款开发板和测评的机会!
我是10月12号收到了上海灵动微电子寄来的Mini-G0001开发板,因为公司电脑不允许非软件岗位的电脑安装KEIL软件,测评都是在晚上哄孩子睡着后个人电脑上熬夜进行和上班时摸鱼整理的,难免有些错误和不足,还请各位大佬轻点拍砖。
1, 开发板上电测试。
开箱后的第一件事就是上电,跑下出厂程序。根据用户手册介绍,板载20PIN SWD 调试接口,供电方式为Micro-USB。不过在接上USB线后上电之前,我还是习惯性的用万用表的蜂鸣档,测试下开发板上的电源端口与地之间是否有短路的情况(多年的炸机经验使然)。万用表测试没有问题后,USB线插上电脑上电,红色LED指示灯点亮,蜂鸣器“滴”一声,用户LED点亮,上电完成,没有异常,进行下一步。
2, 程序下载。
我手上有野火的DAP-Debugger和自制的ST-LINK。考虑到操作的便利性,我优先选择带20PIN SWD 调试对接口的野火的DAP-Debugger,这里有点需要注意的是,我手上这款野火下载器3.3V的引脚是没有接通的,所以在下载程序时需要额外的使用一根USB线来供电(后续嫌占用电脑太多的USB口,我切换成ST-LINK下载和直接供电了)。
下载程序的环境设置跟STM32系列的大同小异:从官方网站下载芯片支持包,安装后打开KEIL5软件,选择对应型号的MCU,编译,下载,观察开发板的现象。这里需要注意一点的是需要勾选“Reset and Run”,因为开发板没有手动复位按键。
3, 软件编写和调试
官方针对每个外设,提供了很丰富的例程源码,我们可以一一下载到开发板里观察验证外设。同时也可以根据自己的喜好,修改对应的代码来实现各种功能。因为习惯使用串口调试助手,所以我按照开发板用户指南上的介绍,硬件方面将R1,R2位置焊上两个0603封装的100Ω电阻,KEIL软件上面勾选“Use Microlib”。使用串口1连接串口转TTL工具,就可以在电脑上的串口调试助手打印信息。官方例程中加入了很多打印信息,也封装了串口printf函数重定向功能的代码。
4, 代码移植
我用STM32系列的MCU稍微多些,因为MM32G系列的内核也是Cortex-M0的,所以在代码结构,外设驱动代码的移植方面都很类似。先是复制目标代码到我们的工程文档目录下,然后在KEIL软件里的过程目录下添加对应的XXX.c文件,添加XXX.h文件的路径,同时在已有的过程文件里包含相应的头文件名,声明某些函数。编译无误后就可以下载验证了。
【这里我有遇到一个问题没搞明白,有动的大佬知道原因的话请不吝赐教:
在移植TIM1_PWM外设驱动时,TIM_Configure这个函数里TIM_CtrlPWMOutputs(TIM1,ENABLE)一直报“declared implictly”警告。网上查找原因说 是头文件没有包含,但对比官方例程发现头文件都是一样的。官方例程没有警告,我的代码需要加上一个extern函数声明才能消除警告。还需深入查找原因!】
5, 总结。
优点:
1) 硬件方面,外设比较齐全。虽然Cortex M0内核属于入门级的,Mini-G1000开发板也是属于核心板类型,但板载的外设资源一点都不少。用户LED指示灯可以验证GPIO口输入输出类型,电平控制,速率验证,定时器PWM功能等试验,4个按键可以实现外部输入及外部触发中断等试验,可调电位器对ADC功能的验证比较友好,最大的亮点属于板载了FLASH和EEPROM 芯片,这是我接触到核心开发板中少于的配置。
2) 软件方面,官方提供了每个外设对应的驱动代码例程。Mini-G0001的例程,官方提供了HAL函数库,但编程风格是类似于STM32标准函数库,便于习惯使用STM32标准库开发项目的工程师快速上手。比较有亮点的是平台化的代码编写结构,独有的platform文件里封装了标准延时函数,用于调试的串口1初始化函数,串口1的重定向函数,GPIO的初始化函数,用于显示效果的LED状态设置函数。在进行不同外设代码移植时,大大降低了用户的工作量。
上面是到目前为止我所了解到的一些优点,还有一些是属于我个人用起来不太习惯的地方:
1) 官方IC手册中,PA12复用功能对应的是ADC1的3通道,但在原理图复用对照表格中对应的是ADC1_IN4,这个发现也算是勘误了。
2) 没有复位引脚。个人觉得不太习惯没有复位引脚,特别是在程序下载卡住或者是代码下载完成的时候,个人还是习惯按复位按键给MCU投复活币。
3) 蜂鸣器电路采用的是PWM驱动。这点对大佬来说没啥,但对新手来说可能不太友好。想要驱动蜂鸣器,还需要配置定时器来输出PWM或者采用普通I/O口模拟PWM输出,从而实现蜂鸣器的驱动,这对新手来说有一定的难度。
4) 翻看其他网友的测评中有提到烧录器无法识别或是可以识别但无法下载的情况,我在使用过程中也有遇到类似问题。我的应对方法是断开开发板和烧录器的电源,然后静置一段时间或者是用镊子短接VDD和GND,具体原因还没有花时间去深入研究,个人猜测是跟供电干扰异常有关。
以上是关于灵动微电子Mini-G0001开发板的初步测评,主要内容还是集中在开发板本身资源上面。目前手上有各种扩展传感器模块(各种温度湿度传感器,无线通信模块,显示模块等),后续再抽空出一篇基于Mini-G0001核心板的多种传感器联动的测评,欢迎大佬们指教!
注:附件是测试各种外设时(包括但不限于GPIO,ADC,I2C,SPI,TIM,UART,WDG等),串口调试助手显示内容的截图,供大家参考!