历史上的今天
今天是:2024年08月22日(星期四)
2018年08月22日 | stm32l01系列单片机通过串口编程(ISP)
2018-08-22 来源:eefocus
官方给出的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();
}
上一篇:调通STM32的串口ISP的经验
史海拾趣
|
谁能帮我分析一下,u-boot下载到S3C开发板上,串口没有什么信息 我下载的地址是0x30000000 有公司提供的可以用没有什么问题 Hit any key to stop autoboot: 0 Booting Linux ... NAND read: device 0 offset 0x0, size 0x200000 reading NAND page at offset 0x0 failed Could not read entire i ...… 查看全部问答> |
|
使用Platform Builder 5.0 “Build + sysgen” 一个OS时候出现的一个warning。是不是没补丁没有打 使用Platform Builder 5.0 “Build + sysgen” 一个OS时候出现的一个warning。是不是没补丁没有打上呀?哪位高人指点? 我是最终目的是制作一个支持MP3、MP4 ...… 查看全部问答> |
|
看到大家都把板子画出来了,感觉大家真的太快了,直接就做板子,我这里还要测试下,万一做出来费了就game over了,向大家学习。 By fxw451 特性: 易于使用采用节省 ...… 查看全部问答> |
|
每天坚持学习一下TI--M3。 M3的地址空间是4GB,其中比较有意思的是:片上SRAM的0x20000000--0x200FFFFF和片上外设的0x40000000--0x400FFFFF区,这两部分区域是可位寻址的。前者方便了对硬件I/O密集型的底层程序,后者 ...… 查看全部问答> |
|
前面在“智能用电监控、保护系统创意进度帖+按键中断篇”和“智能用电监控、保护系统创意进度帖+定时器篇”都详细介绍了 在Renesas Electronics CubeSuite+编译器中的如何使用Code Generator生成代码。所以在采样篇中只讲解设计采样的Code Generato ...… 查看全部问答> |




