本文主要是介绍让SYD8821 SYD8811更好的下载仿真,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
对于在KEIL中SYD8821的下载不了的解决办法:
SYD8821下载或者仿真要额外接上复位线,一共五根线:VDD,GND,SWDCLK,SWDSDA ,REST,传统jlink的复位管脚如下:
另外可以用验证过的JLINK连接:https://item.taobao.com/item.htm?ft=t&id=669881942076
因为SYD8821是通过复位管脚复位,所以KEIL中做如下设置:
对于下载上面的配置足够了,因为SYD8821运行后有可能把芯片配置成不可以仿真的状态,所以要对SYD8821进行仿真,如下两种情况要注意并且做好相应配置:
因为SYD8821的GPIO31和SWD的DATA线复用,所以如果上电后程序把GPIO31设置为GPIO的模式,那么仿真器将连接不上SYD8821。
另外还有一种情况也会造成连接不上SYD8821,因为M0内核的SWD模块能够正常工作的前提条件是MCU的clock必须要存在,如果在休眠的时候把MCU的clock关闭了也会造成SWD连接不上,比如使用了如下方式进行休眠或者不睡眠:
SystemSleep(POWER_SAVING_RC_OFF, FLASH_LDO_MODULE, 11000 ,(PMU_WAKEUP_CONFIG_TYPE)(FSM_SLEEP_EN|PIN_WAKE_EN|TIMER_WAKE_EN|RTC_WAKE_EN));
SYD8821的加载脚本可从这里下载:https://download.csdn.net/download/chengdong1314/19684013
对于SYD8811芯片在仿真或者下载中会卡死在BleInit函数中的解决办法:
如果使用KEIL来下载或者仿真会体验到下载完代码后程序不能够运行的问题,这时候用jlinkcommander halt芯片的时候可以看到PC指针大概停在0X00006718的位置:
出现这个问题的原因是在使用SWD来复位(KEIL下载后自动复位或者jlinkcommander输入r命令复位)SYD8811的时候,SYD8811的M0内核是能够得到正常复位的,但是RF模块并没有得到正常的复位,这时候在BleInit函数中去操作RF的时候将会开机!但是对于上电复位或者复位键的复位依旧软件设置寄存器复位就不会有这个问题,所以这时候解决办法就是把SYD8811的复位线拉到jlink管脚上,但是不幸的是SYD8811的复位管脚默认是GPIO模式,所以复位管脚不一定都有复位功能。在上电复位对于带电池的方案又比较麻烦,那这里只能够通过想方设法通过设置复位寄存器来软件复位了,我们知道SYD8811的软件复位的方式是往0x5000100D寄存器写入0x00。
所以在KEIL中可以这样做,在debug的设置界面中的Initializationfile处导入本工程目录下的debug.bin脚本,脚本的作用就是在仿真之前通过软件复位来复位MCU:
通过大量的测试发现上面的方式能够解决SYD8811仿真是卡在BleInit函数的问题。但是这样并没有能够解决下载后复位运行卡在BleInit函数的问题,所以还要在Utilities设置界面中的Initfile处导入和仿真复位相同的脚本,如下:
SYD8811的加载脚本可从这里下载:https://download.csdn.net/download/chengdong1314/19683981
到这里复位和仿真卡在BleInit函数的问题都能够彻底的解决。
这篇关于让SYD8821 SYD8811更好的下载仿真的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!