日立SH3單片機(jī)最小系統(tǒng)的建立
摘要:為了在ARM處理器幾乎壟斷國(guó)內(nèi)32位處理器市場(chǎng)的形勢(shì)下給國(guó)內(nèi)工程師多一個(gè)選擇方向并能在資料匱乏的情況下很快掌握日立sH3系列32位處理器開發(fā)出實(shí)用的產(chǎn)品,在此用日立SH3系列的HD6417708S型號(hào)單片機(jī)建立了SH3系列單片機(jī)的最小系統(tǒng),并利用單片機(jī)的串口模塊做了串口通信實(shí)驗(yàn),實(shí)驗(yàn)結(jié)果實(shí)現(xiàn)了串口通信的預(yù)期結(jié)果,說明建立的SH3系列單片機(jī)的最小系統(tǒng)運(yùn)行正??梢圆尚拧?br />
關(guān)鍵詞:日立SH3;SH3單片機(jī);單片機(jī)最小系統(tǒng);32位處理器
0 引言
SH系列是日本日立公司推出的32位高檔的、RISC型單片機(jī)系列,到現(xiàn)在為止,已經(jīng)推出了6種類型的單片機(jī)系列:基本型的SH1,改進(jìn)型的SH2,低功耗的SH3,增強(qiáng)型的SH4,以及和DSP結(jié)合的SH2-DSP和SH3-DSP。
SH3系列是低功耗型SH處理器,高性能RISC結(jié)構(gòu),在時(shí)鐘133 MHz時(shí),性能可以達(dá)到173 MIPS。在2.25 V工作時(shí),功耗為400 mW。SH3的SH7709,其消耗功率每瓦運(yùn)行的指令數(shù)達(dá)到315 MIPS,能源利用效率很高。它內(nèi)部集成了32位乘法器、4路8 KB CHACHE、存儲(chǔ)器管理單元MMU、一些通用內(nèi)部控制模塊和外部接口模塊。其性能可以與ARM公司的ARM9系列處理器相媲美,在世界的嵌入式領(lǐng)域占有很大的份額,但是由于SH3系列單片機(jī)在國(guó)內(nèi)可參考的資料有限,技術(shù)支持不到位等種種原因致使ARM系列幾乎獨(dú)霸國(guó)內(nèi)32位處理器市場(chǎng)。SH3系列處理器無法在國(guó)內(nèi)發(fā)揮它強(qiáng)大的功能。本文介紹了如何用HD6417708S型號(hào)SH3單片機(jī)從硬件到軟件從無到有建立起SH3系列單片機(jī)最小系統(tǒng),并用系統(tǒng)的串口模塊來驗(yàn)證系統(tǒng)能否正常運(yùn)行。有了這個(gè)最小系統(tǒng)平臺(tái)開發(fā)人員只要在系統(tǒng)中添加自己需要的功能模塊就可以開發(fā)出需要的產(chǎn)品,在ARM一
通天下的形勢(shì)下給國(guó)人增加一個(gè)選擇方向,同時(shí)對(duì)于嵌入式領(lǐng)域正從零開始研究某款處理器的開發(fā)人員也有一定的借鑒之處。
1 最小系統(tǒng)的整體介紹
用HD6417708S型號(hào)SH3單片機(jī)建立的最小系統(tǒng)的結(jié)構(gòu)框圖如圖1所示。此最小系統(tǒng)包括MCU(HD6417708S)、電源模塊、存儲(chǔ)器模塊、MCU外圍輔助電路,為了可以直觀地看到系統(tǒng)能夠正常運(yùn)行增加了串口通信模塊用于演示。
2 硬件平臺(tái)的搭建
2.1 電源模塊
“HD6417708S”單片機(jī)理想的工作電壓是3.3 V,上下可以有0.3 V的波動(dòng),存儲(chǔ)器與串口芯片都支持3.3 V供電。在此的電源模塊是以DCDC開關(guān)電源芯片“1CZ21H”為核心的一個(gè)單片開關(guān)電源電路,DC8V-DC28V輸入,3.3 V供電時(shí)可以提供1.5 A的電流,電路原理如圖2所示。
[!--empirenews.page--]
2.2 串口通信模塊
該模塊分別用到MD2/RXD(84管腳),MD1/TXD(85管腳),MD0/SCK(86管腳)3個(gè)管腳,并且他們都屬于功能復(fù)用管腳。當(dāng)3個(gè)管腳作為MD0,MD1,MD2功能管腳時(shí)為模式選擇控制管腳,復(fù)位時(shí)它們的狀態(tài)決定了時(shí)鐘電路的設(shè)置,對(duì)應(yīng)關(guān)系可參考參考文獻(xiàn)。
系統(tǒng)正常運(yùn)行以后時(shí)鐘模式控制功能已經(jīng)完成了,如果系統(tǒng)要用串口功能時(shí)就可以用RXD(84管腳)、TXD(84管腳)進(jìn)行全雙工通信。現(xiàn)在問題是硬件怎么設(shè)計(jì)能同時(shí)滿足這2種功能。在此提供2種方案:
方案1:串口芯片使用MAX3223芯片,這款芯片有功能使能管腳,如果芯片沒有使能時(shí)芯片管腳處于高阻狀態(tài)。提供的方案框圖如圖片3所示:當(dāng)系統(tǒng)復(fù)位時(shí)讓MAX3223處于不使能狀態(tài),MAX3223的RXD、TXD引腳處于高阻狀態(tài),添加輔助電路就可以隨心所欲的給SH7708單片機(jī)提供模式控制信號(hào)了。當(dāng)系統(tǒng)運(yùn)行起來時(shí)SH7708肯定會(huì)通過Area0的片選信號(hào)訪問Area0區(qū)的ROM,所以是否出現(xiàn)低脈沖可以作為系統(tǒng)是否已經(jīng)運(yùn)行的標(biāo)志信號(hào),將信號(hào)送給模式控制輔助電路,一旦檢測(cè)到低脈沖就讓模式控制輔助電路輸出變?yōu)楦咦锠顟B(tài),同時(shí)使能MAX32 23芯片就可以了。模式控制圖3中方案1模塊用一個(gè)組合邏輯門和一個(gè)觸發(fā)器就可以實(shí)現(xiàn)功能。
方案2:采用CPLD將單片機(jī)和串口芯片隔開。這樣就可以隨心所欲地控制了,具體方案如圖4:由于在系統(tǒng)中還用到了CPLD的其他資源,所以選擇了這種方案。如果系統(tǒng)沒有在其他功能中用到CPLD的話建議用方案1,因?yàn)榉桨?成本會(huì)低很多。
[!--empirenews.page--]
2.3 存儲(chǔ)器模塊
SH3單片機(jī)內(nèi)部沒有ROM空間,系統(tǒng)必須在外部總線上連接ROM存儲(chǔ)器。SH3單片機(jī)總線采用地址總線與數(shù)據(jù)總線分離的設(shè)計(jì)模式,地址總線最大支持64 MB存儲(chǔ)空間。滿足這種總線模式的ROM都可以使用(SH3單片機(jī)內(nèi)部沒有NAND FLASH控制器,所以不要選擇NAND FLASH存儲(chǔ)器)。由于一條指令占16 b空間,所以選一片8 MB 16位位寬的FLASH存儲(chǔ)器LH28F640BFN。
SH3系列處理器內(nèi)部嵌有8 KB CACHE,在不使用緩存功能時(shí)有4 KB CACHE空間可以當(dāng)作一般的RAM使用。由于本次只是討論最小系統(tǒng)的建立,程序比較簡(jiǎn)單,4 KB空間足以。在后續(xù)介紹比較大的運(yùn)用時(shí)會(huì)介紹系統(tǒng)連接的SDRAM存儲(chǔ)器,在以后其他文章中討論。
2.4 MCU外圍輔助電路
(1)復(fù)位電路:HD6417708S單片機(jī)需要最短為10 ms的低電平復(fù)位信號(hào),如果你的系統(tǒng)中其他芯片也需要Reset信號(hào)時(shí)請(qǐng)綜合考慮一下復(fù)位信號(hào)的長(zhǎng)度與電平。本系統(tǒng)的復(fù)位電路采用了一款集復(fù)位與看門狗電路于一身的“1075”復(fù)位芯片。
(2)時(shí)鐘電路:HD6417708S單片機(jī)的時(shí)鐘模塊有2個(gè)管腳:EXTAL(79)和XTAL(80)。如果想用無源晶振的話將晶振連到EXTAL和XTAL之間,兩管腳對(duì)地各接一個(gè)18 pF的電容就可以了。如果想用有緣晶振的話將晶振的時(shí)鐘輸出管腳接EXTAL管腳就行了。
(3)PLL模塊外圍輔助電路:HD6417708S單片機(jī)鎖相環(huán)電路要求在管腳74,管腳77分別對(duì)地接一個(gè)470 pF的電容。
(4)幾個(gè)特殊管腳的處理管腳87為Bus requst輸入功能管腳,如果系統(tǒng)正常運(yùn)行時(shí)給這個(gè)管腳加一個(gè)低電平信號(hào),單片機(jī)會(huì)釋放總線。如果您的系統(tǒng)有多個(gè)處理器需要共用總線時(shí)通過對(duì)這個(gè)管腳的合理控制可以實(shí)現(xiàn)總線分配,如果系統(tǒng)不用單片機(jī)釋放總線時(shí)就可以給這個(gè)管腳加一個(gè)10 kΩ的上拉電阻,這個(gè)管腳一定不要懸空。
管腳89~管腳93為外部中斷輸入管腳。管腳89為管腳NMI(非屏蔽中斷),為邊沿觸發(fā)中斷。
管腳90~管腳93為可屏蔽中斷管腳,為電平觸發(fā)中斷。這些管腳都不能懸空,如果沒有用到要將這些管腳各加上10 kΩ的上拉電阻就可以了。
管腳94是一個(gè)PCMCIA總線控制的管腳如果沒用到這種存儲(chǔ)器的話就可以加上10 kΩ的上拉阻就行了,不會(huì)影響其他部分。
MD3(管腳103)、MD4(管腳104)、MD5(管腳130)是3個(gè)模式控制引腳。MD3,MD4控制著Area0的總線寬度,對(duì)應(yīng)關(guān)系請(qǐng)參考參考文獻(xiàn)。
MD5復(fù)位時(shí)的狀態(tài)告訴單片機(jī)總線上的存儲(chǔ)器中數(shù)據(jù)(包括code和data)的存儲(chǔ)方式,復(fù)位時(shí)MD5為零時(shí)說明存儲(chǔ)器中的數(shù)據(jù)是按大端模式存放的,復(fù)位時(shí)存儲(chǔ)器中的數(shù)據(jù)應(yīng)選擇小端模式。
(管腳132)是一個(gè)等待請(qǐng)求管腳,低電平有效。當(dāng)處理器的訪問速度超過外部設(shè)備的反應(yīng)速度時(shí)可以將這個(gè)管腳置低讓處理器進(jìn)行等待。如果系統(tǒng)的外部設(shè)備足夠快不用這個(gè)功能的話要加一個(gè)弱上拉電阻,絕對(duì)不能懸空或接地。自此,帶監(jiān)視串口的HD6417708S單片機(jī)最小系統(tǒng)硬件平臺(tái)就搭建好了,編寫相關(guān)軟件就可以讓系統(tǒng)運(yùn)行起來。
3 軟件平臺(tái)的搭建
SH3系列單片機(jī)的開發(fā)環(huán)境是由日本瑞薩公司專門提供的“High-performance Embedded Workshop”軟件,有很多版本,在瑞薩公司的網(wǎng)站上可以下載,我下的是“shv9200_ev.exe”版本。
首先安裝HD6417708S單片機(jī)的開發(fā)工具“High-performance Embedded Workshop”軟件,安裝完成以后會(huì)在程序目錄里出現(xiàn)一個(gè)“Renes as”安裝程序,里面的“High-performance Embedded Workshop”圖標(biāo)就是開發(fā)軟件的圖標(biāo)。
建立模板工程。雙擊開發(fā)工具圖標(biāo)出現(xiàn)一個(gè)工程對(duì)話框,選擇第一項(xiàng)“Create a new project workspace”,然后點(diǎn)擊OK按鈕進(jìn)入“New Project Workspace對(duì)話框。在“Workspace Name”對(duì)話框里為項(xiàng)目命一個(gè)名字,例如“123”,系統(tǒng)會(huì)把“ProjectName”與“Directory”
項(xiàng)的名字都默認(rèn)為“123”,如果想指定工程的保存路徑的話就點(diǎn)擊“Browse”按鈕選擇想保存程序的地方,其他選項(xiàng)用默認(rèn)選項(xiàng)就可以了,點(diǎn)擊“確定”按鈕進(jìn)入下一個(gè)對(duì)話框。在“CPUSerise”選擇框里選擇“SH-3”選項(xiàng),在“CPUType”選擇框里選擇“SH7708”選項(xiàng),然后點(diǎn)擊“Next”按鈕進(jìn)入下一個(gè)對(duì)話框界面。將“Endian”選項(xiàng)設(shè)為“Little”模式,這個(gè)選項(xiàng)很重要,前面“MCU外圍輔助電路”部分介紹的MD5管腳就是用來設(shè)置程序存儲(chǔ)大小端模式的,如果MD5管腳設(shè)置的大小端與軟件設(shè)置的不一樣整個(gè)程序就亂了。因?yàn)橛布D5管腳設(shè)置成了小端模式的狀態(tài)所以在此將“Endian”選項(xiàng)設(shè)為“Little”模式。其他選項(xiàng)用默認(rèn)值就行了,然后點(diǎn)擊“Next”按鈕進(jìn)到下一個(gè)對(duì)話框界面。在對(duì)話框的最下面的“Generate Hardware Setup Function”的下拉菜單中選擇“C/C++ source file”選項(xiàng),然后連續(xù)點(diǎn)擊“Next”按鈕直到出現(xiàn)“Targets”選項(xiàng)界面.將“SH-3Simulator(Little endian)”選項(xiàng)選上,然后連續(xù)點(diǎn)擊“Next”按鈕直到圖標(biāo)變灰,再點(diǎn)擊“Finish”按鈕就進(jìn)入到工程的主界面了,模板工程就建立完成了。
模板工程相關(guān)文件介紹。由于建立的是一個(gè)模板工程,工程建立好以后就帶了一些文件包括啟動(dòng)代碼、異常處理程序以及為軟件開發(fā)人員提供的程序接口等等?,F(xiàn)將幾個(gè)關(guān)鍵文件功能按照程序執(zhí)行順序介紹如下:
首先在程序目錄里點(diǎn)擊“handle.src”文件,找到段標(biāo)志“.sectionRSTHandler.code”,該段的程序代碼就是單片機(jī)上電復(fù)位后首先執(zhí)行的代碼。然后點(diǎn)擊“resetprg.c”文件,里面有一個(gè)“void PowerON_Reset(void)”函數(shù),單片機(jī)執(zhí)行完“handle.src”文件中的“.section RSTHandler,code”段的程序代碼后跳到了該函數(shù)運(yùn)行,如果想知道為什么跳到了這個(gè)函數(shù)請(qǐng)計(jì)算出“.section RSTHandl er,code”程序段中的“JMP”指令要跳轉(zhuǎn)的地址以及“void PowerON_Reset(void)”所分配地址會(huì)發(fā)現(xiàn)兩個(gè)地址對(duì)應(yīng)同一個(gè)存儲(chǔ)單元。在“void PowerON_Reset(void)”函數(shù)中調(diào)用的“set_vbr((void*)((_UINT)INTHandlerPRG-INT_OFFSET))”函數(shù),“_INITSCT()”和“_INIT_ IOLIB()”都是系統(tǒng)庫函數(shù),在編譯器手冊(cè)中它們的功能都有介紹,在此不詳細(xì)介紹。
點(diǎn)擊“hwsetup.c”文件就可以看到“void PowerON_Reset(void)”函數(shù)中調(diào)用的HardwareSetup()函數(shù)的具體內(nèi)容,本函數(shù)是用來初始化單片機(jī)總線及各個(gè)外圍功能模塊的。set_cr(SR_Init)函數(shù)是用來初始化狀態(tài)寄存器的一個(gè)系統(tǒng)函數(shù),與中斷的設(shè)置關(guān)系較大,對(duì)于本系統(tǒng)意義不大,本著簡(jiǎn)化系統(tǒng)的原則將這個(gè)函數(shù)注掉。然后就到“main()”函數(shù)了,點(diǎn)擊“123.c”文件發(fā)現(xiàn)“main()”函數(shù)是一個(gè)空函數(shù),這是系統(tǒng)為程序員提供的接口,在這個(gè)函數(shù)里添加您的程序代碼就行了。至此模板工程里的相關(guān)文件就介紹完了。系統(tǒng)上電,單片機(jī)運(yùn)行完模板自帶的初始化程序以后就跳到了“main()”函數(shù),程序員只要在此函數(shù)中添加需要的功能代碼就可以實(shí)現(xiàn)所需要的功能了。[!--empirenews.page--]
串口監(jiān)視程序的實(shí)為了驗(yàn)證系統(tǒng)真的運(yùn)行起來了,硬件上增加了串口監(jiān)視模塊。
在此來實(shí)現(xiàn)下面這個(gè)簡(jiǎn)單功能:將串口波特率初始化為9 600b/s,通過串口接收一個(gè)字節(jié)的數(shù)據(jù)并通過串口發(fā)送出去。通過這個(gè)簡(jiǎn)單的功能驗(yàn)證系統(tǒng)工作正常。程序流程圖如圖5所示。編譯應(yīng)用程序,最終生成摩托羅拉格式的機(jī)器碼,將有用的數(shù)據(jù)解析出來燒到系統(tǒng)的ROM中系統(tǒng)就可以上電演示了。
系統(tǒng)測(cè)試。將本系統(tǒng)與電腦通過串口線連接起來,電腦運(yùn)行串口軟件發(fā)送字節(jié)“0xaa”給系統(tǒng)板,電腦串口軟件的接收區(qū)出現(xiàn)“aa”,如圖6所示:通過現(xiàn)象可以說明系統(tǒng)正常運(yùn)行了。自此,HD6417708S單片機(jī)最小系統(tǒng)從無到有就算建立成功了。本系統(tǒng)詳細(xì)闡述了SH3系列單片機(jī)開發(fā)應(yīng)用時(shí)可能出現(xiàn)問題的解決方法,并用串口實(shí)驗(yàn)驗(yàn)證了最小系統(tǒng)的正確性。此最小系統(tǒng)基本將SH3處理器與其他處理器的不同之處都展現(xiàn)出來了,在此基礎(chǔ)上開發(fā)人員只要運(yùn)用單片機(jī)開發(fā)的共性理論就可以很好地使用SH3單片機(jī),大大縮短開發(fā)周期,降低開發(fā)難度。同時(shí)也為ARM-統(tǒng)天下的國(guó)內(nèi)工程師提供了如圖6上位機(jī)串口監(jiān)視軟件發(fā)送和接收的數(shù)據(jù)更新的選擇方向。
4 結(jié)語
本最小系統(tǒng)已經(jīng)在工業(yè)產(chǎn)品中的到應(yīng)用,實(shí)踐證明,該最小系統(tǒng)運(yùn)行穩(wěn)定,能很好地完成產(chǎn)品指標(biāo)。