[ufun学习] [UFUN学习](一)开机上电+ISP下载+SWD仿真

飞翔荷兰人号   2016-8-6 00:17 楼主
     早就收到了UFUN开发板,可是最近一直有事,一直没顾得上写东西,今天终于闲下来了,就写一写对UFUN的初步测试吧。

     首先谈谈对板子的看法吧。

     刚拿到快递的时候,我是一脸的难以置信——这真的是一块开发板吗?之前看图片觉得器件不少呢,怎么盒子只有这么小。回到家拆开一看,感觉只能用“惊艳”二字来形容。板面上主体颜色蓝色配上适当的开窗露铜,真的很漂亮。以前从图片上没仔细看,拿在手里一看才知道,除了必要的排针,上面的器件用的基本都是贴片器件,好多我以前都没见过,这么多小巧精致的贴片器件紧凑合理的摆放,设计者一定都是有情怀的工程师,哈哈。由于手机刚刚变砖,就只能发截图了,实物照片暂时不能发了。。。

     收到板子以前,我已经看过电路原理图和《UFUN开发板快速入门》了,发现了一个小问题。不过看到坛友 qwerghf 已经指出了,我这里再稍微提一提吧。
     file:///C:/Users/ADMINI~1/AppData/Local/Temp/enhtmlclip/Image.png
BOOT.png

     从图中可以看出,拨码开关OFF状态时BOOT0和BOOT1应该是高电平,而ON状态时才是低电平。但是《快速入门》里写成了ON是高电平,希望广大坛友加以注意。

     坛友 qwerghf 还指出了J6四个排针的实际信号与《快速入门》里有出入,这点我原先没发现,这位坛友真是够细心的。

     板子连接到PC的USB口,打开串口调试助手,波特率起先设置的9600,收到的都是乱码,我调整了波特率,调成115200时开始正常显示数据。这里坛友们要注意下,咱们平时经常用9600的波特率(不过也可能只是我经常这样用)。

开机上电.png

     上电测试正常后,我就开始试着自己烧录程序进去。

     先用keil5打开demo程序,发现里面当前的程序和板子里默认的程序一样,为了加以区别,我在打印的文字里加了一串数字,避免程序没烧进去而误以为烧进去了。
程序更改.png
file:///C:/Users/ADMINI~1/AppData/Local/Temp/enhtmlclip/%E7%A8%8B%E5%BA%8F%E6%9B%B4%E6%94%B9.png

     我ISP下载用的软件是《快速入门》里面的STMicroelectronics flash loader。

BOOT0BOOT1启动模式说明
0X用户闪存存储器用户闪存存储器,也就是FLASH启动
10系统存储器系统存储器启动
11SRAM启动SRAM启动,用于在SRAM中调试代码


     以上是STM32不同启动模式对应的BOOT引脚电平配置。为了进行ISP下载,我们的BOOT0应置1,BOOT1应该置0。对应到板子的拨码开关上,应该是1拨到ON,2拨到OFF(正常启动时两个都在ON)。

     打开STMicroelectronics flash loader,把拨码开关配置好,选好COM口,点NEXT时,软件会提示让复位一下,因为之前的模式是FLASH启动。

     按下板子上的复位按键,然后后面就可以按《快速入门》里面介绍的来操作了。

     最后下载成功后,要把拨码开关拨回FLASH启动,也就是两个都是ON,然后按复位按键,程序就正常启动了。这时候关掉下载软件,打开串口调试助手,可以看到跑的已经是改过的新程序了。

file:///C:/Users/ADMINI~1/AppData/Local/Temp/enhtmlclip/ISP%E4%B8%8B%E8%BD%BD.png
ISP下载.png

     何以见得是新程序呢,因为我加在程序里的数字已经打印出来了啊。

     接下来试试SWD仿真。

     从JLINK上连出VCC、GND、SWDIO、SWDCLK四根线到UFUN板上,并把JLINK连接到PC,BOOT脚不用更改,直接两个ON就可以。

     从Keil5的Options for Target菜单中的Debug界面选择JLINK,在Setting中可以查看到设备号,说明连接成功,再在Flash Download里选一下器件的FLASH大小,就可以仿真了(SWD仿真时会把程序烧到FLASH里,也相当于下载吧)。

JLINK连接开发板.png

     点击Debug按钮,再把串口调试助手打开,全速运行,收到数据,完美!

SWD仿真.png
file:///C:/Users/ADMINI~1/AppData/Local/Temp/enhtmlclip/SWD%E4%BB%BF%E7%9C%9F.png

     关于ISP和SWD的测试就简单介绍到这里。

     说一个我遇到的问题。我本来想用USART文件中的打印函数代替printf函数试试,可是从USART.h文件中找到void USART1_Puts(unsigned char * str);函数,并引用到main函数里面,编译会报错,说没有定义,我从USART.c里简单找了下,好像确实是没有,不知道为什么h文件和c文件没有对应。

     不过这块我没来得及细看,也可能是我找的地方不对,等后面把例程里面的文件仔细挨个看看再说吧。到时候学到了串口再仔细研究这个地方。



回复评论 (1)

给楼主点赞~~
点赞  2016-8-16 20:24
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复