《嵌入式Linux開(kāi)發(fā)入門(mén)》課件第3章_第1頁(yè)
《嵌入式Linux開(kāi)發(fā)入門(mén)》課件第3章_第2頁(yè)
《嵌入式Linux開(kāi)發(fā)入門(mén)》課件第3章_第3頁(yè)
《嵌入式Linux開(kāi)發(fā)入門(mén)》課件第3章_第4頁(yè)
《嵌入式Linux開(kāi)發(fā)入門(mén)》課件第3章_第5頁(yè)
已閱讀5頁(yè),還剩132頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

第3章ADS下的硬件電路調(diào)試

3.1概述3.2嵌入式系統(tǒng)的開(kāi)發(fā)步驟及方法3.3測(cè)試內(nèi)容清單及各部分實(shí)現(xiàn)功能3.1概述

ADS測(cè)試程序部分主要功能是:●在裸板上(未加載操作系統(tǒng))利用編程手段測(cè)試各功能模塊的電氣連接是否正確;●通過(guò)這一工作中的源程序,交代EP9315各片內(nèi)外設(shè)的寄存器設(shè)置方式,為后繼開(kāi)發(fā)者提供切實(shí)有用的參考資料。

ADS下的測(cè)試程序已在本開(kāi)發(fā)板上實(shí)際運(yùn)行過(guò),其基本思路是:在對(duì)系統(tǒng)總體配置后,通過(guò)程序控制開(kāi)發(fā)板上各外部硬件資源完成相應(yīng)動(dòng)作。同時(shí)在監(jiān)控終端上顯示測(cè)試過(guò)程中的輸入、輸出信息,以此了解開(kāi)發(fā)平臺(tái)硬件電路的實(shí)際運(yùn)行情況。3.2嵌入式系統(tǒng)的開(kāi)發(fā)步驟及方法為向用戶全面系統(tǒng)地闡述ADS下的測(cè)試程序,本節(jié)先概要地介紹嵌入式系統(tǒng)開(kāi)發(fā)的典型過(guò)程和所使用的軟、硬件工具。運(yùn)行此測(cè)試程序所需要的設(shè)備及軟件工具如下:●?PC機(jī)(Windows超級(jí)終端軟件及機(jī)身COM口可用);●?ARMJTAG接口仿真器一臺(tái)及相對(duì)應(yīng)的控制臺(tái)驅(qū)動(dòng)程序;●?EP9315嵌入式開(kāi)發(fā)板一塊;●串口線(連接開(kāi)發(fā)板與PC機(jī)),并口線(連接仿真器與PC機(jī));●?ADS1.2開(kāi)發(fā)套件。以上提及的硬件設(shè)備的連接情況見(jiàn)圖3.1。圖3.1開(kāi)發(fā)環(huán)境的搭建在路徑[開(kāi)始]-[所有程序]-[附件]-[通信]中打開(kāi)PC機(jī)上的超級(jí)終端,建立測(cè)試監(jiān)控端。將超級(jí)終端配置為波特率為115200,數(shù)據(jù)位為8,奇偶校驗(yàn)為無(wú),停止位為1,數(shù)據(jù)流控制為無(wú),見(jiàn)圖3.2。圖3.2超級(jí)終端的配置打開(kāi)開(kāi)發(fā)板電源,在仿真器控制臺(tái)軟件中完成開(kāi)發(fā)板與PC機(jī)的連接,見(jiàn)圖3.3。圖3.3控制臺(tái)檢測(cè)處理器內(nèi)核至此,開(kāi)發(fā)板已與PC主機(jī)建立了硬件上的連接。用戶此時(shí)需要在ADS環(huán)境下完成實(shí)驗(yàn)工程的建立,以便進(jìn)行源程序的編寫(xiě)、編譯以及鏈接,繼而產(chǎn)生ARM可執(zhí)行文件。首先建立實(shí)驗(yàn)平臺(tái),打開(kāi)ADS開(kāi)發(fā)套件中的CodeWarriorforARMDeveloperSuite。平臺(tái)可將所有的源碼文件組織在一起,并能夠決定最終生成文件存放的路徑及輸出的格式等。然后在CodeWarrior中新建一個(gè)工程,新建工程的方法有兩種,一是在工具欄中單擊“New”按鈕,是在“File”菜單中選擇“New…”菜單。這樣就會(huì)打開(kāi)一個(gè)如圖3.4所示的對(duì)話框。圖3.4建立工程●在這個(gè)對(duì)話框中為用戶提供了7種可選擇的工程類(lèi)型?!?ARMExecutableImage:用于由ARM指令的代碼生成一個(gè)ELF格式的可執(zhí)行映像文件;●?ARMObjectLibrary:用于由ARM指令的代碼生成一個(gè)armar格式的目標(biāo)文件庫(kù);●?EmptyProject:用于創(chuàng)建一個(gè)不包含任何庫(kù)或源文件的工程;●?MakefileImporterWizard:用于將VisualC的nmake或GNUmake文件轉(zhuǎn)入到CodeWarriorIDE工程文件;●?ThumbARMInterworkingImage:?用于由ARM指令和Thumb指令的混和代碼生成一個(gè)可執(zhí)行的ELF格式的映像文件;●?ThumbExecutableImage:用于由Thumb指令創(chuàng)建一個(gè)可執(zhí)行的ELF格式的映像文件;●?ThumbObjectLibrary:?用于由Thumb指令的代碼生成一個(gè)armar格式的目標(biāo)文件庫(kù)。在對(duì)話框中選擇ARMExecutableImage,在“Projectname”中輸入工程文件名。點(diǎn)擊“Location”文本框的“Set…”按鈕,瀏覽選擇想要將該工程保存的路徑。將這些設(shè)置好后,點(diǎn)擊“確定”,即可建立一個(gè)新的工程。在工程窗口中點(diǎn)擊右鍵添加工程所需的源程序。當(dāng)選中要添加的文件時(shí),會(huì)出現(xiàn)一個(gè)對(duì)話框,如圖3.5所示,詢(xún)問(wèn)用戶把文件添加到何類(lèi)目標(biāo)中。在這里,選擇DebugRel目標(biāo)。圖3.5添加工程文件圖3.5所示的3類(lèi)target解釋如下:●?DebugRel:使用該目標(biāo),在生成目標(biāo)的時(shí)候,會(huì)為每一個(gè)源文件生成調(diào)試信息;●?Debug:使用該目標(biāo)為每一個(gè)源文件生成最完全的調(diào)試信息;●?Release:使用該目標(biāo)不會(huì)生成任何調(diào)試信息。依次向工程中添加所需的全部源程序,最終如圖3.6所示。圖3.6測(cè)試程序工程源程序清單當(dāng)建立工程完畢后,需要對(duì)工程進(jìn)行一些基本配置。點(diǎn)擊工程窗口中的“DebugRelSettings”。出現(xiàn)如圖3.7所示的對(duì)話框。圖3.7工程配置窗口首先,對(duì)左面的[TargetSettings]作如圖3.8所示的選擇。圖3.8工程配置選項(xiàng)(1)接著,對(duì)[LanguageSettings]-[ThumbCCompiler]的各項(xiàng)均作如圖3.9所示的設(shè)置,即選擇ARM920T內(nèi)核,小端模式。圖3.9工程配置選項(xiàng)(2)最后對(duì)[Linker]-[ARMLinker]項(xiàng)中的Output頁(yè)作如圖3.10所示的設(shè)置,圖3.10的設(shè)置主要是指定了程序在內(nèi)存中加載的地址。圖3.10工程配置選項(xiàng)(3)需要說(shuō)明的是,圖3.10和圖3.11中所填入的0x00000000都為程序在開(kāi)發(fā)板上加載運(yùn)行的地址及程序入口。本處設(shè)為內(nèi)存首地址。用戶也可根據(jù)需要和程序?qū)嶋H情況自行更改。以上配置選項(xiàng)中的其他內(nèi)容用戶如需深入了解,可參閱ADS開(kāi)發(fā)套件的幫助文檔。圖3.11工程配置選項(xiàng)(4)如此設(shè)置完畢后,即可編譯、鏈接,在仿真器下進(jìn)行應(yīng)用程序的調(diào)試。找到測(cè)試程序工程的路徑,打開(kāi)測(cè)試程序工程EP9315board_adstest.mcp(建立好工程后,會(huì)在指定的目錄下自動(dòng)生成該文件),如圖3.12所示。圖3.12打開(kāi)工程文件這樣就可以看到工程中的各個(gè)程序文檔,用戶可以根據(jù)以后工作的具體需要,在其中進(jìn)行測(cè)試程序的更改和添加。調(diào)試更改源程序工作窗口如圖3.13所示。圖3.13工程中源程序截圖當(dāng)用戶完成自己的更改后,可重新編譯工程,以產(chǎn)生ARM可執(zhí)行文件。通過(guò)點(diǎn)擊make圖標(biāo)進(jìn)行編譯、鏈接,如圖3.14所示。圖3.14工程的編譯、鏈接編譯、鏈接完成后,打開(kāi)ADS1.2中的AXDDebugger加載ARM可執(zhí)行映像文件。其中,映像文件一般生成于工程目錄的DebugRel文件夾中,如圖3.15與圖3.16所示。圖3.15ARM可執(zhí)行映像文件的加載(1)圖3.16ARM可執(zhí)行映像文件的加載(2)加載成功后可點(diǎn)擊“GO”圖標(biāo)運(yùn)行測(cè)試程序。此時(shí)該程序?qū)⒃陂_(kāi)發(fā)板上運(yùn)行,如圖3.17所示。在工程程序運(yùn)行的過(guò)程中,用戶可以根據(jù)需要執(zhí)行暫停程序、設(shè)置斷點(diǎn)以及卸載映像文件等操作。至此,ADS下嵌入式系統(tǒng)的開(kāi)發(fā)步驟及方法介紹完畢。此項(xiàng)目的硬件電路調(diào)試工作就是通過(guò)在ADS下建立工程的方法進(jìn)行的。以下將詳細(xì)講解各功能模塊的調(diào)試。圖3.17工程程序的運(yùn)行3.3測(cè)試內(nèi)容清單及各部分實(shí)現(xiàn)功能

ADS下的測(cè)試程序包括以下測(cè)試內(nèi)容:●RS232串口測(cè)試;●LED燈,即GPIO功能測(cè)試;●內(nèi)存讀/寫(xiě)測(cè)試;●8×8小鍵盤(pán)測(cè)試;●觸摸屏測(cè)試;●脈寬調(diào)制(PWM)測(cè)試;●USB接口測(cè)試;●8255端口測(cè)試;●LCD顯示測(cè)試;●看門(mén)狗定時(shí)器(WDT)測(cè)試;●Flash擦寫(xiě)測(cè)試;●CAN總線測(cè)試;●IIC總線讀/寫(xiě)RTC芯片測(cè)試;●IDE硬盤(pán)測(cè)試;●MAX1261測(cè)試;●MAX5821測(cè)試;●PS/2測(cè)試;●SPI測(cè)試;●RS488測(cè)試;●網(wǎng)口測(cè)試。3.3.1前10項(xiàng)內(nèi)容的統(tǒng)一測(cè)試測(cè)試任務(wù)中,測(cè)試內(nèi)容的前10項(xiàng)在超級(jí)終端監(jiān)控下一次性完成,因此將其整合為一個(gè)工程。這部分測(cè)試對(duì)各個(gè)硬件外設(shè)的控制情況介紹如下:

(1)?RS232串口與PC機(jī)通信。測(cè)試過(guò)程中所有的測(cè)試信息都通過(guò)RS232串口實(shí)現(xiàn),測(cè)試中的控制字符也由其傳遞至開(kāi)發(fā)板。

(2)?LED燈,即GPIO功能。通過(guò)控制板上EP9315旁的兩盞LED燈,達(dá)到測(cè)試EP9315片內(nèi)GPIO端口的作用。另外,在SDRAM的測(cè)試中,還可以用該組LED燈指示內(nèi)存讀/寫(xiě)狀態(tài)。

(3)內(nèi)存讀/寫(xiě)。開(kāi)發(fā)板上SDRAM的大小為128MB,其地址范圍為0x00000000~0x08000000。測(cè)試過(guò)程中對(duì)除過(guò)加載程序映像以外的地址進(jìn)行讀/寫(xiě)校驗(yàn)。為防止破壞程序運(yùn)行時(shí)的數(shù)據(jù)和堆棧,校驗(yàn)順序?yàn)椋罕4嬖摰刂?32位)原來(lái)的數(shù)據(jù)→寫(xiě)入數(shù)據(jù)0xaa或0x55→讀出校驗(yàn)→將原始數(shù)據(jù)回寫(xiě)。當(dāng)校驗(yàn)正常完成并且內(nèi)存無(wú)錯(cuò)誤后,開(kāi)發(fā)板上綠色的LED燈會(huì)點(diǎn)亮。

(4)?8×8小鍵盤(pán)。該部分主要測(cè)試在按鍵后,鍵碼讀取是否正確。鍵碼范圍為0x00~0x3F。測(cè)試程序中此鍵碼會(huì)回顯在超級(jí)終端中。當(dāng)EP9315片內(nèi)控制器檢測(cè)到有兩鍵同時(shí)按下時(shí),程序從鍵盤(pán)子函數(shù)跳出,結(jié)束該部分測(cè)試。

(5)觸摸屏。當(dāng)觸筆點(diǎn)擊觸摸屏?xí)r,系統(tǒng)會(huì)接收模/數(shù)轉(zhuǎn)換后的二維坐標(biāo)值,以此確定點(diǎn)擊位置。為驗(yàn)證此部分的電路連接正常,測(cè)試程序?qū)腰c(diǎn)擊的對(duì)應(yīng)坐標(biāo)回顯到超級(jí)終端中。觸摸屏子函數(shù)允許用戶進(jìn)行15次點(diǎn)擊測(cè)試,完成后自動(dòng)跳出該函數(shù)。

(6)脈寬調(diào)制(PWM)。該部分開(kāi)始測(cè)試時(shí),程序?qū)⑻崾居脩魪?個(gè)波形中選擇其一,而后開(kāi)發(fā)板上對(duì)應(yīng)端口就會(huì)輸出該波形,可用示波器進(jìn)行定量觀察,也可外接蜂鳴器。不同頻率和占空比的波形會(huì)驅(qū)動(dòng)蜂鳴器以不同聲調(diào)鳴響。

(7)?USB接口。USB測(cè)試程序主要驗(yàn)證開(kāi)發(fā)板上USB總線的連接是否正確。該子程序循環(huán)運(yùn)行中,當(dāng)有USB設(shè)備插入時(shí),超級(jí)終端會(huì)顯示有設(shè)備接入以及對(duì)應(yīng)的USB端口號(hào)。拔除該設(shè)備后,也會(huì)顯示設(shè)備移除。

(8)?8255端口。測(cè)試中將8255A、B端口設(shè)置為輸出,外接一排8盞LED燈。以跑馬燈的形式驗(yàn)證8255芯片輸出功能是否正確。將C端口設(shè)置為輸入端,外接8鍵開(kāi)關(guān),通過(guò)開(kāi)關(guān)向C端口輸入高、低電平。由子程序讀取輸入值,回顯到超級(jí)終端中。

(9)?LCD顯示。當(dāng)進(jìn)入LCD測(cè)試子程序后,外接LCD屏?xí)约t、綠、藍(lán)3色循環(huán)刷屏。

(10)看門(mén)狗定時(shí)器(WDT)。這是此部分測(cè)試程序的最后一項(xiàng)工作,驗(yàn)證開(kāi)發(fā)板的看門(mén)狗復(fù)位功能。在板上兩盞LED燈交替閃爍時(shí),系統(tǒng)正?!拔构贰?,而后停止,清零WDT定時(shí)器,超級(jí)終端提示此部分測(cè)試結(jié)束,ADS顯示開(kāi)發(fā)板復(fù)位。此部分測(cè)試程序流程如圖3.18所示。圖3.18前10項(xiàng)測(cè)試程序流程此部分測(cè)試的控制界面如圖3.19所示。圖3.19控制界面在進(jìn)行這部分測(cè)試工作時(shí),必須注意以下問(wèn)題:●須將開(kāi)發(fā)板設(shè)置為串口啟動(dòng)方式,斷開(kāi)跳線J4;●在SDRAM測(cè)試中,因?yàn)樾枰4娌⒒貙?xiě)原始數(shù)據(jù),所以此測(cè)試比單獨(dú)寫(xiě)內(nèi)存運(yùn)行時(shí)間要長(zhǎng);●本工程提供的測(cè)試程序中的參數(shù),如串口波特率,PWM波頻率、占空比等,用戶均可在程序中根據(jù)需要自行改動(dòng),但需要參考EP9315數(shù)據(jù)手冊(cè)的相關(guān)說(shuō)明;●?8路并行I/O口外接8255芯片,關(guān)于此芯片內(nèi)部寄存器的詳細(xì)內(nèi)容請(qǐng)參考8255驅(qū)動(dòng)說(shuō)明文檔以及8255數(shù)據(jù)手冊(cè);●測(cè)試結(jié)束后,開(kāi)發(fā)板處于復(fù)位狀態(tài),若需再次加載程序映像文件,則需要斷電再開(kāi)機(jī)后在AXD中重新配置;●當(dāng)用戶將工程文件夾轉(zhuǎn)移路徑或移至其他PC機(jī)上時(shí),再次編譯會(huì)報(bào)錯(cuò),以本測(cè)試程序?yàn)槔藭r(shí)須作如下處理:退出ADS測(cè)試環(huán)境→刪除工程文件夾中的生成文件(其路徑為:EP9315board_adstest/EP9315board_adstestData/DebugRel)→重新進(jìn)入ADS測(cè)試環(huán)境,進(jìn)行編譯、鏈接,以生成新的ARM可執(zhí)行文件;●最好將源程序文件放在工程目錄下,以便在調(diào)試產(chǎn)品時(shí)統(tǒng)一管理。3.3.2Flash測(cè)試

28F256J3C125屬于Intel的StrataFlash?memory系列,容量為256Mb,即32MB;包含有256個(gè)128KB大小的擦除塊;可以有8位或者16位兩種訪問(wèn)寬度;遵循CFI接口標(biāo)準(zhǔn)。對(duì)Flash芯片的所有操作都是通過(guò)芯片的命令用戶接口(CUI)來(lái)實(shí)現(xiàn)的,命令用戶接口是微處理器或微控制器與芯片內(nèi)部操作之間的界面。當(dāng)通過(guò)CUI寫(xiě)入不同的控制命令時(shí),F(xiàn)lash從一個(gè)工作狀態(tài)轉(zhuǎn)移到另一個(gè)工作狀態(tài),其常見(jiàn)的工作狀態(tài)分為以下幾種。

1.讀存儲(chǔ)單元狀態(tài)在Flash芯片上電以后,或者從深度低功耗狀態(tài)返回以后,芯片就處于讀存儲(chǔ)單元狀態(tài)??赏ㄟ^(guò)寫(xiě)入復(fù)位命令進(jìn)入讀存儲(chǔ)單元狀態(tài)。此時(shí)可以讀取Flash芯片存儲(chǔ)單元的內(nèi)容。

2.擦除狀態(tài)對(duì)Flash芯片進(jìn)行擦除操作時(shí),由于Flash采用模塊分區(qū)的陣列結(jié)構(gòu),使得各個(gè)存儲(chǔ)模塊可以被獨(dú)立地擦除。當(dāng)給出的地址是在模塊地址范圍之內(nèi)且向命令用戶接口寫(xiě)入模塊擦除命令時(shí),相應(yīng)的模塊就被擦除。在執(zhí)行擦除操作時(shí)需要注意:28F256J3C的擦除塊大小為128KB。

3.編程狀態(tài)

Flash的編程操作是字節(jié)編程或buffer編程,可以是順序?qū)懭?,也可以是指定地址?xiě)入。向用戶命令接口寫(xiě)入字節(jié)編程命令時(shí),芯片自動(dòng)進(jìn)行字節(jié)編程和編程校驗(yàn)。在執(zhí)行編程操作時(shí)有兩個(gè)問(wèn)題需要注意:buffer的大小范圍為0x00~0x1F。除了以上所提到的常見(jiàn)的3種工作狀態(tài)外,F(xiàn)lash還有芯片復(fù)位、讀標(biāo)識(shí)碼、擦除掛起和擦除恢復(fù)等工作狀態(tài),只不過(guò)這幾種工作狀態(tài)在程序設(shè)計(jì)時(shí)幾乎不需要考慮什么問(wèn)題,只要輸入正確的命令字即可,但是不同公司的Flash命令控制字是不同的。前面所遇到的問(wèn)題都可以通過(guò)CFI來(lái)解決,但首先要保證待操作的Flash是一個(gè)CFI使能的器件。本ADS測(cè)試下Flash的測(cè)試流程如圖3.20和圖3.21所示。擦除后,塊中數(shù)據(jù)全為0xFF。測(cè)試流程為:首先讀出Flash中的數(shù)據(jù),然后擦除,再讀出數(shù)據(jù),若全為0xFF則擦除成功;再向Flash中寫(xiě)入數(shù)據(jù),讀出驗(yàn)證。由此可證明Flash可操作。圖3.20塊擦除流程圖圖3.21buffer編程流程圖3.3.3CAN總線測(cè)試

CAN總線是國(guó)際上應(yīng)用最廣泛的現(xiàn)場(chǎng)總線之一,最早是由德國(guó)Bosch公司推出,用于汽車(chē)內(nèi)部測(cè)量與執(zhí)行部件之間的數(shù)據(jù)通信協(xié)議。CAN總線的應(yīng)用范圍遍及從高速網(wǎng)絡(luò)到低成本的多線路網(wǎng)絡(luò),廣泛應(yīng)用于控制系統(tǒng)中的各檢測(cè)和執(zhí)行機(jī)構(gòu)之間的數(shù)據(jù)通信?,F(xiàn)場(chǎng)總線領(lǐng)域中,CAN總線得到了計(jì)算機(jī)芯片商的廣泛支持,他們紛紛推出直接帶有CAN接口的微處理器(MCU)芯片。CAN是一種多主方式的串行通信總線,基本設(shè)計(jì)規(guī)范要求有高的位速率,高的抗電磁干擾性,而且能夠檢測(cè)出產(chǎn)生的任何錯(cuò)誤。

CAN網(wǎng)絡(luò)具有如下特點(diǎn):●網(wǎng)絡(luò)上任意一個(gè)節(jié)點(diǎn)均可在任意時(shí)刻主動(dòng)向網(wǎng)絡(luò)上的其他節(jié)點(diǎn)發(fā)送信息,而不分主、從;●采用非破壞性總線仲裁技術(shù),當(dāng)兩個(gè)節(jié)點(diǎn)同時(shí)向網(wǎng)絡(luò)上傳送信息時(shí),優(yōu)先級(jí)低的節(jié)點(diǎn)主動(dòng)停止數(shù)據(jù)發(fā)送,而優(yōu)先級(jí)高的節(jié)點(diǎn)可不受影響地繼續(xù)傳輸數(shù)據(jù);●具有點(diǎn)對(duì)點(diǎn),一點(diǎn)對(duì)多點(diǎn)及全局廣播傳送接收數(shù)據(jù)的功能。通信距離最遠(yuǎn)可達(dá)10km(5kb/s),通信速率最高可達(dá)1Mb/s(40m),網(wǎng)絡(luò)節(jié)點(diǎn)數(shù)實(shí)際可達(dá)110個(gè),每一幀的有效字節(jié)數(shù)最多為8個(gè),這樣傳輸時(shí)間短,受干擾的概率低;●通信介質(zhì)采用廉價(jià)的雙絞線即可,無(wú)特殊要求;●每幀信息都有CRC校驗(yàn)及其他檢錯(cuò)措施,數(shù)據(jù)出錯(cuò)率極低,可靠性極高,在傳輸信息出錯(cuò)嚴(yán)重時(shí),節(jié)點(diǎn)可自動(dòng)切斷它與總線的聯(lián)系,以使總線上的其他操作不受影響。目前廣泛流行的CAN總線器件有兩大類(lèi):一類(lèi)是獨(dú)立的CAN控制器,如82C200、SJA1000及Intel82526/

82527等;另一類(lèi)是帶有在片CAN的微控制器,如P8XC58216位微控制87C196CA/CB等。這里選用PHILIPS公司的SJA1000CAN控制器以及82C250總線收發(fā)器,主要是因?yàn)镋P9315沒(méi)有CAN控制器,而且SJA1000支持CAN2.OA/B規(guī)范,82C250可以支待110個(gè)CAN節(jié)點(diǎn),并且國(guó)內(nèi)市場(chǎng)上PHILIPS的產(chǎn)品型號(hào)比較多,購(gòu)買(mǎi)比較方便。

PHILIPS公司的SJA1000是符合CAN2.0B協(xié)議的總線控制器,它是應(yīng)用于汽車(chē)和一般工業(yè)環(huán)境的獨(dú)立CAN總線控制器。由于硬件和軟件的兼容,它將會(huì)替代PCA82C200,它與PCA82C200相比具有更先進(jìn)的特征,因此特別適合于轎車(chē)內(nèi)的電子模塊傳感器、制動(dòng)器的連接和通用工業(yè)應(yīng)用中特別是系統(tǒng)優(yōu)化、系統(tǒng)診斷和系統(tǒng)維護(hù)。SJA1000具有完成CAN通信協(xié)議所要求的全部特性。經(jīng)過(guò)簡(jiǎn)單總線連接的SJA1000可完成CAN總線的物理層和數(shù)據(jù)鏈路層的所有功能。其硬件與軟件設(shè)計(jì)可兼容基本CAN模式(BasicCAN)和新增加的增強(qiáng)CAN模式(PeliCAN)CAN?2.0B協(xié)議。這一部分用戶可參照SJA1000的數(shù)據(jù)手冊(cè)。開(kāi)發(fā)板上CAN總線的硬件連接如圖3.22、圖3.23和圖3.24所示。圖3.22CAN總線硬件連接圖(1)圖3.23CAN總線硬件連接圖(2)圖3.24CAN總線硬件連接圖(3)

ADS下測(cè)試包含ebdtest_can和looptest_can兩個(gè)工程,其中l(wèi)ooptest_can是回環(huán)測(cè)試,而ebdtest_can是兩個(gè)can口通信的測(cè)試。測(cè)試步驟如下:

(1)運(yùn)行程序顯示如下:

SMCBCR2=0X20001C61

SMCBCR2=0X1C61

SJA1000_MOD_000X21

SJA1000_MOD_010X21

--------------------------------------

(2)輸入help命令,了解可支持的命令如下:

myshell>help,

read

write

getfrmsendfrm help

exitquit

(3)發(fā)送數(shù)據(jù):

myshell>sendfrm,

pleaseinputcommand.formatis:

8addr0addr1d0d1d2d3d4d5d6d7

xx--xx--xx--xx--xx--xx

BUF[0]=8BUF[1]=4BUF[2]=5BUF[3]=254BUF[4]=255BUF[5]=3BUF[6]=4BUF[7]=5BUF[8]=88BUF[9]=75BUF[10]=155BUF[11]=8BUF[12]=0BUF[13]=0BUF[14]=0BUF[15]=1BUF[16]=1BUF[17]=1BUF[18]=1BUF[19]=1BUF[20]=1BUF[21]=1BUF[22]=8BUF[23]=0BUF[24]=0BUF[25]=0BUF[26]=0BUF[27]=0BUF[28]=0BUF[29]=0BUF[30]=0BUF[31]=0BUF[32]=0[0]=8[1]=4[2]=5[3]=254[4]=255[5]=3[6]=4[7]=5[8]=88[9]=75[10]=155

xxxxxxxxxxxx

TXdata[0]=8TXdata[1]=4TXdata[2]=5TXdata[3]=254TXdata[4]=255TXdata[5]=3TXdata[6]=4TXdata[7]=5TXdata[8]=88TXdata[9]=75TXdata[10]=155xxxxxxxxxxxx

TXdata[0]=8TXdata[1]=0TXdata[2]=0TXdata[3]=0TXdata[4]=1TXdata[5]=1TXdata[6]=1TXdata[7]=1TXdata[8]=1TXdata[9]=1TXdata[10]=1xxxxxxxxxxxx

TXdata[0]=8TXdata[1]=0TXdata[2]=0TXdata[3]=0TXdata[4]=0TXdata[5]=0TXdata[6]=0TXdata[7]=0TXdata[8]=0TXdata[9]=0TXdata[10]=0

(4)接收數(shù)據(jù):

myshell>getfrm,

readin3frames

8402542553458875155

80001111111

80000000000

myshell>3.3.4IIC總線讀取RTC芯片測(cè)試

DS1337串行實(shí)時(shí)時(shí)鐘芯片是一種低功耗,全部采用BCD碼的時(shí)鐘日歷芯片,它帶有兩個(gè)可編程的定時(shí)鬧鐘和一個(gè)可編程的方波輸出。其地址和數(shù)據(jù)可通過(guò)IIC總線串行傳輸,能提供秒、分、時(shí)、日、星期、月和年等信息。在月天數(shù)小于31天的情況下,它也能自動(dòng)調(diào)整月份,包括對(duì)閏年的校正。時(shí)鐘可以以24小時(shí)模式工作,也可以以12小時(shí)模式工作。芯片的工業(yè)溫度范圍為-40~+80℃,提供有8引腳的DIP和SOIC封裝,引腳如圖3.25所示。圖3.25DS1337引腳圖引腳功能介紹如下:

(1)?VCC,GND:直流電源和接地端,VCC的輸入范圍為1.8~5.5?V。

(2)?X1、X2:標(biāo)準(zhǔn)的32.768?kHz的石英晶振接入端,內(nèi)部晶振電路設(shè)計(jì)要求晶振特定電容負(fù)載為6?pF。另外,這兩個(gè)引腳還可以有其他接法,即:X1腳連接外部振蕩信號(hào)源,而將X2腳懸空。

(3)?SCL:串行時(shí)鐘輸入,用來(lái)在總線上進(jìn)行同步數(shù)據(jù)傳輸。

(4)?SDA:串行數(shù)據(jù)輸入/輸出,SDA是IIC總線接口的數(shù)據(jù)輸入/輸出引腳,開(kāi)漏輸出,使用時(shí)要求接一個(gè)上拉電阻。

(5)?SQW/:方波/中斷輸出,可通過(guò)對(duì)DS1337的內(nèi)部控制寄存器進(jìn)行編程來(lái)控制這個(gè)引腳是輸出方波還是輸出中斷信號(hào)。該引腳是開(kāi)漏輸出,使用時(shí)要接一個(gè)外部的上拉電阻。

(6):中斷輸出端,使能時(shí),如果鬧鐘寄存器的設(shè)定值與當(dāng)前時(shí)間匹配,該腳會(huì)輸出一個(gè)低電平。該引腳也是開(kāi)漏輸出,使用時(shí)要接上拉電阻。

DS1337的內(nèi)部寄存器地址分配方式如圖3.26所示。在多字節(jié)存取過(guò)程中,當(dāng)?shù)刂分羔樀竭_(dá)0FH,即寄存器空間的最后一個(gè)單元時(shí),下一個(gè)操作地址將翻卷到00H。在IIC總線的開(kāi)始、停止或在地址指針增加到00H位置時(shí),當(dāng)前時(shí)間會(huì)傳送給一組二級(jí)寄存器,在這期間,時(shí)鐘照常運(yùn)轉(zhuǎn)。這樣就不必在讀取當(dāng)前時(shí)間期間和主寄存器更新的情況下再次讀取主寄存器中的數(shù)據(jù),從而防止發(fā)生錯(cuò)誤。在開(kāi)發(fā)板上的硬件連接圖如圖3.27所示。圖3.26DS1337寄存器地址分配圖3.27DS1337硬件原理圖在ADS下的測(cè)試ebdtest_iic工程包含有iic.c、iic.h、main.c和9315addr.h4個(gè)文件。Loadimage后,運(yùn)行程序,出現(xiàn)命令提示行Begintotestiicdrivers并顯示時(shí)間信息為:1分鐘后測(cè)試結(jié)束。3.3.5IDE硬盤(pán)測(cè)試

IDE(IntegatedDriverElectronics)硬盤(pán)是Linux系統(tǒng)中最常用的硬盤(pán)。由于IDE硬盤(pán)比較便宜,大多數(shù)現(xiàn)代PC在主板上都有一個(gè)或更多的IDE控制器。每個(gè)IDE控制器可以支持兩個(gè)硬盤(pán),一個(gè)是主盤(pán)(master),另一個(gè)是從盤(pán)(slave)。主、從的區(qū)別可通過(guò)硬盤(pán)上的跳線設(shè)置。隨著技術(shù)的發(fā)展,產(chǎn)品對(duì)數(shù)據(jù)傳輸速度要求的提高,IDE接口硬盤(pán)的數(shù)據(jù)傳輸模式經(jīng)歷了3個(gè)不同的技術(shù)變化,由最初的PIO模式到DMA模式,再到UltraDMA模式。

1.?PIO模式

PIO的英文拼寫(xiě)是“ProgrammingInput/OutputModel”,PIO模式是一種通過(guò)CPU執(zhí)行I/O端口指令來(lái)進(jìn)行數(shù)據(jù)的讀/寫(xiě)的數(shù)據(jù)交換模式,是最早的硬盤(pán)數(shù)據(jù)傳輸模式。此種模式的數(shù)據(jù)傳輸速率低,CPU占有率也很高,大量傳輸數(shù)據(jù)時(shí)會(huì)因?yàn)檎加眠^(guò)多的CPU資源而導(dǎo)致系統(tǒng)停頓,無(wú)法進(jìn)行其他的操作。PIO數(shù)據(jù)傳輸模式又分為PIOmode0、PIOmode1、PIOmode2、PIOmode3、PIOmode4幾種模式,數(shù)據(jù)傳輸速率從3.3MB/s到16.6MB/s不等。受限于傳輸速率低下和極高的CPU占有率,這種數(shù)據(jù)傳輸模式很快就被淘汰。

2.?DMA模式

DMA的英文拼寫(xiě)是“DirectMemoryAccess”,意思就是直接內(nèi)存訪問(wèn),是一種不經(jīng)過(guò)CPU而直接從內(nèi)存里存取數(shù)據(jù)的數(shù)據(jù)交換模式。PIO模式下硬盤(pán)和內(nèi)存之間的數(shù)據(jù)傳輸是由CPU來(lái)控制的,而在DMA模式下,CPU只須向DMA控制器下達(dá)指令,讓DMA控制器來(lái)處理數(shù)據(jù)的傳送,數(shù)據(jù)傳送完畢再把信息反饋給CPU,這樣就很大程度上減輕了CPU的資源占有率。DMA模式與PIO模式的區(qū)別就在于,DMA模式不過(guò)分依賴(lài)CPU,可以大大節(jié)省系統(tǒng)資源,二者在傳輸速度上的差異并不十分明顯。DMA模式又可以分為Single-WordDMA(單字節(jié)DMA)和Multi-WordDMA(多字節(jié)DMA)兩種,其中所能達(dá)到的最大傳輸速率也只有16.6?MB/s。

3.?UltraDMA模式

UltraDMA的英文拼寫(xiě)為“UltraDirectMemoryAccess”,一般簡(jiǎn)寫(xiě)為UDMA,含義是高級(jí)直接內(nèi)存訪問(wèn)。UDMA模式采用16bitMulti-WordDMA(16位多字節(jié)DMA)模式為基準(zhǔn),可以理解為DMA模式的增強(qiáng)版本,它在包含了DMA模式的優(yōu)點(diǎn)的基礎(chǔ)上,又增加了CRC(CyclicRedundancyCheck,循環(huán)冗余碼校驗(yàn))技術(shù),提高了數(shù)據(jù)傳輸過(guò)程中的準(zhǔn)確性,安全性也得到了保障。在以往的硬盤(pán)數(shù)據(jù)傳輸模式下,一個(gè)時(shí)鐘周期只傳輸一次數(shù)據(jù),而在UDMA模式中逐漸應(yīng)用了DoubleDataRate(雙倍數(shù)據(jù)傳輸)技術(shù),因此數(shù)據(jù)傳輸速度有了極大的提高。此技術(shù)就是在時(shí)鐘的上升期和下降期各自進(jìn)行一次數(shù)據(jù)傳輸,可以使數(shù)據(jù)傳輸速度成倍地增長(zhǎng)。在UDMA模式發(fā)展到UDMA133之后,受限于IDE接口的技術(shù)規(guī)范,無(wú)論是連接器、連接電纜、信號(hào)協(xié)議都表現(xiàn)出了很大的技術(shù)瓶頸,而且其支持的最高數(shù)據(jù)傳輸率也有限。同時(shí)隨著IDE接口傳輸率的提高,也就是工作頻率的提高,IDE接口交叉干擾、地線增多、信號(hào)混亂等缺陷也給其發(fā)展帶來(lái)了很大的制約,被新一代的SATA接口取代也就在所難免了。

IDE的測(cè)試包括寫(xiě)、讀兩部分。注意:IDE硬盤(pán)應(yīng)該工作在主模式(master)下,否則不能正確讀出硬盤(pán)中的內(nèi)容。

(1)?IDE的傳輸方式選擇了PIO4。

(2)向硬盤(pán)的第一個(gè)扇區(qū)(1磁頭、0磁道、1扇區(qū))寫(xiě)入數(shù)據(jù)0~511,為512個(gè)字節(jié),再讀出第一個(gè)扇區(qū)內(nèi)容,讀出數(shù)據(jù)為0~511,驗(yàn)證正確。測(cè)試程序流程如圖3.28和圖3.29所示。圖3.28IDE寫(xiě)操作測(cè)試流程(1)圖3.29IDE讀操作測(cè)試流程(2)測(cè)試步驟如下:

(1)先讀出硬盤(pán)第一個(gè)分區(qū)的內(nèi)容,并打印出來(lái);

(2)將讀出的內(nèi)容寫(xiě)入硬盤(pán)第一個(gè)分區(qū);

(3)將硬盤(pán)第一分區(qū)的內(nèi)容讀出來(lái),若操作正確,就打印出來(lái),以此來(lái)驗(yàn)證對(duì)硬盤(pán)操作是否正常,IDE口能否正常工作。3.3.6A/D轉(zhuǎn)換測(cè)試

MAX1261是一款低功耗,12位模數(shù)轉(zhuǎn)換器(ADC),采用逐次逼近型ADC結(jié)構(gòu),具有自動(dòng)關(guān)斷、快速喚醒(2?μs)、片上時(shí)鐘、+2.5?V內(nèi)部基準(zhǔn)和高速單字節(jié)寬度等的并行接口。它工作于+3?V單模擬電壓,并且具有一個(gè)VLOGIC引腳,允許芯片直接和+1.8~+5.5?V的數(shù)字電源接口。在最大采樣速率250kb/s下,芯片功耗僅為5.7mW(VDD=VLOGIC)。兩種軟件可選擇的關(guān)斷模式允許在兩次數(shù)據(jù)轉(zhuǎn)換之間關(guān)閉MAX1261/MAX1263,通過(guò)訪問(wèn)并口可將其返回至正常工作狀態(tài)。轉(zhuǎn)換之間的關(guān)斷模式能在更低的采樣速率下將電源電流減小至10μA以下。這款芯片提供軟件可配置的模擬輸入,用于選擇單極性/雙極性和單端/偽差分工作模式。在單端模式下,MAX1261有8個(gè)輸入通道(在偽差分模式下有4個(gè)輸入通道)。出色的動(dòng)態(tài)特性和低功耗特性結(jié)合,及其易使用性和小尺寸封裝,使得這些轉(zhuǎn)換器成為電池供電、數(shù)據(jù)采集系統(tǒng)及其他對(duì)功耗、尺寸要求苛刻的電路的理想選擇。MAX1261采用28引腳QSOP封裝,如圖3.30所示。圖3.30MAX1261管腳圖引腳功能如下所述:

(1)?VDD、GND:直流電源和接地端,VDD為+3V單模擬電源。

(2)?HBEN:高字節(jié)使能端,用于得到12位的轉(zhuǎn)換結(jié)果。置位時(shí),讀取高四位的數(shù)據(jù);清零時(shí),讀取低八位的數(shù)據(jù)。

(3)?CLK:時(shí)鐘輸入端,采用外部時(shí)鐘模式時(shí),接TLL或COMS兼容的時(shí)鐘;采用內(nèi)部時(shí)鐘模式時(shí),CLK與VCC或GND連接。

(4):中斷輸出端,當(dāng)轉(zhuǎn)換完成和數(shù)據(jù)準(zhǔn)備好之后,信號(hào)變低。

(5),:讀/寫(xiě)信號(hào)輸入端。

(6):片選信號(hào)輸入端,信號(hào)為低電平時(shí),選中芯片;高電平時(shí),數(shù)據(jù)(D7~D0)輸出為高阻抗。

(7)?D0~D7:模擬信號(hào)輸入通道。

(8)?COM:模擬輸入時(shí)的參考地。

(9)?VLOGIC:數(shù)字電源端,為數(shù)據(jù)轉(zhuǎn)換的數(shù)字輸出供電,范圍為1.8?V~(VDD+0.3?V)。

(10)?REFADJ端:使用外部參考模式時(shí),把REFADJ端與VDD連接,這樣就禁用了內(nèi)部參考模式。

(11)?REF端:使用內(nèi)部參考模式時(shí),用4.7μF的電容接地。開(kāi)發(fā)板上硬件連接圖如圖3.31所示。圖3.31MAX1261連接圖

MAX1261接在nCS3上,物理地址為0x31000000。test_ad工程下包含有ad_test.c、max1261.c和9315addr.h3個(gè)文件?!?9315addr.h:所用地址頭文件?!?max1261.c:主要包括對(duì)MAX1261的讀max1261_read(void)、寫(xiě)max1261_write(unsignedcharcmd)操作?!?ad_test.c:包括具體對(duì)MAX1261的配置和測(cè)試。

Loadimage后,等待輸入命令:

myshell>●?config1:用于配置MAX1261工作的模式。

0:完全掉電模式,時(shí)鐘模式無(wú)影響;

1:備用掉電模式,時(shí)鐘模式無(wú)影響;

2:正常工作模式,內(nèi)部時(shí)鐘模式;

3:正常工作模式,外部時(shí)鐘模式?!?config2:用于配置MAX1261的模擬輸入模式。

0:偽差分模擬輸入模式;

1:?jiǎn)味四M輸入模式?!?config3:用于配置MAX1261的極性。

0:雙極性;

1:?jiǎn)螛O性?!?config4:用于配置MAX1261的通道。

0:第0通道被選通;

1:第1通道被選通;

2:第2通道被選通;

3:第3通道被選通;

4:第4通道被選通;

5:第5通道被選通;

6:第6通道被選通;

7:第7通道被選通?!?startin:用于使MAX1261開(kāi)始轉(zhuǎn)換的命令,且采用內(nèi)部捕捉模式。●?startex:用于使MAX1261開(kāi)始轉(zhuǎn)換的命令,且采用外部捕捉模式?!?exitadc:用于退出測(cè)試程序。舉例:

myshell>config4

0

channel0isselected.

myshell>startin

AD_data=0x401

AD_data=0x405每通道轉(zhuǎn)換300次,單端輸入電壓值為0.625?V,即為0x400,記錄所有轉(zhuǎn)換值,舍棄最大值與最小值,取平均值,所得數(shù)據(jù)如表3.1所示。表3.1MAX1261轉(zhuǎn)換值記錄3.3.7D/A轉(zhuǎn)換測(cè)試

MAX5821是雙路、10位、電壓輸出的數(shù)模轉(zhuǎn)換器(DAC),具有兼容I2C的2線接口,工作時(shí)鐘頻率可達(dá)400?kHz。該器件工作于2.7~5.5?V單電源,在VDD=3.6?V時(shí),僅消耗115?μA的電源電流。低功耗關(guān)斷模式將電源電流消耗降低至1?μA以下。MAX5821具有軟件選擇的3種關(guān)斷阻抗:100?kΩ,1?kΩ和高阻抗。其他特性包括內(nèi)部精密滿擺幅輸出緩沖器和上電復(fù)位(POR)電路,該電路使DAC上電時(shí)處于100?kΩ的關(guān)斷模式。管腳圖如圖3.32所示。圖3.32MAX5821管腳圖

開(kāi)發(fā)板上硬件連接圖如圖3.33所示。圖3.33MAX5821硬件連接圖

ADS下的測(cè)試過(guò)程:test_da工程可用來(lái)轉(zhuǎn)換0~1023的任意數(shù)值,在轉(zhuǎn)換之前需要有喚醒命令,在此可調(diào)用喚醒函數(shù)。

intwritecommand(void)

//喚醒函數(shù)

{

unsignedcharcommand1=0xf0;

//擴(kuò)展命令模式

unsignedcharcommand2=0x0c;

//喚醒A、B寄存器命令(0x04喚醒A寄存器,0x08喚醒B寄存器)

Start(); /*寫(xiě)地址和發(fā)出寫(xiě)命令(A6...A0R/W)*/

writebyte(0x70); /*發(fā)出擴(kuò)展命令0xf0*/

writebyte(command1); /*寫(xiě)數(shù)據(jù)*/

writebyte(command2);

Stop();

return1;

}操作步驟如下:

(1)?LoadImage后,運(yùn)行程序,有命令提示inputcommand(12):輸入0:DAC的輸入端A和DAC寄存器被載入新的數(shù)據(jù),DAC的輸入端B中的內(nèi)容被傳送到DAC寄存器,所有的輸出更新。輸入1:DAC的輸入端B和DAC寄存器被載入新的數(shù)據(jù),DAC的輸入端A中的內(nèi)容被傳送到DAC寄存器,所有的輸出更新。輸入4:DAC的輸入端A被載入新的數(shù)據(jù),DAC的輸出保持不變。輸入5:DAC的輸入端B被載入新的數(shù)據(jù),DAC的輸出保持不變。輸入8:所有輸入端中的內(nèi)容被傳送到各自的DAC寄存器,所有DAC的輸出也被同時(shí)更新,DAC的輸入端A被載入新的數(shù)據(jù)。輸入9:所有輸入端中的內(nèi)容被傳送到各自的DAC寄存器,所有DAC的輸出也被同時(shí)更新,DAC的輸入端B被載入新的數(shù)據(jù)。輸入12:所有的DACs被載入新的數(shù)據(jù),所有的DAC輸出也同時(shí)被更新,所有的輸入端和DAC寄存器也被更新為新的數(shù)據(jù)。輸入13:所有的輸入端被載入新的數(shù)據(jù),DAC的輸出保持不變。

(2)命令提示inputnumberis0~1023。輸入準(zhǔn)備轉(zhuǎn)換的數(shù)據(jù),用示波器測(cè)量電壓值,例如:

test_da1工程從0~1023依次轉(zhuǎn)換,再由1023~1依次轉(zhuǎn)換,通過(guò)示波器可看到波形是一個(gè)三角波。顯示信息如下:

BegintotestDAC

1100:LoadallDACswithnewdataandupdateallDACoutputs

simultaneously.BothinputandDACregistersareupdated

withnewdata.

inputcommand:

123.3.8PS/2測(cè)試

1.?ADS下測(cè)試程序程序開(kāi)始運(yùn)行后,等待接收PS/2鍵盤(pán)輸入的按鍵值。當(dāng)檢測(cè)到有按鍵按下時(shí),從寄存器SSPDR中讀取按鍵值,進(jìn)行判斷。如果不是ESC按鍵,則將對(duì)應(yīng)的掃描碼轉(zhuǎn)換為對(duì)應(yīng)的字符,并輸出;如果按下按鍵ESC,則退出程序。

2.調(diào)試中需要注意的事項(xiàng)●通信當(dāng)中,PC機(jī)配置成SPI的從模式,PS/2鍵盤(pán)默認(rèn)為主模式,提供通信時(shí)鐘?!駝?wù)必連接跳線J17、J18的2.3管腳和跳線J19、J20?!袢绻到y(tǒng)復(fù)位模塊不穩(wěn)定,會(huì)造成按鍵無(wú)反應(yīng)的情況,此時(shí)需檢查復(fù)位電路部分。3.3.9SPI測(cè)試

SPI總線系統(tǒng)是Motorola公司提出的一種同步串行外設(shè)接口,一般采用串行時(shí)鐘線(SCK)、主機(jī)輸入/從機(jī)輸出數(shù)據(jù)線MISO、主機(jī)輸出/從機(jī)輸入數(shù)據(jù)線MOSI和低電平有效的從機(jī)選擇線SS等四根線,完成CPU與各種外圍器件的同步串行通信。

SPI總線接口可以通過(guò)軟件配置,如一個(gè)主機(jī)和幾個(gè)從機(jī)、幾個(gè)從機(jī)相互連接構(gòu)成多主機(jī)系統(tǒng)(分布式系統(tǒng))、一個(gè)主機(jī)和一個(gè)或幾個(gè)從I/O設(shè)備所構(gòu)成的各種系統(tǒng)等。其數(shù)據(jù)傳輸以字節(jié)為單位,高位(MSB)在前,低位(LSB)在后。本系統(tǒng)中,默認(rèn)配置為單主單從模式。串行數(shù)據(jù)的發(fā)送和接收通過(guò)內(nèi)部移位寄存器來(lái)實(shí)現(xiàn)。在發(fā)送時(shí)向SPI數(shù)據(jù)寄存器寫(xiě)入數(shù)據(jù),數(shù)據(jù)寄存器和內(nèi)部移位寄存器之間沒(méi)有緩沖區(qū),寫(xiě)數(shù)據(jù)寄存器會(huì)使數(shù)據(jù)直接進(jìn)入內(nèi)部移位寄存器。主機(jī)通過(guò)提供移位時(shí)鐘和從使能信號(hào)來(lái)控制信息的流動(dòng),時(shí)鐘信號(hào)SCK的一次作用對(duì)應(yīng)于一位數(shù)據(jù)的發(fā)送(MISO)和另一位數(shù)據(jù)的接收(MOSI)。在主機(jī)中數(shù)據(jù)從移位寄存器自左向右發(fā)送到主機(jī)(MOSI),同時(shí)從機(jī)中的數(shù)據(jù)自右向左發(fā)送到主機(jī)(MISO),經(jīng)過(guò)8個(gè)時(shí)鐘周期完成一個(gè)字節(jié)的發(fā)送。當(dāng)傳輸結(jié)束時(shí),接收到的數(shù)據(jù)轉(zhuǎn)移到一個(gè)單字節(jié)的數(shù)據(jù)緩沖區(qū),下次傳輸時(shí),將其讀出。讀SPI數(shù)據(jù)寄存器將返回讀數(shù)據(jù)緩沖區(qū)的值,工作方式如圖3.34所示。圖3.34SPI工作方式本系統(tǒng)中,SPI接口通過(guò)跳線J17和J18與PS2復(fù)用,進(jìn)行測(cè)試時(shí)需要連接這兩個(gè)跳線的1、2管腳選通SPI模塊,如圖3.35所示。圖3.35SPI跳線設(shè)置

1.?ADS下測(cè)試程序在SPI測(cè)試程序中,發(fā)送線和接收線通過(guò)跳線冒連接起來(lái)。通過(guò)對(duì)比加、不加跳線兩種情況,驗(yàn)證SPI硬件電路性能。首先不連通跳線J29的1腳、3腳,循環(huán)發(fā)送任意一個(gè)數(shù)組(本程序中發(fā)送次數(shù)為5次),當(dāng)SPI緩沖區(qū)為空時(shí),將要發(fā)送的數(shù)據(jù)放入SPI緩沖區(qū)中,通過(guò)發(fā)送線發(fā)送出去。經(jīng)過(guò)適當(dāng)延時(shí)后,讀取接收緩沖區(qū)的內(nèi)容,因?yàn)榘l(fā)送線和接收線沒(méi)有連通,故接收緩沖區(qū)中數(shù)據(jù)為0。其次,連通跳線J29的1腳、3腳。此時(shí),SPI的發(fā)送線和接收線連通,經(jīng)過(guò)8?bit的延時(shí)后,讀取緩沖區(qū)里的內(nèi)容為前第8個(gè)已發(fā)送的數(shù)據(jù)。程序流程如圖3.36所示。圖3.36SPI測(cè)試程序流程

2.調(diào)試中需要注意的事項(xiàng)

(1)必須連接跳線J17和J18的1、2管腳,否則SPI接口被PS2選通,不作為SPI端口輸出。

(2)在連接J29的1、3管腳后,如果接收數(shù)據(jù)與發(fā)送數(shù)據(jù)之間不滿足8bit的延時(shí),可以適當(dāng)調(diào)整程序中的延時(shí)函數(shù),確保數(shù)據(jù)按照正常速率傳輸。

(3)在連接J29的1、3管腳時(shí),一定要將開(kāi)發(fā)板處于斷電模式,以免造成線路損壞。3.3.10RS488測(cè)試

RS488是一種廣泛應(yīng)用于工業(yè)控制領(lǐng)域的總線,采用平衡發(fā)送和差分接收方式,具有抑制共模干擾的能力,傳輸信號(hào)能在千米以外得到恢復(fù)。RS488采用兩根發(fā)送信號(hào)線、兩根接收信號(hào)線完成信號(hào)傳輸。

RS488標(biāo)準(zhǔn)規(guī)定:當(dāng)兩路信號(hào)差值在+2~+6?V之間時(shí),認(rèn)為是邏輯1;當(dāng)兩路信號(hào)差值在-2~-6?V之間時(shí),認(rèn)為是邏輯0;RS488采用全雙工工作方式,收、發(fā)可以同時(shí)進(jìn)行。EP9315內(nèi)部集成了三個(gè)UART,UART1可配置為串口232,UART2可配置為紅外接口,UART3可配置為串口488,外圍芯片為MAX488。在RS488測(cè)試時(shí),需要利用測(cè)試板輔助測(cè)試,這里提供488到232的轉(zhuǎn)換電路以方便調(diào)試。調(diào)試連接圖如圖3.37所示。圖3.37RS488調(diào)試連接圖本系統(tǒng)中采用的芯片是MAX488轉(zhuǎn)換芯片,其中TXD2與EP9315相連,發(fā)送數(shù)據(jù)通過(guò)該芯片由5、6管腳發(fā)出;接收到的數(shù)據(jù)通過(guò)7、8管腳輸入芯片,由RXD2傳至EP9315開(kāi)發(fā)板。開(kāi)發(fā)板上硬件連接圖如圖3.38所示。圖3.38MAX488硬件連接圖測(cè)試程序由發(fā)送和接收兩部分組成,首先從488端口發(fā)送字符串“testrs488,Input:”,通過(guò)488-232轉(zhuǎn)換電路,在PC機(jī)超級(jí)終端顯示出來(lái),等待接收數(shù)據(jù)。用戶從超級(jí)終端中鍵入任意字符,通過(guò)488-232轉(zhuǎn)換電路傳遞到開(kāi)發(fā)板的488端口,此時(shí)讀取488的寄存器內(nèi)容,送回終端回顯出來(lái),按ESC鍵結(jié)束測(cè)試。測(cè)試流程如圖3.39所示。圖3.39MAX488測(cè)試流程圖調(diào)試中注意事項(xiàng):

(1)在系統(tǒng)配置寄存器Devicecfg中,默認(rèn)使能的是uart1。在修改該寄存器的值之前,必須先對(duì)其進(jìn)行解鎖,方法是先向該寄存器中寫(xiě)入0xaa,然后再賦值。

(2)在配置控制寄存器uart3linctrl時(shí),high寄存器必須放在最后配置才能生效。配置順序可以是low→mid→high或者是mid→low→high。3.3.11網(wǎng)口測(cè)試

EP9315內(nèi)嵌有一個(gè)以太網(wǎng)控制器,支持媒體獨(dú)立接口(MediaIndependentInterface,MII)和帶緩沖DMA接口(BufferedDMAInterface,BDI),可在半雙工或全雙工模式下提供10M/100M的以太網(wǎng)接入。雖然EP9315內(nèi)部包含了以太網(wǎng)MAC控制,但并未提供物理層接口,因此,需外接一片物理層芯片以提供以太網(wǎng)的接入通道。常用的單口10M/100M高速以太網(wǎng)物理層接口器件主要有RTL8201、DM9161等,均可提供MII接口和傳統(tǒng)7線制網(wǎng)絡(luò)接口,可方便地與EP9315接口。本系統(tǒng)采用的是RTL8201芯片。以太網(wǎng)控制器工作流程主要由六個(gè)重要隊(duì)列完成:發(fā)送/接收描述符隊(duì)列,發(fā)送/接收狀態(tài)隊(duì)列,發(fā)送/接收數(shù)據(jù)隊(duì)列。這里以接收描述符隊(duì)列為例。接收描述符隊(duì)列用來(lái)在主機(jī)和MAC控制器之間傳遞接收描述符,該隊(duì)列的地址和大小通過(guò)初始化RDQBA、RDCA、RDQBL三個(gè)地址寄存器獲得,基地址(QBA)與內(nèi)存地址字對(duì)齊,當(dāng)前地址(CA)設(shè)置為第一個(gè)可用的QBA時(shí),描述符隊(duì)列的長(zhǎng)度是2的次方,否則,描述符處理器會(huì)工作異常,使接收數(shù)據(jù)幀出錯(cuò)。每一個(gè)描述符定義一個(gè)接收數(shù)據(jù)緩沖區(qū),其由兩個(gè)字組成。第一個(gè)字包括數(shù)據(jù)緩沖區(qū)的地址(RxBufAdr);第二個(gè)字由緩沖區(qū)長(zhǎng)度(BufferLength)、緩沖區(qū)索引號(hào)(BufferIndex)、緩沖區(qū)幀結(jié)束符(NotSOF)組

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論