历史上的今天

今天是:2024年08月22日(星期四)

正在发生

2018年08月22日 | stm32l01系列单片机通过串口编程(ISP)

发布者:mlgb999 来源: eefocus关键字:stm32l01系列  单片机  串口编程  ISP 手机看文章 扫描二维码
随时随地手机看文章

官方给出的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();

}


关键字:stm32l01系列  单片机  串口编程  ISP 引用地址:stm32l01系列单片机通过串口编程(ISP)

上一篇:调通STM32的串口ISP的经验
下一篇:stm32j_link与串口下载几个问题

推荐阅读

2018年7月16日,Asyril公司宣布其URCaps插件在Universal Robots+解决方案平台上正式上线。 作为柔性上料系统专家,Asyril以其独创的3轴技术,高端工业视觉系统和精密机器人技术而闻名。其获奖的Asycube系列产品,旨在优化批量零件的表面分布与精密零件的检测,并能适用于各式各样的零件,包括高精度零件以及各种复杂的几何形状零件。 Asyril在Univer...
冠捷(飞利浦)加入WiSA日益成长的会员团队,与LG电子、Compal(东芝)、富士康(夏普)、Bang&Olufsen、峰米和TCL共推业界新标准 无线扬声器和音频协会(WiSA®LLC)是一个由Summit Wireless Technologies创立、由超过60家领先的消费电子品牌组成的行业协会,日前宣布其全球电视成员品牌已扩大至7家,预计获得WiSA Ready™*标识的电视机销量将在2020年...
英国芯片设计公司ARM官方网站8月20宣布,ARM已与美国国防高级研究计划局(DARPA)签订了为期三年的合作协议。图源:eenewseurope这份协议也是美国电子复兴计划(ERI)的一部分。该计划启动于2017年,目的是将产业界和学术界的合作伙伴聚集在一起,促进微电子产业的四个关键领域:开发用于芯片制造的新材料、通过通硅孔垂直整合多个器件、创建芯片的定制应...
三星正在使用户证明已经接种疫苗变得更加容易,所有这些都通过Galaxy智能手机完成。这家科技巨头已经与医疗保健非营利组织Commons Project合作,在Samsung Pay中以数字方式安全存储免疫状态,让用户在进入需要出示COVID-19疫苗注射证明的酒吧或餐馆时,能够顺利进入。  从Google Play商店下载免费的CommonHealth应用程序后,通过该软件的认...

史海拾趣

问答坊 | AI 解惑

紧急求救《基于dsp的语音编解码技术的研究》要用G.711协议的

紧急求救《基于dsp的语音编解码技术的研究》要用G.711协议的谢谢各位大虾了!!!!!!!!!!!!!!!!!!!!!!!…

查看全部问答∨

声控电子门铃

利用本电路作为门铃时,不需在门前安装按钮开关,来客只需叩一下大门,门铃便会发声。电路如图所示。             电路最大的特点就是利用扬声器做振动输入,又做门铃声输出。     &nb ...…

查看全部问答∨

柔软的剃须刀

由于剃须刀有着比刀片大几倍的刀身,携带起来十分不方便,而且刀片还很容易滋生细菌。这款剃须刀展开后和普通的剃须刀差不多大小,但它的刀身是用硅胶材料做成的,可以卷成一团,大大缩小了体积。您在不使用的时候可以把它放到配套的胶囊外壳里,保 ...…

查看全部问答∨

PLC干扰问题解决

故障现象是由PLC控制的生产线或设备常常莫明其妙地停机了,查了许多地方都没能彻底解决。后经认真思考分析,认为是急停信号的问题:因为一般的急停按钮硬件连线是用的常闭点,程序中用的是常开点,所以对电源的稳定性要求高,所以试着将按钮接常开 ...…

查看全部问答∨

【分享】TE6410 上 Android移植过程

本帖最后由 飞凌嵌入式 于 2010-4-29 08:38 编辑  其他TE6410资料请参考 www.witech.com.cn 1.安装linux 环境 安装Ubuntu Linux 系统,从网站上下载操作系统安装光盘映像,地址: http://mirror.lupaworld.com/ubuntu/release ...…

查看全部问答∨

求助苹果系统下网卡/声卡 驱动。 加100分

我是联想ieadpad y430a 下安装 苹果10.5.7系统的,除了网卡和声卡都解决了,那位朋友知道 苹果系统下的下列驱动??分享分享呗。或者其他解决方案也行。先谢谢了! 网卡:Broadcom NetLink BCM5906M PCI-E Fast Ethernet 声卡 :conexant high de ...…

查看全部问答∨

关于NK.NBO的32M问题

我用的是PB5.0,默认生成的nk.nb0是32M,现在想把它容量扩大,修改了WINCE500\\PLATFORM\\At91sam9261ek\\Files下面的config.bib: ;   Name     Start     Size      Typ ...…

查看全部问答∨

欧陆调速器疑惑

我公司用的是2台590P110A直流调速器,在使用3天后,莫名其妙停止输出,且不报警,经我检查模拟输入正常,数字输入也正常,可是速度给定为0%,反馈0%,查看参数正常后,断掉电源,再次上电,一台正常可以工作,另一台还是不行,重新设置参数,保存,开机又正常了.运 ...…

查看全部问答∨

请教EMIF问题

我在用DSK6416做输出, 我用EMDA传输数据 通过EMIF到外部的CE2空间 使用的异步传输 可是再CE2的控制寄存器里面的设置的读写速度都委0了 最高的写的数度只有6倍的EMIF clc(我的EMIF是125MHz的时钟,那么向外写数据的周期是 6×8ns) 不符合 ...…

查看全部问答∨

提个建议----为什么不能转帖啊?

提个建议----咱们这个论坛为什么不能转帖啊? 有时候看到好的帖子想收藏,只能点击 收藏 ,为啥不能转帖啊? 要是能转帖,转到自己的名下会更好吧。 个人建议,仅供参考。…

查看全部问答∨
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved