完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
官方给出的ISP软件(串口烧录软件)FlashLoader Demonstrator不支持stm32l01系列的单片机那么我们怎么使用串口给这个型号的单片机通过串口烧录程序呢?
最近做了一个项目有这方面的需求,所以研究了一下这个方法,在此分享出来给有需要的人。准备工具只需mcuisp(也称flymcu)软件,串口助手 给懒人提供mcuisp软件mcuisp 经过我的试验mcuisp可以给这个单片机编程但是不能擦除这个芯片,后来我发现这个芯片的擦除指令不一样有兴趣的同学可以读一读这个文档AN3155 (USART protocol used in the STM32 bootloader)去度娘搜。 所以我们现在的任务就是想办法擦除这个芯片然后通过mcuisp这个软件下载进去(我的想法就是已经有了的工具知道原理后直接拿来用也无妨),AN3155资料里详细介绍了每个指令的用法,我们主要读擦除指令部分 这个芯片支持Extended Erase Memory Command,但是它不支持这个指令里的高级指令,所以想擦除这个芯片必须用最麻烦的那个步骤。一页一页的进行擦除,我的这个芯片有16k flash每页有128b所以一共有128页需要擦除,如果一条一条的发指令最少需要129条指令发,所以我用Qt写了一个串口上位机帮助我完成这个繁琐的过程。Qt我用的还不是太熟练基本上是还没看到门槛的状态,在这里提供解决思路,如果有想借鉴的话在本帖下面回复我可以把主要代码共享出来。 另外我用的这个芯片支持用户自定义boot选项所以配合这个用着就更爽。选择boot区的代码如下: void BOOTCONF_User() //判断系统从哪启动如果从systemflsh启动更改选项字节使其从 //Flash program memory启动 { HAL_StatusTypeDef status = HAL_OK; uint32_t tmp = 0U, tmp1 = 0U; if (LL_SYSCFG_GetBootMode() == LL_SYSCFG_BOOTMODE_SYSTEMFLASH) { tmp = OB->USER & (~0XE000); tmp |= (1u << 15); tmp1 = (~tmp) << 16; tmp |= tmp1; HAL_FLASH_OB_Unlock(); status = FLASH_WaitForLastOperation(FLASH_TIMEOUT_VALUE); { OB->USER = tmp; FLASH_WaitForLastOperation(FLASH_TIMEOUT_VALUE); } HAL_FLASH_OB_Launch(); HAL_FLASH_OB_Lock(); } } void BOOTCONF_System()//接收到编程指令后怎么触发自己定义,让芯片进入system bootloader { HAL_StatusTypeDef status = HAL_OK; uint32_t tmp = 0U, tmp1 = 0U; tmp = OB->USER | 0X00E000; tmp &= 0X00BFFF; tmp1 = (~tmp) << 16; tmp |= tmp1; HAL_FLASH_OB_Unlock(); FLASH_WaitForLastOperation(FLASH_TIMEOUT_VALUE); { OB->USER = tmp; FLASH_WaitForLastOperation(FLASH_TIMEOUT_VALUE); } HAL_FLASH_OB_Launch(); HAL_FLASH_OB_Lock(); } |
|
|
|
只有小组成员才能发言,加入小组>>
调试STM32H750的FMC总线读写PSRAM遇到的问题求解?
1048 浏览 1 评论
X-NUCLEO-IHM08M1板文档中输出电流为15Arms,15Arms是怎么得出来的呢?
1022 浏览 1 评论
519 浏览 2 评论
STM32F030F4 HSI时钟温度测试过不去是怎么回事?
387 浏览 2 评论
ST25R3916能否对ISO15693的标签芯片进行分区域写密码?
927 浏览 2 评论
1568浏览 9评论
STM32仿真器是选择ST-LINK还是选择J-LINK?各有什么优势啊?
234浏览 4评论
STM32F0_TIM2输出pwm2后OLED变暗或者系统重启是怎么回事?
253浏览 3评论
221浏览 3评论
stm32cubemx生成mdk-arm v4项目文件无法打开是什么原因导致的?
216浏览 3评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-8-9 01:18 , Processed in 0.808845 second(s), Total 79, Slave 62 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号