1. 程式人生 > >使用J-link+J-Flash給STM32晶片燒寫序列號

使用J-link+J-Flash給STM32晶片燒寫序列號

最近專案中,需要為STM32晶片燒寫一個序列號,也就是產品量產時都會遇到的問題
    硬體準備:J-Link 一個,STM32F103C8T6 的開發板子一塊
    軟體準備: Setup_JLink_V600d 版本的J-Flash 
 前期的建立new project, 對Options的Project Setting 的Genneral/ Target Interface/ MCU/Flash的選項卡,不作太多詳細的說明,大家做專案應該會設定。
在最後一個Projection 的選項卡中 Program serial number 

 
Address 指定燒寫的地址   (這裡我們燒寫的地址取 0x0800 F000)
Len  指定燒寫長度,最大4個位元組
Next SN  指定第一次要燒寫的十進位制數,之後自動根據Increment 數值遞增 (十進位制: 123456789,對應的十六進位制為:075BCD15 )
Increment  序列號遞增的間隔 
配置好之後,點選“OK”,設定完畢(只設置一次即可),然後連線目標晶片“Target->Connect”,連線成功,點選“Auto”。
然後再讀出整個Flash 記憶體   Target->Read back-> Entire chip 

可見序列號已經按照要求寫入到指定的地址了。
下一步就是從程式中讀Flash,然後儲存在buff中。
 可以參考如下程式: 
#define  FLASH_ADDR (0x800F000)

uint8_t Read_Flash_ID_Buff[4];void ReadFlashGdata(void)

{    

uint8 p;    uint16 count=0;            

memset(Read_Flash_ID_Buff,0,sizeof(Read_Flash_ID_Buff));        

RCC_HSICmd(ENABLE);            

while(count < 4)  

 {        

p=*(u8 *)(FLASH_ADDR + count*1);   //讀取方法                

Read_Flash_ID_Buff[count]=p;        count++;  

 }