當(dāng)前位置:首頁 > 單片機 > 單片機
[導(dǎo)讀]詳細(xì)說明利用并口模擬I2C總線協(xié)議,實現(xiàn)Myson MTV230芯片的在線編程(ISP)過程,以及利用PC機的串口通信實現(xiàn)Winbond W78E516B的在線編程(ISP)過程;闡述PC機的串口與并口在單片機開發(fā)中的應(yīng)用。

摘要:詳細(xì)說明利用并口模擬I2C總線協(xié)議,實現(xiàn)Myson MTV230芯片的在線編程(ISP)過程,以及利用PC機的串口通信實現(xiàn)Winbond W78E516B的在線編程(ISP)過程;闡述PC機的串口與并口在單片機開發(fā)中的應(yīng)用。


關(guān)鍵詞:并口編程 串口通信 在線編程 ISP MTV230 W78E516B

引 言

1 在線編程簡介

  51內(nèi)核的單片機在線編程模式一般分為兩大類。一類是使用JTAG協(xié)議的在線編程模式。這類模式一般由廠家提供在線編程工具,使用方便。使用這一類模式的單片機價格往往較高,使用的廠商也不多,故不在本文的討論之列。另一類在線編程模式是使用一條特殊的指令,使單片機進(jìn)入在線編程模式。在進(jìn)入在線編程模式后,要自己控制對單片機的擦除寫入邏輯。這一類模式又可細(xì)分為兩種不同的模式:一是進(jìn)入在線編程模式后,單片機只是提供一個接口,不再運行用戶的程序,擦寫邏輯全由上位機(PC)提供,如以下要討論的MTV230就屬于這種模式;另一類是進(jìn)入在線編程模式以后,芯片會運行在某一區(qū)域的用戶編寫的程序,芯片的編程邏輯都由芯片中這段程序控制,上位機(PC)只是作為單片機的一個數(shù)據(jù)源,向單片機傳輸要擦寫的數(shù)據(jù),如以下要討論的W78E516B。

2 利用并口對MTV230在線編程的實現(xiàn)

2.1 MTV230簡介

  MTV230是由Myson公司出品的一塊集成OSD功能的基于51內(nèi)核的芯片。它使用12MHz晶振時可以設(shè)置為倍頻工作,同時還集成了4路A/D和4路PWM DAC。其中最具競爭力的便是它使用了Flash OSD字庫。與一般的OSD芯片不同,它的字庫不是掩膜在芯片中,用戶可以自己定制。該款芯片可以滿足視頻應(yīng)用中的控制需求,因而被廣泛應(yīng)用于視頻類產(chǎn)品中。

2.2 MTV230在線編程模式的進(jìn)入

  要使MTV230具有在線編程的功能,可以添加一段程序在主應(yīng)用程序中。該程序用來響應(yīng)特定的單片機狀態(tài),如某一特定引腳的電平變化,或是串口接收到特定的字符以確定是否要進(jìn)入在線編程模式。在執(zhí)行以下程序后,MTV230可以進(jìn)入在線編程模式[1]:

① 清看門狗,以防止在編程期間單片機被復(fù)位;

② 單片機的在線編程模式是在空閑狀態(tài)(idle)下進(jìn)行的,所以要關(guān)閉所有中斷,防止單片機被喚醒;

③ 由于MTV230在線編程時是作為I2C的從設(shè)備,因而要配置單片機的I2C從地址;

④ 向ISPEN寫入0x93,使能在線編程功能;

⑤ 進(jìn)入51的空閑模式,在線編程開始。

具體程序如下:
WDT=0; //1
IE=0; //2
ISPSLV=0x7C; //3
ISPEN=0x93; //4
PCON=0x01; //5

   以上程序中1~5與上述說明對應(yīng)。以上將I2C地址設(shè)置為0x7C。值得注意的是,設(shè)置I2C從地址時,最低兩位無效[1]。執(zhí)行完以上程序,單片機已經(jīng)變?yōu)橐粋€I2C從設(shè)備,將I2C中SCL與芯片的15腳相連,SDA與芯片的16腳相連,就可以用I2C協(xié)議,按一定的命令格式對芯片進(jìn)行在線編程。命令格式詳見參考文獻(xiàn)[1],在此不再贅述。

2.3 PC機I2C接口的實現(xiàn)

  對MTV230進(jìn)行在線編程,就要實現(xiàn)I2C通信協(xié)議。作為對MTV230進(jìn)行編程的上位機PC來說,實現(xiàn)I2C有三種方法:

① 使用串口與單片機通信,再由單片機模擬I2C協(xié)議,成本高,I2C速度視使用的單片機而定;

② 對計算機的并口編程,模擬I2C協(xié)議,成本低,I2C速度一般;

③ 使用USB接口實現(xiàn)I2C協(xié)議,成本高,I2C速度快市場上可以買到。

  由于MTV230進(jìn)行編程時,I2C時鐘速度最高為140kHz,速度要求不高,同時考慮到成本,決定使用方案②。

2.4 并口I2C硬件的實現(xiàn)

  由于并口的每個引腳都是單向的,只能單向輸出或者單向輸入;而I2C又是一個雙向協(xié)議,SDA與SCL都要求既能輸入又能輸出(有時要獲取SCL當(dāng)前狀態(tài)),所以,SDA與SCL要分別各由一個輸出引腳與一個輸入引腳構(gòu)成。為了增加并口的驅(qū)動能力與可靠性,設(shè)計電路如圖1所示。其中并口的2、12引腳構(gòu)成SDA腳,并口的3、10引腳構(gòu)成SCL腳。
       
2.5 并口I2C軟件的實現(xiàn)

  在Win98中對并口的編程非常簡單,通過在VC中內(nèi)嵌匯編,使用IN與OUT指令訪問與并口相對應(yīng)的端口,設(shè)置相對應(yīng)端口的值中的位就可以控制相應(yīng)并口引腳的高低電平值。

例如:要將計算機并口1的第2引腳先置高再置低,匯編語言可以這樣寫:
MOV DX , 0x378 ;設(shè)置端口地址
MOV AL , 1 ;將待寫入的位0的值寫入AL中
OUT DX , AL ;將值送到相應(yīng)端口
MOV AL , 0
OUT DX , AL

  但在Win2000/XP中,由于系統(tǒng)加強了對硬件設(shè)備的保護(hù),假如在程序中直接用IN與OUT指令訪問并口,則會引發(fā)系統(tǒng)的非法操作;而并口訪問又不像串口,直接可以使用Windows API函數(shù),因而就必須使用驅(qū)動程序。可以到www.sstnet.com網(wǎng)站上去下載DriverLINX Port I/O Driver并口驅(qū)動程序。該程序可以免費復(fù)制與分發(fā)。有了這個驅(qū)動程序,在Win2000/XP下編寫并口程序就十分方便。安裝該驅(qū)動程序后,在程序中包含相應(yīng)的dlportio.h與dlportio.lib后就可以用DlPortReadPortUchar(IN ULONG Port)來讀取端口的值(相當(dāng)于匯編中的IN指令),用DlPortWritePortUchar(IN ULONG Port,IN UCHAR Value)來向一個端口寫一個特定的值(相當(dāng)于匯編中的OUT指令)。利用改變端口值中的一個位的值,可以使相應(yīng)并口引腳輸出高低電平,從而可以用其來模擬I2C協(xié)議,實現(xiàn)并口與單片機間的I2C通信。關(guān)于I2C協(xié)議,網(wǎng)上有很多資料,在此不再贅述。

2.6 程序說明

  如前文所述,MTV230在進(jìn)入在線編程模式后,就相當(dāng)于一個I2C從設(shè)備,編程邏輯全都由在PC上運行的程序來實現(xiàn)。該程序采用VC6.0編寫。編程程序的主界面如圖2所示,主要模塊如表1所列。由于用并口模擬I2C對單片機編程,會使該線程暫時處在阻塞狀態(tài),假如在主線程(UI)中實現(xiàn)該過程,則在對芯片編程時,程序的主界面就無法響應(yīng)用戶退出命令,所以采用了多線程程序結(jié)構(gòu),在一個工作線程實現(xiàn)該過程,使用戶可以隨時退出編程過程。
          
  表1所列的頭三個類采用了層次設(shè)計結(jié)構(gòu):上層類調(diào)用下層類,下層類為上層類提供接口,這樣設(shè)計保證了代碼的最大可重用性。舉例來說,假如有另一芯片同樣是使用I2C接口進(jìn)行在線編程,則只要重寫MTVISP這個芯片的在線編程協(xié)議類就可以了;如果使用前面所述的并口實現(xiàn)方案1或3,只要重寫最底層的Parallel類便可。
       
  程序工作線程的大致流程如圖3所示。
        
  程序的特色:

① 可以自己設(shè)置I2C速度的高低,模擬I2C的并口地址,以及使用并口的引腳。

② 可以選擇簡單校驗和完全校驗,即對編程后的芯片是進(jìn)行內(nèi)部校驗寄存器值的簡單校驗,還是將
芯片中的內(nèi)容全部讀出與編程文件進(jìn)行比較的完全校驗。

③ 可以對芯片內(nèi)的程序區(qū)、OSD區(qū)進(jìn)行編程,還可以讀出這兩區(qū)的數(shù)據(jù)(只有對可以設(shè)定進(jìn)入在線編 程模式的程序才可以)。

④ 進(jìn)行燒寫的文件支持二進(jìn)制文件格式(*.bin)與Intel的Hex文件格式(*.hex)。

3 利用串口對W78E516B在線編程的實現(xiàn)

3.1 W78E516B簡介

  W78E516B是由Winbound公司出品的基于52內(nèi)核的高性能芯片,外部晶振可以達(dá)到40MHz,內(nèi)部具有64KB的程序區(qū)與4KB的引導(dǎo)程序區(qū),以及256B的RAM區(qū)和256B的AUX-RAM區(qū)。AUX-RAM區(qū)相當(dāng)于外部存儲區(qū),進(jìn)行寄存器設(shè)置后,用MOVX指令進(jìn)行訪問。在Keil編譯器中,進(jìn)行相應(yīng)的設(shè)置便可使用pdata類型變量訪問。

3.2 W78E516B在線編程模式的進(jìn)入

  W78E516B在線編程模式的進(jìn)入可以分為兩種模式:一種為軟件模式,另一種為硬件模式。當(dāng)芯片進(jìn)入在線編程模式后,芯片會從現(xiàn)在的64KB程序區(qū)跳轉(zhuǎn)到4KB的引導(dǎo)區(qū)的0x00地址處去執(zhí)行程序。如前文所述,該類型芯片的在線編程邏輯都是由在這4KB引導(dǎo)區(qū)中的程序決定的,而上位機(PC)只是為在線編程提供一個數(shù)據(jù)源。

(1)軟件進(jìn)入模式

① 向CHPERN寄存器依此寫入0x87,0x59開啟CHPCON寄存器的寫模式。

② 關(guān)閉中斷。

③ 向CHPCON寫入0x03表示進(jìn)行程序區(qū)編程。

④ 向CHPCRN寫入0x00關(guān)閉CHPCON寄存器寫模式。

⑤ 設(shè)置好定時器為延時12μs引發(fā)中斷。

⑥ 將單片機轉(zhuǎn)入空閑模式,開啟中斷。
例如:將以下程序嵌入主循環(huán)中,當(dāng)串口收到字符“A”時便進(jìn)入在線編程模式:
if(B_Temp==‘A’{//B_Temp中存放從串口接收到的數(shù)
TR0=0; //停止定時器
TH0=TL0=256-250; //設(shè)置定時器定時值
CHPENR = 0x87; //開啟CHPCON寫模式
CHPENR = 0x59;
CHPCON|=0x03; //開啟編程功能
CHPENR=0x00; //關(guān)閉CHPCON寫模式
TR0=1; //開啟定時器
PCON=0x01; //轉(zhuǎn)入空閑模式
}

(2)硬件進(jìn)入模式

  如表2所列,將相應(yīng)引腳設(shè)置為相應(yīng)電平,在進(jìn)行復(fù)位以后也可進(jìn)入在線編程模式。值的注意的是,在芯片正常工作時應(yīng)避免誤入在線編程模式,否則后果不堪設(shè)想。表2中L代表低電平,X代表任意電平。
              
3.3 W78E516B在線編程的實現(xiàn)

(1)單片機引導(dǎo)區(qū)程序

  W78E516B在線編程邏輯主要在這部分程序中實現(xiàn)。在參考文獻(xiàn)[2]中的最后有一個示例程序,它是從外部的SRAM中讀取數(shù)據(jù)對64KB程序區(qū)進(jìn)行編程。將其改寫一下,變?yōu)閺拇谧x入數(shù)據(jù)。對程序區(qū)進(jìn)行更新,大致流程與示例程序相同,代碼也大致相同。有興趣的朋友可以自行閱讀文獻(xiàn)[2]中的程序源文件,在此只列出關(guān)鍵的更改處:
;使用24MHz晶振
;使用WAVE編譯程序
;其中R3存有待寫入數(shù)據(jù)字節(jié)數(shù)-1的高16位
;其中R4存有待寫入數(shù)據(jù)字節(jié)數(shù)-1的低16位
JMP PROG_D_64K
PADJUEST:
INC R2 ;將低位地址增加1
CJNE R2,#00H,PROG_D_64K
INC R1 ;低位進(jìn)位時將高位增加1
MOV SFRAH,R1 ;改變高位地址
PROG_D_64K:
MOV SFRAL,R2 ;將低位地址放入
JNB RI,$ ;從串口接收一個待寫入的字節(jié)
MOV A,SBUF
CLR RI
MOV SFRFD,A ;將待寫入的值放入
MOV TCON,#10H ;開啟定時器
MOV PCON,#01H ;CPU進(jìn)入IDLE狀態(tài)(進(jìn)行編程)
CLR C ; 比較R3、R4,看是否寫入完成
MOV A,R4
SUBB A,R2
JNZ PADJUEST
CLR C
MOV A,R3
SUBB A,R1
JNZ PADJUEST

(2)PC機程序

  PC機程序為單片機提供一個數(shù)據(jù)源。該數(shù)據(jù)是通過PC機的串口進(jìn)行數(shù)據(jù)傳輸?shù)?。程序由VC6.0編寫,串口通信使用的是VC自帶的串口控件MSCOMM。由于MSCOMM的接收數(shù)據(jù)是以消息形式,同時在該程序中接收的數(shù)據(jù)量很小,而發(fā)送數(shù)據(jù)為阻塞模式,所以新開一個工作線程用于發(fā)送數(shù)據(jù),而接收數(shù)據(jù)與主線程合并。程序整體采用狀態(tài)機模式。單片機進(jìn)行擦除、編程、校驗等各個狀態(tài)時,都通過串口向PC機發(fā)送狀態(tài)字,PC機通過接收狀態(tài)字來決定單片機現(xiàn)在的工作狀態(tài),并決定要向單片機提供的數(shù)據(jù)。同時主線程中有一定時器,假如在特定時間內(nèi)單片機無應(yīng)答,或應(yīng)答有誤,則報錯,停止單片機的編程過程。值得注意的是,由于使用了MSCOMM控件,在未裝VC6.0的機器上運行該程序要將源文件SYSTEM目錄中的三個文件拷貝到system32系統(tǒng)目錄下。程序主界面如圖4所示。PC機與單片機通信的工作流程如圖5所示。
             
         
程序特色:
① 可以設(shè)定使用的串口與通信的波特率。(與其相應(yīng)的4KB引導(dǎo)區(qū)中的程序也要相應(yīng)修改)。
② 可以設(shè)定使單片機進(jìn)入在線編程模式的字符命令。
③ 進(jìn)行燒寫的文件支持二進(jìn)制文件格式(*.bin)與Intel的Hex文件格式(*.hex)。

4 結(jié) 論

  使用并口模擬I2C程序可以方便地對板上的MTV230芯片進(jìn)行在線編程,使用串口為W78E516B提供數(shù)據(jù)源也可方便地對其進(jìn)行編程,兩者均經(jīng)過實踐檢驗,程序完全達(dá)到預(yù)期目的。使用芯片的在線編程技術(shù),方便了芯片程序的更新,降低了產(chǎn)品的維護(hù)成本。

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

9月2日消息,不造車的華為或?qū)⒋呱龈蟮莫毥谦F公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

加利福尼亞州圣克拉拉縣2024年8月30日 /美通社/ -- 數(shù)字化轉(zhuǎn)型技術(shù)解決方案公司Trianz今天宣布,該公司與Amazon Web Services (AWS)簽訂了...

關(guān)鍵字: AWS AN BSP 數(shù)字化

倫敦2024年8月29日 /美通社/ -- 英國汽車技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認(rèn)證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開發(fā)耗時1.5...

關(guān)鍵字: 汽車 人工智能 智能驅(qū)動 BSP

北京2024年8月28日 /美通社/ -- 越來越多用戶希望企業(yè)業(yè)務(wù)能7×24不間斷運行,同時企業(yè)卻面臨越來越多業(yè)務(wù)中斷的風(fēng)險,如企業(yè)系統(tǒng)復(fù)雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務(wù)連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報道,騰訊和網(wǎng)易近期正在縮減他們對日本游戲市場的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會開幕式在貴陽舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導(dǎo)體

8月28日消息,在2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會上,華為常務(wù)董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機 衛(wèi)星通信

要點: 有效應(yīng)對環(huán)境變化,經(jīng)營業(yè)績穩(wěn)中有升 落實提質(zhì)增效舉措,毛利潤率延續(xù)升勢 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務(wù)引領(lǐng)增長 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競爭力 堅持高質(zhì)量發(fā)展策略,塑強核心競爭優(yōu)勢...

關(guān)鍵字: 通信 BSP 電信運營商 數(shù)字經(jīng)濟(jì)

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺與中國電影電視技術(shù)學(xué)會聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會上宣布正式成立。 活動現(xiàn)場 NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會上,軟通動力信息技術(shù)(集團(tuán))股份有限公司(以下簡稱"軟通動力")與長三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉
關(guān)閉