當前位置:首頁 > 單片機 > 單片機
[導讀]介紹一種簡便實用的PIC編程器實現(xiàn)方案。設計思想是:以單片機作為主控機,欲寫入的PIC程序代碼存放在主控機中,由主控機提供PIC芯片編程所需信號,并監(jiān)測整個編程流程。

摘要 介紹一種簡便實用的PIC編程器實現(xiàn)方案。設計思想是:以單片機作為主控機,欲寫入的PIC程序代碼存放在主控機中,由主控機提供PIC芯片編程所需信號,并監(jiān)測整個編程流程。在時鐘脈沖信號作用下,把代碼寫入PIC的Flash中以達到對芯片編程的目的。該方案可以在脫離PC的環(huán)境下運行,適用于對批量的PIC芯片進行編程。
關(guān)鍵詞 PIClOF202 串行編程 89C51

    隨著工業(yè)生產(chǎn)的擴大,存在著對同一型號芯片進行相同代碼編程的需要。目前采用的編程方式是通過專用的編程器來執(zhí)行,其編程過程離不開PC機。在對一定批量的芯片編程時,操作比較煩瑣,保密性能差,且難以在工業(yè)現(xiàn)場進行。

    本編程器設計簡單,操作方便,保密性好,易攜帶,需要的外部設備少。編程器以PIClOF202為例進行設計。PIClOF2xx系列是Microchip公司生產(chǎn)的低功耗,高性能Flash單片機。其封裝小,易于使用,成本低。性能穩(wěn)定,在通用電子設計中被廣泛使用。本設計的基本思想適用于其他類型的單片機。

1 PICl0F2xx的存儲結(jié)構(gòu)及編程方法
1.1 存儲空間映射

    以PICl0F202為例,其內(nèi)部程序存儲空間映射如下:
    0000H~0lFFH是用戶可以使用的代碼存儲空間,0200H~03FFH是系統(tǒng)的配置空間。其中01FFH單元是復位向量,系統(tǒng)復位后程序指針PC將指向此地址單元。0200H~0203H是用戶ID信息存儲區(qū)間。0204H地址單元存放的是備份的OSCCAL值,被預留用來測試內(nèi)部晶振,因此該值在任何情況下都不應該被更改。一旦被擦除,必須恢復該值,否則芯片不能正常工作。03FF地址單元存放系統(tǒng)的配置字,其他地址單元系統(tǒng)保留。

1.2 芯片編程方法
   
采用串行在線編程的方式,串行時鐘信號由主控單元的I/O口發(fā)出,從PIC的時鐘引腳ISCLK輸入。在串行時鐘信號作用下,串行數(shù)據(jù)從數(shù)據(jù)引腳ISDAT輸入/輸出,完成對芯片的Flash的代碼寫入。

    只有在進入編程模式后,PIClOF202才能允許對其存儲空間的操作,如圖l所示。當保持ISDAT(串行數(shù)據(jù)輸入端)和ISCLK(串行時鐘輸入端)為低電平時,VCC(芯片電源)上升到高電平。經(jīng)tl延時,MCLR(編程模式選擇端)上升到高電平,再經(jīng)t2延時,開始時鐘脈沖和數(shù)據(jù)的輸入/輸出。此時PIClOF202進入編程模式。

2 系統(tǒng)硬件結(jié)構(gòu)
    系統(tǒng)邏輯框圖如圖2所示,由主控機、控制模塊、監(jiān)控顯示模塊和目標芯片組成。主控機選用89C51單片機,用單片機的2個I/O口分別提供ISDAT和ISCLK信號;目標芯片即PIC。PIC的MCLR端為編程模式選擇端。為了讓PIC10F202能夠進入編程狀態(tài),需要由控制模塊實現(xiàn)對MCLR端的電平控制。監(jiān)控顯示模塊用于指示目前系統(tǒng)的工作狀態(tài)和監(jiān)控系統(tǒng)運行。

2.1 控制模塊的實現(xiàn)
    為了實現(xiàn)控制模塊對MCLR端的電平控制,使用2個晶體管T1、T2,如圖3所示。當單片機I/O口為高電位時,T1導通,其發(fā)射級為低電位,T2導通,于是電源VPP與PIC的MCLR端接通;當I/O口為低電位時,T1截止,其發(fā)射級為高電位,T2截止,VPP和MCLR端之間斷開。

2.2 監(jiān)控顯示模塊
   
采用一組發(fā)光二極管來顯示系統(tǒng)狀態(tài)和編程結(jié)果。系統(tǒng)的工作狀態(tài)包括:目標芯片檢測、就緒等待、編程進行中、代碼校驗等。系統(tǒng)在就緒等待狀態(tài)下,就緒狀態(tài)燈亮,主控機監(jiān)控按鍵指令;接到指令后即進入編程狀態(tài),同時編程燈亮,編程后執(zhí)行校驗,校驗完成后結(jié)束燈亮,說明完成整個縮程工作。整個編程過程中,若遇到故障,相應故障燈顯示。

3 系統(tǒng)軟件設計
3.1 數(shù)據(jù)(命令)輸入方法
   
無論是指令還是需要寫入的代碼數(shù)據(jù),都在相應的時鐘節(jié)拍下由串行數(shù)據(jù)端輸入。串行時鐘始終與串行數(shù)據(jù)的要求一致。對于不同的命令,時鐘脈沖間的時間參數(shù)t1~t6的要求是不同的。在相應時鐘脈沖下降沿,PIC對數(shù)據(jù)端采樣,命令代碼在前,一段時間延時后,輸入代碼數(shù)據(jù)。數(shù)據(jù)低位在前,高位在后,如圖4所示。時間參數(shù)的具體要求見參考文獻。

    下面以數(shù)據(jù)導入為例簡要說明。
    代碼舉例如下:

   

    由命令字表中可知,若導人數(shù)據(jù)的命令字是xx0010B,低位在前由ISDAT輸入,每次ISCLK的下降沿對ISDAT采樣。以上代碼實現(xiàn)了“0”、“1”的輸入,其他命令的輸入類似。數(shù)據(jù)輸入和命令輸入都是下降沿有效。每次導入1字節(jié)的數(shù)據(jù)為12位,但是必須在16個時鐘脈沖中完成。前6個時鐘脈沖的下降沿輸入命令字,且前4位有效。一段時間參數(shù)的延遲后,數(shù)據(jù)開始輸入,第1個時鐘下降沿輸入起始位,后第2~13個時鐘的下降沿輸入1字節(jié)的數(shù)據(jù),共12位。第14、15個時鐘下降沿輸入數(shù)據(jù)無效,最后一個下降沿輸入停止位(起始位和停止位固定為O)。

3.2 PC指針的處理及尋址方法

    在對其編程的過程中,需要知道當前PIC的PC指針指向的Flash存儲區(qū)單元地址,也就是當前的操作單元。由于無法直接讀取其PC指針的值,故采用在89C5l的RAM區(qū)定義一個變量用來記錄PIC的PC指針(12位,占用2字節(jié))。該變量的值始終和PIC的PC指針一致,讀取該值便可取得當前所操作的PIC的Flash存儲單元地址。

    變量的操作應該遵循如下運算規(guī)則:
    ①只有“加1”這一種運算;
    ②03FF+1=0000(03FF為PIC10F202的存儲器末地址)}
    ③當變量的值不等于03FF時,其“加l”運算與指針值“加1”同步;
    ④初始情況下,指針的值指向03FF。
    PICl0F202的Flash單元地址為0000H~03FFH。在以上運算規(guī)則下,記錄PC指針的變量值也只能是0000H~03FFH,通過“加1”運算即可尋址到每一個Flash存儲單元。

3.3 數(shù)據(jù)的讀取

    從Flash存儲單元中讀取數(shù)據(jù)位的方法:先是6個時鐘下降沿輸入6位命令字,在接收到這個命令字后,PIC將當前PC指針所對應ROM存儲單元的值按位由ISDAT輸出。在第6個下降沿結(jié)束后,經(jīng)延時,在時鐘脈沖每個上升沿對ISDAT采樣,一共16個上升沿,輸出16位的數(shù)據(jù)。第2~13位是12位的數(shù)據(jù);14、15位無效;首位和末位分別是起始位和結(jié)束位,如圖5所示。

    讀取數(shù)據(jù)時有兩點值得注意:
    ①命令字的輸入和其他操作相同,但數(shù)據(jù)輸出時是上升沿有效;
    ②由于01FFH和0204H是系統(tǒng)預定值單元,當尋址到這兩個單元時,執(zhí)行讀取指令后必須保留其內(nèi)容,以便編程時恢復。

3.4 寫入Flash方法

    數(shù)據(jù)寫入Flash的過程如下:
    每次導入一個字節(jié)的數(shù)據(jù)(12位),輸入開始寫入的指令碼,經(jīng)過一段時間參數(shù)的延時,再輸人結(jié)束寫入指令碼,就完成一個字節(jié)的寫入過程。但需要注意的是,無論是數(shù)據(jù)讀取還是寫入,都是對當前PC指針所指向的F1ash單元進行的;而且數(shù)據(jù)寫入只有在當前存儲單元已經(jīng)被擦除的情況下才可以正確地實現(xiàn)。

    指令輸入形式(如芯片擦除、開始寫入、結(jié)束寫入和地址加1等)可以查得其命令宇,其輸入方法與圖4和圖5類似,每個指令都需要時鐘脈沖的6個下降沿輸入。僅有“導入數(shù)據(jù)”和“讀取數(shù)據(jù)”2條命令需要后跟數(shù)據(jù)字節(jié),其他的指令在輸入完成后,經(jīng)延時,便可以進行下一條指令的輸入。字節(jié)寫入流程如圖6所示。

3.5 配置字編程及代碼保護的處理
    配置字是關(guān)于PIC的設置,包括是否使能看門狗,是否采用I/O弱上拉,以及MCLR引腳的配置等。配置字在03FFH單元,PIC進入編程模式時,配置字單元就是Pc指針所指向的單元。配置字的寫入方法與一般的代碼寫入方法一致。一旦設置了代碼保護,用戶代碼空間的0040H以上的字節(jié)讀出為“0”,其他的配置空間依舊可以正確讀出,包括配置字單元和用戶ID區(qū)。配置字可以被多次寫入,但是在任何情況下擦除配置字單元,用戶儲存區(qū)的代碼也同時被擦除??梢酝ㄟ^圖7的方法解除代碼保護,但是這樣的處理會將整個Flastl存儲空間全部清除,所以在代碼保護使能的情況下,是不可能正確讀取代碼值的。即使可以重寫配置字,但是重寫過程中代碼已經(jīng)被清除。

3.6 預定值的處理
   
每個PIC芯片都沒有廠家設定的預定值。這些值是不應該被更改的,否則PIC芯片就無法正常工作。ROM區(qū)的01FFH單元保存復位向量,系統(tǒng)復位后,PC指針將指向該單元。0204H單元保存著OSSCAL的值。這兩個單元的值應該先讀出并且保存在一個臨時單元(因為在芯片擦除的過程中會丟失),待到需要編程的代碼執(zhí)行完畢,再從臨時單元讀出并寫入相應的位置。其實際過程就是一個“讀取保存恢復”的過程。

    要讀取預定值,首先必須尋址到預定值所在的單元。其尋址的過程如圖8所示:進入編程模式后,此時指向的存儲單元是03FFH,89C51中記錄PC指針的變量的值也應該設置成03FF。按照該變量的運算規(guī)則,執(zhí)行地址加1指令,變量值也加1,并查詢當前變量的值,直到所需的存儲單元為止。恢復的過程是先尋址到01FF和0204單元,然后把保留的值寫入,具體流程與圖8類似。

3.7 軟件流程
    系統(tǒng)在初始化中,如果檢測到目標芯片已經(jīng)安裝就緒,監(jiān)控顯示模塊便會顯示系統(tǒng)處于就緒狀態(tài),然后監(jiān)控按鍵。一旦按鍵按下。編程開始,如圖9所示。先讀取系統(tǒng)預定值并保存在主控機的RAM中,然后PIC芯片擦除,包括用戶使用的代碼區(qū)和PIC系統(tǒng)配置區(qū)。擦除完成后,將PC指向首地址0000H,開始代碼寫入,每次寫入l個字節(jié)的代碼,寫完后校驗。所有代碼寫完后,恢復已保存的預定值,恢復的過程與代碼寫入一致。

    尋址到配置字單元后進行配置字寫入,在先前的擦除工作中,配置字單元已經(jīng)擦除。寫入的過程也與代碼寫入一致。

    整個編程過程中,監(jiān)控顯示模塊會顯示目前的系統(tǒng)狀態(tài)。寫入過程中(包括代碼、預定值和配置字等)出現(xiàn)的任何錯誤,編程會報錯停止,并回到就緒等待狀態(tài),等待下次編程的開始。

    若無任何錯誤的狀況發(fā)生,系統(tǒng)顯示編程成功,整個芯片編程過程結(jié)束。

4 小結(jié)
    本系統(tǒng)操作簡單,性能穩(wěn)定,編程速度快,無需PC機的支持。所有的代碼均保存在主控機的ROM區(qū)中。在主控機ROM寫保護的情況下,代碼不可能被讀出,具有很強的保密性。需要的外部設備少,易于攜帶,而且成本低。本方法對于工業(yè)現(xiàn)場的批量芯片編程有一定借鑒意義。

本站聲明: 本文章由作者或相關(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)意到認證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開發(fā)耗時1.5...

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

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

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

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

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

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

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺與中國電影電視技術(shù)學會聯(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ù)(集團)股份有限公司(以下簡稱"軟通動力")與長三角投資(上海)有限...

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