概述
AT32 CAN IAP快速使用方法
使用CAN進(jìn)行IAP升級(jí),此示例使用PC上位軟件(IAP_Programmer.exe)通過(guò)一個(gè)USB轉(zhuǎn)CAN的橋接設(shè)備和目標(biāo)板進(jìn)行通信,IAP Demo和橋接設(shè)備默認(rèn)CAN波特率使用500K。如下是連接示意圖:
- PC通過(guò)USB連接USB to CAN Bridge(使用AT-START實(shí)現(xiàn)一個(gè)轉(zhuǎn)接設(shè)備,代碼參考usb_vcp_bridge_can源代碼)
- USB to CAN Bridge通過(guò)CAN Transceiver連接CAN目標(biāo)板(注意使用CAN必須要使用CAN Transceiver,CANL連接CANL, CANH連接CANH)
圖1.連接示意圖
一、硬件資源
1. USB轉(zhuǎn)CAN橋接板(目前使用一塊AT-START-AT32F403A實(shí)現(xiàn)USB轉(zhuǎn)CAN)1) USB(PA11/PA12)2) CAN(PB8/PB9)3) 指示燈LED2/LED3/LED44) AT-START實(shí)驗(yàn)板2. AT-START-AT32F403A CAN IAP目標(biāo)板1) 指示燈LED2/LED3/LED42) CAN(PB8/PB9)3) AT-START實(shí)驗(yàn)板3. CAN Transceiver轉(zhuǎn)接板1)CAN Transceiver轉(zhuǎn)接板用于USB to CAN Bridge和CAN目標(biāo)板的連接注意:USB轉(zhuǎn)CAN橋接板的波特率和CAN IAP目標(biāo)板波特率要配置一致另外要使用CAN通信,必須外接CAN轉(zhuǎn)換芯片。
二、軟件資源
1) ToolRelease
- IAP_Programmer.exe,PC機(jī)tool,用于演示IAP升級(jí)流程
- IAP_Programmer_V2.x.x, PC tool源代碼
2) SourceCode\utilities
- can_iap_demo,IAP源程序,運(yùn)行LED2閃爍
- usb_vcp_bridge_can,USB轉(zhuǎn)CAN橋接源程序
- can_app_led3_toggle,app1源程序,運(yùn)行時(shí)LED3閃爍
- can_app_led4_toggle,app2源程序,運(yùn)行LED4閃爍
注:示例工程基于keilv5建立,若用戶需要在其他編譯環(huán)境上使用,請(qǐng)參考AT32F403A_407_Firmware_Library_V2.x.x\project\at_start_f403a\templates中各種編譯環(huán)境(例如IAR6/7/8,keil 4/5, eclipse_gcc)進(jìn)行對(duì)應(yīng)修改即可。
IAP demo使用
1) 打開(kāi)can_iap_demo工程源程序,選擇對(duì)應(yīng)MCU型號(hào)的target編譯后下載到實(shí)驗(yàn)板2) 打開(kāi)usb_vcp_bridge_can工程源程序,下載到USB轉(zhuǎn)CAN轉(zhuǎn)接板3) 連接轉(zhuǎn)接板和目標(biāo)板的CANH/CANL4) 將轉(zhuǎn)接板USB接入到PC,可以看到會(huì)有對(duì)應(yīng)的虛擬串口設(shè)備COMxx5) 打開(kāi)IAP_Programmer.exe6) 選擇正確的串口、APP下載地址和bin文檔,點(diǎn)擊Download下載,如下圖7) 觀察LED2/3/4閃爍,LED2閃爍can IAP工作,LED3閃爍-app1工作,LED4閃爍-app2工作圖2. IAP demo上位機(jī)
AT32 CAN IAP程序設(shè)置
地址分布
表1. 地址分布注:bootloader區(qū)域最后一個(gè)扇區(qū),用于存放防止升級(jí)過(guò)程掉電的flag,用戶編譯修改bootloader時(shí),要保證不覆蓋flag的地址。
執(zhí)行流程
IAP分為Bootloader和App兩部分,應(yīng)用在App中執(zhí)行,升級(jí)過(guò)程在bootloader中執(zhí)行。程序執(zhí)行整體流程框圖如下:圖3. 程序執(zhí)行流程
bootloader project設(shè)置
1) Keil設(shè)置圖4. bootloader project中address 1在Keil設(shè)置2) bootloader源程序修改Iap.h文件中圖5. bootloader project中address 2在程序中設(shè)置
app project設(shè)置
IAP demo提供了2個(gè)app程序供測(cè)試用,皆以address 2(0x800 4000)為起始地址。app1 LED3閃爍,app2 LED4閃爍。以app1為例,設(shè)計(jì)步驟如下:1) Keil工程設(shè)置圖6. app project中address 2在Keil設(shè)置2) app1源程序設(shè)置圖7. app project向量表偏移在程序中設(shè)置
3) 編譯生成bin文件通過(guò)User選項(xiàng)卡,設(shè)置編譯后調(diào)用fromelf.exe,根據(jù).axf文件生成.bin文件,用于IAP更新。通過(guò)以上3個(gè)步驟,我們就可以得到一個(gè).bin的APP程序,通過(guò)bootloader程序即可實(shí)現(xiàn)更新。4) 開(kāi)啟debug app code功能如果在設(shè)計(jì)app code過(guò)程中需要對(duì)app project進(jìn)行單獨(dú)調(diào)試,請(qǐng)按照以下操作。a) 先下載bootloader工程b) 再調(diào)試app工程
Bootloader CAN通信協(xié)議
上位機(jī)升級(jí)流程
如下下圖是上位機(jī)升級(jí)流程:
- 獲取設(shè)備信息:包括app起始地址,app flash size大小,sector size大小
- 發(fā)送開(kāi)始升級(jí)命令
- 寫(xiě)存儲(chǔ)器
- 獲取CRC進(jìn)行校驗(yàn)
- 發(fā)送升級(jí)完成命令
- 跳轉(zhuǎn)到APP執(zhí)行
具體命令操作參考命令詳解圖8. 上位機(jī)升級(jí)流程
IAP端下位機(jī)通信處理流程
IAP下位機(jī)端會(huì)通過(guò)接收主機(jī)端發(fā)送的命令做數(shù)據(jù)處理,包括讀寫(xiě)數(shù)據(jù),crc校驗(yàn)等。圖9. IAP端下位機(jī)命令注: ACK: 0x79NACK: 0x1F
升級(jí)命令詳解
本節(jié)主要說(shuō)明CAN IAP每條協(xié)議命令的作用和使用方法,包括主機(jī)端和設(shè)備端對(duì)命令解析的流程。所有命令通過(guò)CAN標(biāo)準(zhǔn)幀的ID來(lái)確定,CAN每一包數(shù)據(jù)最大8字節(jié),例如Get Info命令,此時(shí)CAN標(biāo)準(zhǔn)幀的ID為0。注意:所有命令都使用標(biāo)準(zhǔn)幀數(shù)據(jù)幀來(lái)傳遞如下是命令列表
一、Get Info命令
此命令用于獲取APP信息,包括APP起始地址,app flash size大小,sector size大小主機(jī)端協(xié)議發(fā)送流程:
二、Upgrade Start命令
獲取設(shè)備信息之后,可以發(fā)送此命令開(kāi)始升級(jí),設(shè)備端收到此命令之后會(huì)去刪除一個(gè)app的標(biāo)志,標(biāo)志在開(kāi)始升級(jí)。主機(jī)端協(xié)議發(fā)送流程:
三、Read Mmeory命令
此命令用于讀取app flash數(shù)據(jù)主機(jī)端協(xié)議發(fā)送流程:
四、Write Memory命令
此命令用于寫(xiě)APP數(shù)據(jù)到存儲(chǔ)器,注意每次寫(xiě)入的地址必須sector對(duì)齊(sector大小可通過(guò)GetInfo獲?。?,數(shù)據(jù)的長(zhǎng)度為1個(gè)sector大小或者小于1個(gè)sector。每個(gè)sector的數(shù)據(jù)最好是一次發(fā)完。主機(jī)端協(xié)議發(fā)送流程:
五、Get CRC命令
此命令用于獲取指定地址指定大小數(shù)據(jù)的CRC,地址和大小必須4字節(jié)對(duì)齊主機(jī)端協(xié)議發(fā)送流程:
六、JUMP命令
此命令用于跳轉(zhuǎn)到APP代碼執(zhí)行主機(jī)端協(xié)議發(fā)送流程:
七、Upgrade Finish命令
此命令用于設(shè)置升級(jí)完成標(biāo)志。主機(jī)端協(xié)議發(fā)送流程:
USB轉(zhuǎn)CAN橋接
USB轉(zhuǎn)CAN橋接使用一塊AT32F403A的AT-START開(kāi)發(fā)板實(shí)現(xiàn),USB端實(shí)現(xiàn)一個(gè)虛擬串口設(shè)備,轉(zhuǎn)接板通過(guò)USB與PC上位機(jī)通信,然后通過(guò)CAN與下位機(jī)進(jìn)行通信,實(shí)現(xiàn)USB與CAN數(shù)據(jù)的透?jìng)鞴δ?。注意轉(zhuǎn)接板的CAN波特率與下位機(jī)的CAN波特率要配置相同。
數(shù)據(jù)轉(zhuǎn)發(fā)流程
如下是數(shù)據(jù)轉(zhuǎn)發(fā)流程圖10.數(shù)據(jù)轉(zhuǎn)發(fā)流程
USB CAN數(shù)據(jù)轉(zhuǎn)發(fā)
USB轉(zhuǎn)CAN橋接按照CAN協(xié)議進(jìn)行封裝,封裝格式:標(biāo)準(zhǔn)幀ID(1字節(jié))+幀長(zhǎng)(1字節(jié))+數(shù)據(jù)(數(shù)據(jù)最大8字節(jié))
USB數(shù)據(jù)轉(zhuǎn)到CAN總線:
USB到CAN按照一包USB數(shù)據(jù)轉(zhuǎn)成一幀CAN數(shù)據(jù)。收到一包USB數(shù)據(jù)如:0x01 0x02 0x11 0x220x01:表示標(biāo)準(zhǔn)幀ID0x02:表示數(shù)據(jù)長(zhǎng)度0x11,0x22:表示具體數(shù)據(jù)
轉(zhuǎn)換成CAN幀后:
ID=0x01DLC=0x02DATA0=0x11DATA1=0x22
CAN總線數(shù)據(jù)轉(zhuǎn)到USB:
CAN同樣按照一幀數(shù)據(jù)轉(zhuǎn)換成一包USB數(shù)據(jù):收到一幀CAN數(shù)據(jù):ID=0x02,DLC=0x03,DATA0=0x11,DATA0=0x22,DATA0=0x33
轉(zhuǎn)換成USB包之后:0x02 0x03 0x11,0x22,0x33
0x02:表示標(biāo)準(zhǔn)幀ID0x03:表示數(shù)據(jù)長(zhǎng)度0x11,0x22,0x33:表示具體數(shù)據(jù)
以Write Memory為例寫(xiě)32字節(jié)數(shù)據(jù)到0x08004000
主機(jī)端流程:發(fā)送1:0x31 0x6 0x08 0x00 0x40 0x00 0x00 0x20(ID+長(zhǎng)度+6字節(jié)數(shù)據(jù))接收1:0x31 0x01 0x79(ID+長(zhǎng)度+ACK)發(fā)送2:0x31 0x8 0xAA 0xAA 0xAA 0xAA 0xAA 0xAA 0xAA 0xAA(ID+長(zhǎng)度+8字節(jié)數(shù)據(jù))發(fā)送3:0x31 0x8 0xAA 0xAA 0xAA 0xAA 0xAA 0xAA 0xAA 0xAA(ID+長(zhǎng)度+8字節(jié)數(shù)據(jù))發(fā)送4:0x31 0x8 0xAA 0xAA 0xAA 0xAA 0xAA 0xAA 0xAA 0xAA(ID+長(zhǎng)度+8字節(jié)數(shù)據(jù))發(fā)送5:0x31 0x8 0xAA 0xAA 0xAA 0xAA 0xAA 0xAA 0xAA 0xAA(ID+長(zhǎng)度+8字節(jié)數(shù)據(jù))
-
mcu
+關(guān)注
關(guān)注
146文章
17718瀏覽量
358225 -
IAP
+關(guān)注
關(guān)注
2文章
164瀏覽量
24742 -
雅特力
+關(guān)注
關(guān)注
0文章
177瀏覽量
8400 -
AT32
+關(guān)注
關(guān)注
1文章
120瀏覽量
2498
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
通過(guò)Ymodem創(chuàng)建IAP應(yīng)用程序
在AT32微控制器上創(chuàng)建IAP by USB HID應(yīng)用程序的方法
在AT32微控制器上創(chuàng)建Multi MCU IAP應(yīng)用程序的方法
在AT32微控制器上創(chuàng)建IAP by Ymodem應(yīng)用程序的方法
在AT32微控制器上創(chuàng)建IAP by Kermit應(yīng)用程序的方法
使用CAN的AT32 IAP
雅特力攜高效能AT32 MCU“芯”動(dòng)亮相ICCAD 2020
雅特力攜高性能AT32 MCU精彩亮相全球MCU生態(tài)發(fā)展大會(huì)

AN0001 AT32 IAP 使用 USART

雅特力AT32 MCU實(shí)現(xiàn)高效電機(jī)驅(qū)動(dòng)控制與應(yīng)用

評(píng)論