历史上的今天
返回首页

历史上的今天

今天是: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();

}


推荐阅读

史海拾趣

BURGESS公司的发展小趣事

进入21世纪,BURGESS继续保持其强劲的发展势头。2004年,它成为第一家在纽约拥有工作地的游艇经理公司,这标志着其在美国市场的深入拓展。此外,BURGESS还不断扩大其在全球的业务网络,目前在全球范围内拥有12家办公室和160多名员工,形成了一个庞大的游艇经纪帝国。

Connector City公司的发展小趣事

随着国内市场的饱和,Connector City公司开始寻求海外市场的发展机遇。公司制定了详细的国际化战略,积极开拓海外市场,加强与国外客户的合作与交流。同时,公司还注重本土化运营,根据不同国家和地区的市场需求和文化差异,灵活调整产品设计和营销策略。通过不断拓展海外市场,公司的销售业绩实现了快速增长。

圣邦微电子(Fangtek)公司的发展小趣事

随着国内市场的饱和,Connector City公司开始寻求海外市场的发展机遇。公司制定了详细的国际化战略,积极开拓海外市场,加强与国外客户的合作与交流。同时,公司还注重本土化运营,根据不同国家和地区的市场需求和文化差异,灵活调整产品设计和营销策略。通过不断拓展海外市场,公司的销售业绩实现了快速增长。

谷峰(GOFORD)公司的发展小趣事

随着产品线的不断丰富和技术实力的日益增强,GStek开始积极拓展国内外市场。公司采取多元化的市场策略,针对不同客户群体提供定制化的解决方案。同时,GStek还注重品牌建设,通过参加各类行业展会、举办技术研讨会等方式,加强与业界的交流与合作,提升品牌知名度和影响力。这些努力使得GStek的产品广泛应用于各类电子产品中,包括智能手机、平板电脑、笔记本电脑等移动设备以及家电、工控等领域。

高创科技(gotrend)公司的发展小趣事

随着产品线的不断丰富和技术实力的日益增强,GStek开始积极拓展国内外市场。公司采取多元化的市场策略,针对不同客户群体提供定制化的解决方案。同时,GStek还注重品牌建设,通过参加各类行业展会、举办技术研讨会等方式,加强与业界的交流与合作,提升品牌知名度和影响力。这些努力使得GStek的产品广泛应用于各类电子产品中,包括智能手机、平板电脑、笔记本电脑等移动设备以及家电、工控等领域。

Danaher Corporation公司的发展小趣事

随着全球化趋势的加强,丹纳赫集团开始积极拓展国际市场。通过在全球各地设立研发中心、生产基地和销售网络,丹纳赫集团成功地将产品和服务推向了全球市场。同时,丹纳赫集团还加强了与国际知名企业的合作,共同开发新技术和产品,进一步巩固了其在电子行业中的领先地位。

以上五个故事梗概概述了丹纳赫集团在电子行业中的发展历程和关键节点。如需更详细的信息和故事背景,建议查阅丹纳赫集团的官方资料或相关新闻报道。

问答坊 | AI 解惑

哪里有可以免费下载的ARM 编译平台?

我下了VC2008 Express Codeblocks CBuilder 是否可以编译ARM?…

查看全部问答>

谁能帮我分析一下,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 ...…

查看全部问答>

wince添加3G模块

公司要往wince里添加3G模块,各位高手有什么好的意见,如厂商之类的信息,知道的给些提示,谢谢。…

查看全部问答>

使用Platform Builder 5.0 “Build + sysgen” 一个OS时候出现的一个warning。是不是没补丁没有打

使用Platform   Builder   5.0   “Build   +   sysgen”   一个OS时候出现的一个warning。是不是没补丁没有打上呀?哪位高人指点?   我是最终目的是制作一个支持MP3、MP4 ...…

查看全部问答>

wince启动时不加载资源管理器 怎样加载注册表

如上       研究发现,不启动资源管理器,直接开机运行程序  写注册表   RESET 后上次写的注册表没有成功    求教!…

查看全部问答>

请教版主RTC问题

                                 使用32F101 MCU已经量产快一年了,最近突然发现RTC问题很多,每一百台就有一两台RTC不走,最后测试发现RTC 晶振输 ...…

查看全部问答>

高精度液位控制之AD8221精密仪器放大器

看到大家都把板子画出来了,感觉大家真的太快了,直接就做板子,我这里还要测试下,万一做出来费了就game over了,向大家学习。         By  fxw451   特性: 易于使用采用节省 ...…

查看全部问答>

从0开始学习TI--M3……3

每天坚持学习一下TI--M3。       M3的地址空间是4GB,其中比较有意思的是:片上SRAM的0x20000000--0x200FFFFF和片上外设的0x40000000--0x400FFFFF区,这两部分区域是可位寻址的。前者方便了对硬件I/O密集型的底层程序,后者 ...…

查看全部问答>

智能用电监控、保护系统创意进度帖+采样篇

前面在“智能用电监控、保护系统创意进度帖+按键中断篇”和“智能用电监控、保护系统创意进度帖+定时器篇”都详细介绍了 在Renesas Electronics CubeSuite+编译器中的如何使用Code Generator生成代码。所以在采样篇中只讲解设计采样的Code Generato ...…

查看全部问答>

三态桥是什么

avalon三态桥到底是个什么结构,输入输出是什么…

查看全部问答>