新聞中心

        EEPW首頁 > 手機與無線通信 > 設計應用 > 在遠程通信中實現89LPC932的ISP功能

        在遠程通信中實現89LPC932的ISP功能

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

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

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

        1 對Boot ROM中部分代碼的分析
        在這里只針對部分進行簡要闡述。

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


        EXECHO.
        RET ;返回

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

        1.2 通信報的內容

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


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

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

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


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

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



        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 怀宁县| 遵化市| 海门市| 赤壁市| 习水县| 乌鲁木齐县| 泗洪县| 平乡县| 武宁县| 孝昌县| 崇左市| 钟山县| 区。| 莎车县| 石林| 仁寿县| 瓮安县| 莒南县| 襄樊市| 阜南县| 双江| 东莞市| 翁牛特旗| 称多县| 丹江口市| 张家口市| 疏勒县| 永安市| 澎湖县| 炎陵县| 额敏县| 满洲里市| 宜良县| 明溪县| 柳江县| 女性| 富裕县| 通许县| 通城县| 增城市| 巫山县|