上周针对这块开发板进行了简单的开箱和环境搭建,发现程序可以正常编译,但是不能完全的连接到开发板之上,用DAPlink会提示RDDI-DAP Error,用jlink的话根本找不到MCU的ID,因此这一度让我怀疑自己。毕竟MM32的芯片兼容性是比较好的了,之前也调试过,怎么会遇到这种问题呢? 本着遇到问题解决问题的理念,首先还是用jlink吧,因为jlink调试比较方便的,最初在keil上找不到芯片ID,那接下来的想法肯定是使用segger的jflash连接,如果能连接和读取ID和芯片内部的程序,那说明连接和芯片的没有问题,那就是keil的版本问题了。思路没错,说做就做。
首先打开jflash,选择芯片型号,发现根本没有,咦~,这咋整,回首找到官网,看看有什么线索没有,发现真有,在官网上有个jlink pack的包,估计是给jlink添加芯片信息的脚本吧,直接下载下来。果然是给jlink使用的。打开看看。
图1 给jlink添加MM32的芯片
这里直接双击exe文件即可,按照提示操作,操作成功如图2所示,会提示你安装成功。
图2添加MM32的芯片操作成功
接下来就可以在jflash之中选择芯片型号了,这里选择的是MM32SPIN0230B3TV,通过jlink果然可以连接上芯片,并且可以正常烧录程序,但是在keil依然不能烧录,高度怀疑keil的版本暂不支持吧,既然这样,解决方法就是升级keil或者换个调试器,升级keil属实有些麻烦,那就换个调试器吧,毕竟手里的调试器种类比较多,DAPlink是支持Cortex M0内核的,所以选择DAPlink是在合适不过了。但之前用其仿真器连接MCU,虽然能连接上,但是烧录就提示RDDI-DAP Error这就让我很疑问。既然会报这种错误,基本就是硬件连接或者DAPlink有问题等等,一项一项的排查呗。先看看原理图,看是否能找到线索呢。
图3 SWD板载接口
通过原理图来看,属于个性化的SWD接口了,正常偶数方面除了2之外都是GND,所以我就给接4上了,发现MM32这块板子的4是串口的RXD,有可能是因为我接错了导致DAPlink虽然识别到了芯片,但是下载的时候没有共地导致时序不对,从而下载错误。既然这样,将GND接在20引脚上试试。果然好使了。
图4 DAPlink烧录成功显示
到此,很艰难的将MM32与仿真器连接上了,属实算是一波三折,接下来就先点个灯吧,看看效果。
由于通过原理图的比较和PCB的查看,发现核心板的板载LED是焊接反的状态,这里需要给它调整过来。
图5 板载LED焊接反了,需要调整
将LED调整过来之后,就可以正常烧录程序了,这里官方提供的demo与实际板载LED的控制引脚没对应,板载LED是PB9,demo是PB0和PB1,PA6和PA7。因此需要修改程序的控制引脚即可。修改完成之后可以实现LED的翻转控制。
图6 点亮LED
至此,开发环境也算是完全搭建好了,属实坎坷多多,不过所谓的好事多磨嘛,通过这种细节问题加以推敲,可以获得很多小经验,方便以后的开发,也是不错的。
|