這個(gè)問(wèn)題我們分兩部分來(lái)說(shuō),一部分是單片機(jī)端是如何實(shí)現(xiàn)的,另一部分是電腦端是如何實(shí)現(xiàn)的,下面我們慢慢BB。
一、單片機(jī)端是如何實(shí)現(xiàn)下載程序的?
要說(shuō)清這個(gè)問(wèn)題,就需要說(shuō)說(shuō)STC單片機(jī)的存儲(chǔ)器,STC單片機(jī)的存儲(chǔ)器包含數(shù)據(jù)存儲(chǔ)器SRAM,程序存儲(chǔ)區(qū)ROM,EEPROM和ISP程序監(jiān)控區(qū),以下以STC15w448s4為例說(shuō)明:
A.數(shù)據(jù)存儲(chǔ)器SRAM:4K大小,內(nèi)部RAM256字節(jié)
B.程序存儲(chǔ)區(qū)ROM:48K大小,今天的重點(diǎn),程序下載后就是存在這部分區(qū)域里了。
C.EEPROM:13K大小,此部分就是類似于24C02這樣的芯片,掉電存儲(chǔ)區(qū),用于保存密碼等一些掉電后不能丟失的數(shù)據(jù)。
D.ISP程序監(jiān)控區(qū):STC官方在芯片出廠前就通過(guò)特殊方式固化了程序在內(nèi)部,我們用戶是沒(méi)法操作和使用本區(qū)域的。
ISP程序監(jiān)控區(qū)的作用:
在ISP監(jiān)控區(qū)里,STC官方出廠芯片的時(shí)候就已經(jīng)燒寫進(jìn)去一段特殊的代碼,我們用戶是沒(méi)法修改和查看的,這里說(shuō)的燒寫也不是我們給單片機(jī)下載程序這樣簡(jiǎn)單的燒寫,是通過(guò)特殊的方式特殊的接口寫進(jìn)特殊的程序,總之不要想著去搞懂它,要懂的接下來(lái)我們慢慢說(shuō)。
STC單片機(jī)在上電的很短一段時(shí)間內(nèi)是不去執(zhí)行我們用戶的程序的,單片機(jī)是首選去執(zhí)行ISP監(jiān)控區(qū)域的代碼,此時(shí)這里面的代碼只干一件事,就是不斷去檢測(cè)P30引腳上的數(shù)據(jù)。
a、如果P30引腳上的數(shù)據(jù)是連續(xù)的合法的下載命令,那ISP監(jiān)控區(qū)域內(nèi)的程序就去擦除程序存儲(chǔ)區(qū)ROM內(nèi)的我們上一次燒寫進(jìn)去的代碼,再把我們當(dāng)前這次需要下載的程序存儲(chǔ)到程序存儲(chǔ)區(qū)ROM內(nèi),最后在復(fù)位PC指針,使得PC=0000H。完成這些后,CPU就不斷的通過(guò)PC指針去讀取我們剛才燒寫進(jìn)去程序存儲(chǔ)區(qū)ROM內(nèi)的代碼來(lái)執(zhí)行,到這里一次完整的程序下載(燒寫)就完成了。
b、如果P30引腳上沒(méi)有連續(xù)的合法的下載命令,那ISP監(jiān)控區(qū)域的程序就去復(fù)位PC指針,使得PC=0000H,CPU就不斷的通過(guò)PC指針去讀取程序存儲(chǔ)區(qū)ROM內(nèi)的代碼來(lái)執(zhí)行。
二、電腦端(STC_ISP軟件端)是如何實(shí)現(xiàn)程序下載的?
如上圖所示,當(dāng)我們點(diǎn)擊STC_ISP軟件中的下載/編程按鈕(上圖中紅圈部分)后,電腦就不斷發(fā)送下載命令到CH 340G,芯片內(nèi)部轉(zhuǎn)換電平后得到標(biāo)準(zhǔn)的串口信號(hào),再發(fā)送給單片機(jī)的P30口。此時(shí),單片機(jī)是不會(huì)執(zhí)行下載程序的,需要我們給單片機(jī)斷電一下,再上電實(shí)現(xiàn)冷啟動(dòng),冷啟動(dòng)后,上面我們說(shuō)到ISP監(jiān)控區(qū)域就起作用了,上面我們說(shuō)了,在單片機(jī)上電的很短一段時(shí)間里,單片機(jī)是去執(zhí)行ISP監(jiān)控區(qū)域的程序的。ISP識(shí)別出此時(shí)單片機(jī)P30引腳上的信號(hào)是電腦發(fā)送的下載命令,那ISP監(jiān)控程序就在單片機(jī)P31引腳上返回一個(gè)信號(hào),信號(hào)再通過(guò)CH340G轉(zhuǎn)換后傳輸?shù)絊TC_ISP軟件,軟件識(shí)別出返回的信號(hào)是單片機(jī)給的,此說(shuō)說(shuō)明電腦端STC_ISP軟件和單片機(jī)之間通過(guò)“密碼”連接成功,也就是下載時(shí)候STC_ISP右側(cè)監(jiān)控區(qū)域里顯示的“握手成功”。接下來(lái)通信就正?;?,STC_ISP不斷的發(fā)送我們要下載的程序到單片機(jī)的P30引腳,單片機(jī)從P31引腳不斷返回“接收正?!?,不斷的這樣重復(fù)下去,直到程序下載完。
程序下載完后,單片機(jī)ISP監(jiān)控區(qū)域代碼還在一直識(shí)別,但是STC_ISP 軟件已經(jīng)不再發(fā)送數(shù)據(jù),此時(shí)單片機(jī)ISP區(qū)域代碼檢測(cè)不到下載命令后,直接使PC復(fù)位,使得PC=0000H,CPU就不斷的從程序存儲(chǔ)區(qū)ROM里讀取程序來(lái)執(zhí)行,此時(shí)我們直觀看到的就是單片機(jī)程序下載成功了,而已單片機(jī)已經(jīng)在執(zhí)行我們的程序,只要程序沒(méi)問(wèn)題,那自然能看到我們想要的效果啦。
下面,簡(jiǎn)單總結(jié)下載程序的全過(guò)程:
1、電腦端點(diǎn)擊“下載”按鈕,STC_ISP 軟件發(fā)送下載命令到單片機(jī)P30引腳,此時(shí)單片機(jī)需要冷啟動(dòng)
2、單片機(jī)冷啟動(dòng)后,P30引腳收到下載命令,再?gòu)腜31引腳返回自身的基本信息,此時(shí)單片機(jī)和STC_ISP已經(jīng)捂手成功
3、STC_ISP發(fā)送程序數(shù)據(jù)到單片機(jī)P30引腳
4,、單片機(jī)接收程序數(shù)據(jù)并保存在程序存儲(chǔ)區(qū)ROM里,并從P31引腳返回“接收成功”信號(hào)到STC_ISP
5、STC_ISP接收到單片機(jī)返回的“接收成功”后,重復(fù)第3步,知道需要下載的程序數(shù)據(jù)發(fā)送完畢
6、程序數(shù)據(jù)發(fā)送完畢后,單片機(jī)P30引腳不再收到下載數(shù)據(jù),過(guò)一小段時(shí)間后,ISP監(jiān)控區(qū)域復(fù)位PC指針,使得PC=0000H,單片機(jī)開始從程序存儲(chǔ)區(qū)ROM里讀取程序來(lái)執(zhí)行。
最后我們來(lái)總結(jié)一下,STC單片機(jī)下載程序的幾個(gè)關(guān)鍵點(diǎn):
1、單片機(jī)要和電腦采用串口方式建立連接
2、電腦端串口要能正常通訊
3、單片機(jī)要能斷電冷啟動(dòng)
4、單片機(jī)要能返回自身的一些基本信息回到電腦端。
-
存儲(chǔ)器
+關(guān)注
關(guān)注
38文章
7529瀏覽量
164372 -
STC單片機(jī)
+關(guān)注
關(guān)注
9文章
222瀏覽量
38275
原文標(biāo)題:STC單片機(jī)程序是如何下載進(jìn)單片機(jī)的?看完還不懂你來(lái)找我
文章出處:【微信號(hào):chuxue_MCU,微信公眾號(hào):?jiǎn)纹瑱C(jī)技術(shù)宅】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論