日本黄色一级经典视频|伊人久久精品视频|亚洲黄色色周成人视频九九九|av免费网址黄色小短片|黄色Av无码亚洲成年人|亚洲1区2区3区无码|真人黄片免费观看|无码一级小说欧美日免费三级|日韩中文字幕91在线看|精品久久久无码中文字幕边打电话

當(dāng)前位置:首頁 > 芯聞號(hào) > 充電吧
[導(dǎo)讀]?? STM32在芯片生產(chǎn)過程中內(nèi)嵌了一段引導(dǎo)程序,其作用就是通過串口將程序下載到Flash中,為以后的軟件更新提供了極大的便利,用戶不需要利用仿真口進(jìn)行下載程序,從而極大的提高了工作效率。 STM3

??

STM32在芯片生產(chǎn)過程中內(nèi)嵌了一段引導(dǎo)程序,其作用就是通過串口將程序下載到Flash中,為以后的軟件更新提供了極大的便利,用戶不需要利用仿真口進(jìn)行下載程序,從而極大的提高了工作效率。

STM32復(fù)位之后,如果檢測(cè)到Boot1引腳為低電平,boot0引腳為高電平,芯片就執(zhí)行內(nèi)部固話的ISP引導(dǎo)程序,接收來自上位機(jī)的命令和數(shù)據(jù)。整個(gè)燒錄過程如下圖所示:

?

ISP的過程:

1.芯片復(fù)位

在給STM32復(fù)位之前,首先要確定BOOT0,BOOT1引腳的狀態(tài).通過各種方式,先讓BOOT0處于高電平狀態(tài),BOOT1處于低電平狀態(tài),然后在RST腳上產(chǎn)生一個(gè)負(fù)脈沖,STM32就能進(jìn)入ISP狀態(tài).注意,復(fù)位之后,一定要延時(shí)一定的時(shí)間,讓ISP程序穩(wěn)定,才能發(fā)送指令和數(shù)據(jù).

2.芯片連接

?復(fù)位后,ISP程序已經(jīng)處于接受連接的狀態(tài),電腦軟件串口設(shè)置成1200~115200波特率,偶校驗(yàn),8位數(shù)據(jù)位,1位停止位,然后發(fā)送一個(gè)0x7f,等待STM32回復(fù)。STM32的ISP程序利用這個(gè)0x7f來測(cè)試波特率,如果收到了0X79,表示連接成功了,可以進(jìn)入下一步操作;否則,必須檢測(cè)BOOT0,BOOT1引腳,并重新復(fù)位STM32.

dbyte(0) = &H7F
??? Call SendBinData(dbyte, 1, 1)??????? '等待接收79
??? Lab.Caption = "連接芯片成功........" + vbCrLf

?ReDim dbyte(1)
??? dbyte(0) = &H0
??? dbyte(1) = &HFF
??? Call SendBinData(dbyte, 2, 15)?????? '等待接收79
??? For i = 0 To 14
??????? str = str & Right("00" & Hex(Recvbuff(i)), 2) & " "
??? Next
??? Textmsg1.Text = str
??? Lab.Caption = Lab.Caption + "讀取芯片版本成功........" + vbCrLf + "當(dāng)前版本號(hào)為:" + Mid(str, 7, 2) + vbCrLf

?3.讀取ID版本號(hào)

發(fā)送0x020xFD.命令發(fā)送之后,需要等待STM32 ISP程序回復(fù),如果接收到0x79,讀取成功。

dbyte(0) = &H2
??? dbyte(1) = &HFD
??? Call SendBinData(dbyte, 2, 5)?????? '等待接收79
??? For i = 0 To 4
??????? str = str & Right("00" & Hex(Recvbuff(i)), 2) & " "
??? Next
??? Textmsg2.Text = str
??? Lab.Caption = Lab.Caption + "讀取寄存器成功........" + vbCrLf + "當(dāng)前寄存器版本號(hào)為:" + Mid(str, 7, 5) + vbCrLf
??

?4.擦除芯片

?發(fā)送一個(gè)雙字節(jié)命令0x44+0xBB,讓芯片執(zhí)行擦除動(dòng)作,等待回復(fù)0x79,然后再發(fā)送0xFFFF+0x00命令,讓芯片招待全片擦除.如果接收到0x79,表明全片擦成功了!


?5.燒錄程序

?全片擦除之后,就可以開始燒錄程序了.首先發(fā)送雙字節(jié)指令0x31+0xCE回復(fù)0x79,則繼續(xù)用多字節(jié)命令(5個(gè)字節(jié))發(fā)送一個(gè)32位的地址,此地址就是等待寫入數(shù)據(jù)的地址,注意4個(gè)字節(jié)對(duì)齊.收到回復(fù)0x79之后,就可以發(fā)送N個(gè)字節(jié)數(shù)據(jù)了(注意N最大為256).重復(fù)以下過程,直到把所有代碼發(fā)送出去

?6.讀鎖定

?燒錄完畢之后,為了防止程序被讀出,可以設(shè)置讀保護(hù).發(fā)送雙字節(jié)命令0x82,~0x82,先行回復(fù)0x79,再等待一次0x79,回復(fù)成功之后,表明芯片已經(jīng)被讀保護(hù)了.

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除( 郵箱:macysun@21ic.com )。
換一批
延伸閱讀
關(guān)閉