<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 手機與無(wú)線(xiàn)通信 > 設計應用 > 在遠程通信中實(shí)現89LPC932的ISP功能

在遠程通信中實(shí)現89LPC932的ISP功能

作者: 時(shí)間:2006-08-14 來(lái)源:網(wǎng)絡(luò ) 收藏
早期單片機應用軟件開(kāi)發(fā)完成以后,是通過(guò)相應的編程器將程序燒寫(xiě)入單片機的ROM或EPROM里,這樣每一次擦寫(xiě)程序都需要將芯片從電路板上拆卸下來(lái),不利于研制開(kāi)發(fā),對于日后的產(chǎn)品軟件升級也非常不方便。隨著(zhù)新一代單片機的出現,具有的芯片得到越來(lái)越多嵌入式系統開(kāi)發(fā)工程師的青睞,的使用方法也越來(lái)越多,飛利浦公司的是一款較早推出的高性能處理器。

(In-System Programming,在系統編程)是指電路板上的空白器件可以編程寫(xiě)入最終用戶(hù)代碼,而不需要從電路板上取下器件,已經(jīng)編程的器件也可以用ISP方式擦除或再編程。

用反匯編軟件將中Boot ROM源代碼(機器碼)反匯編為ASM文件,分析其數據處理與控制,就能明白ISP的具體方法,并修改使其能夠為我們所用,在RS485網(wǎng)絡(luò )中ISP功能,從而在某些特定環(huán)境下依然能夠穩定工作。

1 對Boot ROM中部分代碼的分析
在這里只針對部分進(jìn)行簡(jiǎn)要闡述。

1.1 自動(dòng)波特率的確定與校驗
上位機按照自身的波特率,向下位機發(fā)送一個(gè)大寫(xiě)的英文字符“U”,ASClI碼為55H,二進(jìn)制為“01010101B”,也就是一組“O”,“1”相間的數據。下位機收到數據,計算出1位數據的傳輸時(shí)間(2個(gè)“1”之間的時(shí)間間隔),則所對應的通信波特率就可以計算出來(lái),下面是匯編語(yǔ)言程序:


EXECHO.
RET ;返回

計算出波特率后,調整串口,再收發(fā)一個(gè)字節,將得到的數與U的ASCII碼相對比。如果相等,程序繼續執行;如果不相等,程序循環(huán)等待。從這里可以看出,為保證通信成功,上位機至少要向下位機發(fā)送2個(gè)“U”。

1.2 通信報的內容

通信建立后,就可以接收各種命令,并進(jìn)行校驗和的比較,判斷本次通信是否成功以及回傳相應的數據。匯編語(yǔ)言程序如下:


在系統穩定、工作狀態(tài)正常時(shí),Boot ROM中ISP程序接收、發(fā)送的數據主要就是這些,其他異常處理部分不再贅述。

2 通信網(wǎng)絡(luò )的使用問(wèn)題
當在RS485通信網(wǎng)絡(luò )中(上位機與下位機一對一情況下)想使用的ISP功能時(shí),發(fā)現直接使用應用軟件“Philips ISP下載器”會(huì )提示串口通信失敗。利用“串口調試器SSCOM”調試發(fā)現,單字節通信正常,多字節通信不正常,分析程序發(fā)現問(wèn)題出現在通信轉換模式上。89LPC932的Boot ROM中,ISP程序使用RS232標準工作,是全雙工工作模式;而通信網(wǎng)絡(luò )中使用RS485標準工作,為半雙工工作模式,兩者混用當然會(huì )出現問(wèn)題。

知道問(wèn)題所在,程序修改起來(lái)就方便多了。首先,對于上位機發(fā)來(lái)的指令,不再采用收1個(gè)字節回傳1個(gè)字節的方法,而是先將控制命令全部接收下來(lái),再分析處理。然后,把所需數據發(fā)送出去,將整個(gè)工作過(guò)程轉為半雙工形式,修改后的通信報PROCESS部分程序如下:


需要注意的是:在子程序ECHO中,回傳1個(gè)字節那一步要取消掉,這是改為半雙工的關(guān)鍵。另外,這里所談到的只是針對點(diǎn)對點(diǎn)通信,如果網(wǎng)絡(luò )中有多個(gè)下位機共存,那么上位機在發(fā)送命令時(shí),需要注意所指定下位機的軟、硬地址問(wèn)題。

3 結論
通過(guò)實(shí)驗證明,該方法簡(jiǎn)單有效,能夠在原有Boot ROM ISP程序基礎上將其成功地移植到遠程RS485通信網(wǎng)絡(luò )中。全雙工工作模式改為半雙工工作模式,操作簡(jiǎn)單,能夠保證通信正常,并能完全利用原有的多種ISP下載器,減少了開(kāi)發(fā)成本,這為飛利浦89LPC932Flash單片機的應用提供了一個(gè)新穎的使用方法。



評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>