1、小钢炮的使用的MCU是STM32F401RET6,stm32比较常用的烧写方式主要有JLINK、ULINK、STLINK、串口方式,根据“stm32F401xE”的手册介绍,还可以使用USB OTG,I2C、SPI的方式将程序下载到MCU的Flash内。
datasheet 中关于Boot modes的介绍
2、我在学习过程中使用的是U盘版stlink V2烧写器将程序下载到板卡上这里具体介绍一下过程整个烧写过程
2.1、硬件连接
说明:上图即为硬件连接图,蓝色的为U盘版stlink V2版本,使用这个烧写器不用连接外部电源,上图中,虽然P12端口连接的线,但并没有连接电源,这里P4端口上的跳线帽可连可不连,从原理图及实际的测试来看,该跳线帽只有在使用USB或者P12端口供电时才需要使用。
这里F1对应的排针是控制Boot模式的控制跳线,在此连接时将BOOT0和BOOT1都连接到GND侧,这里对于STlink的连接,根据原理图分别连接stlink的VCC3.3V(切记不要连到5V上,否则可能会有烧掉片子的危险),SWCLK,SWDIO,GND这四根线,在U盘版的 stlink V2 版本都有标注,这里不再赘述。
2.2、软件设置
首先,下载小钢炮的事例源码,这里不再提供下载地址,打开开发环境(环境搭建已在上一份帖子中介绍完成),导入工程(project--》Open Project -- 》“弹出对话框”---》找到工程文件)。
此时你可以看到如上图中情况,这里我们选择cannon_v2,这里V1和V2表示对应的不同版本硬件的代码,我这里得到的板卡是V2版本的,(查看硬件版本,请参考下图中红色箭头指的的位置)
然后,进行编译,源码导入后,设置编译及下在环境,project--》Options for Targets“cannon_v2”,或者直接点击如下图的按钮,进入设置界面
这里很多帖子都已经叙述设置过程,在此我不再进行叙述,这里仅仅说一下注意事项,
a、设置前建议将stlink先接到USB上识别并且安装好驱动;
b、在设置debuger选项时,点击setting后会出现如下图所示界面,如果你已经连接了烧写器并且被正确识别,在JTAG Device Chain选项中不应该提示如红圈所示的“No ST-LINK detected“,如果出现以上提示,说明ST-link没有被正常识别。
c、Ort(蓝色背景的选项),JTAG表示ST-link信息,SW表示目标板信息只有两个选项在JTAG Device Chain选项均提示设备连接正常时,程序才能正常被下载到芯片中。
以上设置均正确设置后,点击重新编译,这样可以保证你的二进制代码是最新的。
最后点击下载命令按钮将程序下载到板卡上,红色圈的按钮
过程中遇见的问题说明:
1、stm32f401可以通过串口,stlink ,Ulink,Jlink等方式将程序下载到flash中去,这里我也尝试过使用jlink的方式下载程序,但没有成功,主要原因是使用的JLINK版本过于古老(2010年买的,之前的朋友留下的),推测是V7的固件,尝试将固件升级到V8,但没有成功,软件总是无法识别,这里推测可能是已经坏掉了。 JLINK现在最新版本是V8,我从商家了解到的情况时JLINK现在已经基本停产了,正版行货一般是¥2000.00,市面上卖的均为盗版,价格也是从¥95.00~¥200.00不等,JLINK对ARM的支持是最全面的,一般如果预算可以,建议购买JLINK。由于我手中已经有一个了,虽然不好使,但我觉得应该是我没搞清楚那个东西的升级过程,所以我没有购买JLINK。
2、网上对于开发stm32比较推荐使用的是stlink,这种仿真器分两个种类一是正常板的(如下图中白色烧写器),另一种是U盘版的stlink(如下图蓝色烧写器)。正常版本的网上价位很多,从二十几元的到二百多的都有,用的也比较多,U盘版的stlink价格一般十几块到四十几块。两者但从固件版本上来讲,均为V2版本,但在从实际使用者的反馈来看,白色的故障率要比蓝色的故障率高,这里我从论坛看到的使用反馈来看,白色的烧写器在使用时需要给板卡外部供电,而蓝色不用。我分别花了60块大洋和30块购买了这两种烧写器,通过实际使用,个人推荐U盘版的stlink,该版本不需要对板卡进行供电,同时价格低廉,使用白色的stlink一直也没有成功过,也不知道是坏了,还是我的操作有问题。
3、根据手册提示,stm32F401芯片还可以使用串口或者I2C、SPI总线方式将程序烧写至flash中去,我查看了一下小钢炮的原理图,发现该板卡上并没有MAX232这类电平转换芯片,由于我对stm32串口的电气参数还不了解,这里我没有尝试串口这种烧写方式,以免由于自己的鲁莽损坏板卡。如果有了解这种烧写方式的前辈,希望你能分享您的经验或者向我推荐相关的帖子,在先谢过了。
最后,说一点个人的建议,miniUSB的焊接强度不够,极易损坏,我的就在尝试使用USB连接时,不经意被掰掉了,然后尝试焊接回去,强度依然不行,最终导致PCB焊盘损坏,现在已经无法在焊接回去了,这里希望板卡商能注意