STM32 量产时自动写入序列号

前言
通常来说,如果我们要给批量生产的产品配置唯一的ID的话,是可以读取STM32芯片内部的UUID来完成的。但是,这样做有一个坏处,比如我经手的一个项目,客户要求每一个产品上贴上一个含有该产品ID的二维码。又由于直接打印的二维码如果表面不覆膜时间久了以后容易淡化甚至消失,所以二维码只能请印刷厂提前定制。在这种前提下,我们就只能给每一个芯片的FLASH中的制定地址配置一个DeviceID(比如,0000001-0000200这样200个设备ID)。关键在于,怎么将这个ID便捷的写入单片机?我之前的做法是串口配置。但是每个设备上电配置,重启,确认,这个步骤总共耗费的时间约1分钟,简而言之就是很慢,很费时间。

幸运的是我现在找到了两种新的方法来避免以上复杂的操作!

测试环境

单片机:STM32F103C8T6 (Flash 64K)
操作系统:Windows 7 (无关紧要)
软件及烧写器:

  1. J-Flash 和 J-Link
  2. ST-VP 和 ST-Link

I. 利用J-Flash软件在写入程序时同时写入序列号

  1. 安装J-Flash并安装J-Link驱动
    (略)

  2. 运行J-Flash


    打开J-Flash.jpeg

    开始 -> SEGGER -> J-Flash, 我这里安装了两个版本的J-Flash所以会有两个图标,推荐使用V6.20b及以后版本,理由是对比了V5.12a我发现同一个HEX烧写速度新版本的软件快一倍多。

  3. 启动后可以看到默认的界面


    Welcome to J-Flash.JPEG

    这时候选择 Create a new Project,再点击 Start J-Flash。

  4. 设置新项目的属性


    Create New Project.png

Target Interface 选择 SWD。
Speed后期可以修改,暂时选择4000kHz。

点击第一行右侧的"..."按钮选择设备,会出现设备选择窗口


Select device.jpg
  1. 接下来进入Project settings


    Enter Project settings.jpg

    Production settings.png

注意:Flash中存储SN号的Adress,必须是没有存储有代码的,且在芯片的内存范围之内的。
设置完成后点击,应用 & 确定。

  1. 现在我们打开一个Hex文件再看下


    第一次打开的hex末尾.jpeg

    按键盘上的F7按钮执行一次烧写操作以后,再看


    烧写一次以后.jpg

可以看到在0x800F0000已经有SN的二进制信息01000000,这是上一次烧写之前生成的。
而我们从LOG中可以看出整个烧录加写入序列号的时间只有1.915 sec,也就是说,写入序列号的时间几乎可以忽略不计!!

II. 利用ST-VP软件在写入程序时同时写入序列号

请参考:http://blog.csdn.net/grant_jx/article/details/4573945
因为手头没有ST-Link所以没有测试。

两种方法的对比

ST-VP有自动烧写模式,不需要点击键盘的F7可以单手操作。但是方法II的烧写速度相比于J-Link要慢很多。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • ¥开启¥ 【iAPP实现进入界面执行逐一显】 〖2017-08-25 15:22:14〗 《//首先开一个线程,因...
    小菜c阅读 6,497评论 0 17
  • JAVA序列化机制的深入研究 对象序列化的最主要的用处就是在传递,和保存对象(object)的时候,保证对象的完整...
    时待吾阅读 10,907评论 0 24
  • 咨询师生态群---理解这个概念是理解本篇文章想要阐述观点的基础。 我们这个社会按照不同的需求将其成员划分为各种群体...
    龙隐阅读 1,302评论 0 1
  • 本章作者主要讲述了高斯分布和曼德尔布罗特分布的区别。 1.模型描述 高斯曲线分布常见于概率统计,两头低,中间高,左...
    Aero小白阅读 722评论 5 1
  • 《西厢记》里有句云:“月移花影动”,用在形容我们那年代的情感上非常恰当。月光是静默的深深的思念,思念的不是花,是花...
    薄阴天气阅读 162评论 0 0