




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、嵌入式技術(shù)基礎(chǔ)與實(shí)踐(第二版)習(xí)題參考答案目錄第1章 概述 習(xí)題參考答案1第2章 Freescale S08微控制器 習(xí)題參考答案3第3章 第一個(gè)樣例程序及工程組織 習(xí)題參考答案5第4章 基于硬件構(gòu)件的嵌入式系統(tǒng)開發(fā)方法 習(xí)題參考答案8第5章 串行通信接口SCI 習(xí)題參考答案10第6章 GPIO的應(yīng)用實(shí)例鍵盤、LED與LCD 習(xí)題參考答案12第7章 定時(shí)器模塊 習(xí)題參考答案13第8章 串行外設(shè)接口SPI 習(xí)題參考答案14第9章 Flash存儲(chǔ)器在線編程 習(xí)題參考答案15第10章 集成電路互連總線I2C 習(xí)題參考答案18第11章 模數(shù)轉(zhuǎn)換模塊A/D 習(xí)題參考答案20第12章 系統(tǒng)開發(fā)其他模塊應(yīng)用
2、 習(xí)題參考答案21第13章 JM60的USB 2.0開發(fā)方法 習(xí)題參考答案23第14章 DZ60的CAN總線開發(fā)方法 習(xí)題參考答案28I第1章 概述 習(xí)題參考答案1嵌入式系統(tǒng)的基本含義是什么?為什么說(shuō)單片機(jī)是典型的嵌入式系統(tǒng)?答:即MCU的含義是:在一塊芯片上集成了中央處理單元(CPU)、存儲(chǔ)器(RAM/ROM等)、定時(shí)器/計(jì)數(shù)器及多種輸入輸出(I/O)接口的比較完整的數(shù)字處理系統(tǒng)。大部分嵌入式系統(tǒng)以MCU為核心進(jìn)行設(shè)計(jì)。MCU從體系結(jié)構(gòu)到指令系統(tǒng)都是按照嵌入式系統(tǒng)的應(yīng)用特點(diǎn)專門設(shè)計(jì)的,它能很好地滿足應(yīng)用系統(tǒng)的嵌入、面向測(cè)控對(duì)象、現(xiàn)場(chǎng)可靠運(yùn)行等方面的要求。因此以MCU為核心的系統(tǒng)是應(yīng)用最廣的嵌
3、入式系統(tǒng)。 2 簡(jiǎn)述嵌入式系統(tǒng)的特點(diǎn)以及應(yīng)用領(lǐng)域。答:嵌入式系統(tǒng)屬于計(jì)算機(jī)系統(tǒng),但不單獨(dú)以通用計(jì)算機(jī)的面目出現(xiàn);嵌入式系統(tǒng)開發(fā)需要專用工具和特殊方法;使用MCU設(shè)計(jì)嵌入式系統(tǒng),數(shù)據(jù)與程序空間采用不同存儲(chǔ)介質(zhì);開發(fā)嵌入式系統(tǒng)涉及軟件、硬件及應(yīng)用領(lǐng)域的知識(shí);嵌入式系統(tǒng)的其他特點(diǎn),比如緊張的資源,較高穩(wěn)定性要求,低功耗,低成本等。一般用于工業(yè)控制,智能家電,日常電子等領(lǐng)域。 3比較MCU與CPU的區(qū)別與聯(lián)系。答:CPU是一個(gè)單獨(dú)的PC處理器。而MCU,則有微處理器,存儲(chǔ)器(RAM/ROM等)、定時(shí)器/計(jì)數(shù)器及多種輸入輸出(I/O)接口的比較完整的數(shù)字處理系統(tǒng)。所以可以這么說(shuō),MCU是一個(gè)包含微處理器
4、的嵌入式系統(tǒng),而CPU緊緊是一個(gè)處理器而已。4舉例說(shuō)明嵌入式系統(tǒng)在日常生活中的應(yīng)用。答:日常數(shù)碼產(chǎn)品:手機(jī),MP3,U盤,相機(jī)等。日常工業(yè)類:冰箱,空調(diào),微波爐,汽車等。5C語(yǔ)言的那些特性使得它成為嵌入式系統(tǒng)中使用頻率最高的高級(jí)語(yǔ)言。答:相比底端匯編,更簡(jiǎn)單易學(xué);與高級(jí)語(yǔ)言如(C+,C#,java等)相比,執(zhí)行效率高,編譯后的編碼體積小,而且支持好的編譯器還支持嵌入?yún)R編代碼;對(duì)位的操縱能力很強(qiáng)。6閱讀光盤中【第01章(概述)閱讀資料】中的“嵌入式C語(yǔ)言工程簡(jiǎn)明規(guī)范”,用一頁(yè)紙給出嵌入式C語(yǔ)言工程簡(jiǎn)明規(guī)范的要點(diǎn)。答:此規(guī)范主要針對(duì)單片機(jī)編程語(yǔ)言和08編譯器而言,包括命名、注釋、編碼規(guī)范性等內(nèi)容。
5、建議在一個(gè)工程或者一個(gè)項(xiàng)目中盡量遵循相同的代碼規(guī)范,而不是說(shuō)你只能擁有一個(gè)代碼規(guī)范。(1)命名規(guī)則:命名清晰明了,有明確含義,使用完整單詞或約定俗成的縮寫。通常,較短的單詞可通過(guò)去掉元音字母形成縮寫;較長(zhǎng)的單詞可取單詞的頭幾個(gè)字母形成縮寫。即"見(jiàn)名知意";命名風(fēng)格要自始至終保持一致;命名中若使用特殊約定或縮寫,要有注釋說(shuō)明;為了代碼復(fù)用,命名中應(yīng)避免適用與具體項(xiàng)目相關(guān)的前綴;應(yīng)使用英語(yǔ)命名。(2)注釋:注釋基本原則就是有助于對(duì)程序的閱讀理解,說(shuō)明程序在"做什么",解釋代碼的目的、功能和采用的方法。一般情況源程序有效注釋量在30左右。 注釋語(yǔ)言必須準(zhǔn)確、易
6、懂、簡(jiǎn)潔。邊寫代碼邊注釋,修改代碼同時(shí)修改相應(yīng)的注釋,不再有用的注釋要?jiǎng)h除。 匯編和C中都用"/",取消"" 不使用段注釋" /* */ "(調(diào)試時(shí)可用)。使用文件注釋必須說(shuō)明文件名、項(xiàng)目名稱、函數(shù)功能、創(chuàng)建人、創(chuàng)建日期、版本信息等相關(guān)信息。修改文件代碼時(shí),應(yīng)在文件注釋中記錄修改日期、修改人員,并簡(jiǎn)要說(shuō)明此次修改的目的。所有修改記錄必須保持完整。 文件注釋放在文件頂端,用"/*/"格式包含。 注釋文本每行縮進(jìn)4個(gè)空格;每個(gè)注釋文本分項(xiàng)名稱應(yīng)對(duì)齊。 函數(shù)頭部注釋應(yīng)包括函數(shù)名稱、函數(shù)功能、入口參數(shù)、出口參數(shù)等內(nèi)容。如有
7、必要還可增加作者、創(chuàng)建日期、修改記錄(備注)等相關(guān)項(xiàng)目。 函數(shù)頭部注釋放在每個(gè)函數(shù)的頂端,用"/*/"的格式包含。其中函數(shù)名稱應(yīng)簡(jiǎn)寫為FunctionName(),不加入、出口參數(shù)等信息。代碼注釋應(yīng)與被注釋的代碼緊鄰,放在其上方或右方,不可放在下面。如放于上方則需與其上面的代碼用空行隔開。一般少量注釋應(yīng)該添加在被注釋語(yǔ)句的行尾,一個(gè)函數(shù)內(nèi)的多個(gè)注釋左對(duì)齊;較多注釋則應(yīng)加在上方且注釋行與被注釋的語(yǔ)句左對(duì)齊。通常,分支語(yǔ)句(條件分支、循環(huán)語(yǔ)句等)必須編寫注釋。其程序塊結(jié)束行""的右方應(yīng)加表明該程序塊結(jié)束的標(biāo)記"end of ", 尤其在多
8、重嵌套時(shí)。同一類型的標(biāo)識(shí)符應(yīng)集中定義,并在定義之前一行對(duì)其共性加以統(tǒng)一注釋。對(duì)單個(gè)標(biāo)識(shí)符的注釋加在定義語(yǔ)句的行尾。 全局變量一定要有詳細(xì)的注釋,包括其功能、取值范圍、哪些函數(shù)或過(guò)程存取它以及存取時(shí)的注意事項(xiàng)等。 注釋用"/"的格式。 (3)編碼規(guī)范性:代碼的每一級(jí)均往右縮進(jìn)4個(gè)空格的位置;不使用Tab鍵,建議使用空格代替tab鍵,這樣代碼打印不回造成錯(cuò)亂;相對(duì)獨(dú)立的程序塊之間要加空行;括號(hào)內(nèi)側(cè)(即左括號(hào)后面和右括號(hào)前面)不加空格,多重括號(hào)間不加空格。如:SetName(GetFunc();函數(shù)形參之間應(yīng)該有且只有一個(gè)空格(形參逗號(hào)后面加空格),如:CallFunction(
9、para1, para2, para3),而CallFunction(para1,para2,para3) 不符合要求;操作符前后均加一個(gè)空格,如: nSum = nNunm1 + nNum2 。而nSum=nNunm1+nNum2 則不符合要求;單目操作符,如"!"、""、"+"、"-"、"&"(地址運(yùn)算符)等,后面不加空格,如:i+ ,pName = &name,bRes = !(x < 10);if、else if、else、for、while語(yǔ)句無(wú)論其執(zhí)行體是一條語(yǔ)
10、句還是多條語(yǔ)句都必須加花括號(hào),且左右花括號(hào)各獨(dú)占一行;Switch 語(yǔ)句必須包含default 分支;一個(gè)函數(shù)不要超過(guò)80行代碼。8第2章 Freescale S08微控制器 習(xí)題參考答案 1給出AW60 存儲(chǔ)器映像的簡(jiǎn)要說(shuō)明。答:所謂存儲(chǔ)器映像,是指地址$0000 $FFFF這個(gè)64KB空間,哪些地址被何種存儲(chǔ)器所占用,或者說(shuō)AW60的RAM、Flash、I/O映像寄存器各使用$0000 $FFFF這個(gè)64KB空間中的哪些地址。簡(jiǎn)單地說(shuō),就是$0000 $FFFF這個(gè)64KB空間是如何分配的。2AW60的引腳主要分為哪幾類?簡(jiǎn)要說(shuō)明主要引腳的功能。答:(1)電源類信號(hào)引腳(2)復(fù)位信號(hào)引腳(
11、3)主要功能模塊引腳。比如定時(shí)器,IRQ中斷等。(4)其他,比如背景調(diào)試BKGD引腳主要引腳:AW60最小系統(tǒng)連接的I/O口,以及各具體功能I/O口。3嵌入式系統(tǒng)中RAM和Flash作用分別是什么?答:一般來(lái)說(shuō)RAM這個(gè)區(qū)域安排用戶數(shù)據(jù)(主要是全局變量)和堆??臻g;Flash要用于存儲(chǔ)程序、常數(shù)、中斷向量等。 4給出AW60的硬件最小系統(tǒng)。答:AW60芯片的硬件最小系統(tǒng)包括電源及其濾波電路、復(fù)位電路、晶振電路及PLL濾 波電路、寫入器接口電路。5指出下列指令中的源操作數(shù)和目的操作數(shù)的尋址方式。(1) MOV #$80 , $80 (2) MOV $80,$A0(3) MOV $80 , X+
12、(4) MOV X+ , $80(5) LDA $80 , X答:(1)立即尋址,直接尋址 (2)直接尋址,直接尋址(3)直接尋址,無(wú)偏移量變址、變址加1尋址方式 (4)無(wú)偏移量變址、變址加1尋址方式, 直接尋址 (5)直接尋址,無(wú)偏移量變址、變址加1尋址方式6說(shuō)明跳轉(zhuǎn)指令BRA和JMP的差別。答:BRA是無(wú)條件相對(duì)轉(zhuǎn)移指令,轉(zhuǎn)移范圍是前127字節(jié)、后128字節(jié)。而JMP則是絕對(duì)地址跳轉(zhuǎn)指令。 7哪些指令影響堆棧指針?如何影響?答:PSH,PUL 。前者是向堆棧中放入,指針減1,向上移;而PUL剛好相反,指針加1,向下移。8說(shuō)明芯片初始化時(shí)堆棧指針的初始化方法。 答:SP是指向下一個(gè)棧地址的1
13、6位寄存器,堆棧指針SP采用遞減的結(jié)構(gòu),即進(jìn)棧SP減1,出棧時(shí)SP加1。初始化時(shí),SP的初值為$00FF(前置符號(hào)$表示十六進(jìn)制數(shù))。棧指針復(fù)位指令(RSP)可將SP的低8位置為$FF,而不影響高8位。 9寫出主要匯編偽指令? 答:變量定義(變量聲明)數(shù)字常數(shù)與字符串常數(shù)定義常數(shù)賦值與文本替代符偽指令指令存儲(chǔ)定位偽指令文件包含偽指令宏定義和宏調(diào)用偽指令定義存儲(chǔ)區(qū)域偽指令具體細(xì)節(jié)請(qǐng)參照2.7.2節(jié) 10編寫一段延時(shí)1000個(gè)指令周期的延時(shí)子程序。答:DL1000;MOV R7#248DJNZ R7$MOV R7#250DJNZ R74 RET第3章 第一個(gè)樣例程序及工程組織 習(xí)題參考答案1什么叫
14、通用I/O口?答:所謂通用I/O,也記為GPIO(General Purpose I/O),即基本的輸入/輸出,有時(shí)也稱并行I/O,或普通I/O,它是I/O的最基本形式。 2 什么叫上拉電阻與下拉電阻?它們的作用是什么?如何選擇上拉電阻與下拉電阻的阻值?哪些情況下使用上拉電阻? 哪些情況下使用下拉電阻? 答:通俗地說(shuō),若MCU的某個(gè)引腳通過(guò)一個(gè)電阻接到電源(Vcc)上,這個(gè)電阻被稱為“上拉電阻”。與之相對(duì)應(yīng),若MCU的某個(gè)引腳通過(guò)一個(gè)電阻接到地(GND)上,則相應(yīng)的電阻被稱為“下拉電阻”;他們使得懸空的芯片引腳被上拉電阻或下拉電阻初始化為高電平或低電平 ;根據(jù)實(shí)際情況,上拉電阻與下拉電阻可以取
15、值在1K10K之間,其阻值大小與靜態(tài)電流及系統(tǒng)功耗相關(guān);當(dāng)某個(gè)引腳需要初始化成高電平時(shí)可以通過(guò)上拉電阻接電源,當(dāng)某個(gè)引腳要初始化低電平時(shí)可以通過(guò)下拉電阻接地。3什么是OC輸出?為什么OC輸出的I/O口一定要上拉?答:OC輸出,即開漏輸出,即集電極開路。 只有接了上拉電阻,才能輸出高低電平,否則只能輸出低電平了。 4為什么在無(wú)操作系統(tǒng)的嵌入式系統(tǒng)軟件主程序中使用無(wú)限循環(huán)?答:由于程序都是順序執(zhí)行的。如果不使用無(wú)限循環(huán),程序執(zhí)行一遍代碼,就不能在接受其他的任務(wù)操作了。在嵌入式系統(tǒng)中,這是致命的,如果一個(gè)嵌入式產(chǎn)品每次只能使用一次或只接受一次任務(wù),那是無(wú)法想象的。但是使用了無(wú)限循環(huán),就可以不停地監(jiān)聽
16、任務(wù),并執(zhí)行。 5找出樣例子工程的機(jī)器碼文件,解釋S19文件的含義。答:源文件經(jīng)編譯、連接后可獲得目標(biāo)碼文件(.S19文件),它是Freescale MCU的機(jī)器碼文件,通過(guò)寫入程序可將機(jī)器碼下載到目標(biāo)MCU內(nèi)的Flash存儲(chǔ)器,也可以通過(guò)光盤中蘇州大學(xué)嵌入式系統(tǒng)研發(fā)中心開發(fā)的獨(dú)立寫入軟件SD-Programmer-S08讀出寫入到Flash的S19的內(nèi)容,觀察實(shí)際寫入到Flash的內(nèi)容是否和S19的內(nèi)容相同。該程序也可以擦寫Flash。目標(biāo)代碼文件是以S記錄格式表示的機(jī)器碼文件。S記錄格式是Freescale公司的十六進(jìn)制目標(biāo)代碼文件,它將目標(biāo)程序和數(shù)據(jù)以ASCII碼格式表示,可直接顯示和打
17、印。目標(biāo)文件由若干行S記錄構(gòu)成,每行S記錄可以用CR/LF/NUL結(jié)尾。一行S記錄由五部分組成,具體細(xì)節(jié)請(qǐng)參考書中3.4.4 。6舉例給出CW環(huán)境C語(yǔ)言工程文件的組織結(jié)構(gòu)圖。答:以下是控制小燈閃爍的CW環(huán)境C語(yǔ)言工程文件的組織結(jié)構(gòu)圖7分析Project.prm文件的功能。答:Project.prm文件主要實(shí)現(xiàn)了芯片的RAM和ROM的定義,初始化RAM中的變量。初始化堆棧的大小。定義復(fù)位向量,即應(yīng)用程序的默認(rèn)入口。還包含了啟動(dòng)代碼,是硬件復(fù)位后的函數(shù)入口。 8如何查看一個(gè)文件.LST文件,舉例分析一個(gè)LST文件。答:利用Freescale Codewarrior打開控制小燈閃爍工程文件,通過(guò)ed
18、it-standard settings-target compiler for HC08-option-output-generate Listing File點(diǎn)擊確定編譯連接可以生成.LST文件。然后在該工程的bin文件夾中可以找.LST文件,通過(guò)Freescale Codewarrior 打開main.lst文件。看下面的一段代碼:26:Light_Init(Light_Run_PORT,Light_Run,Light_OFF); /指示燈初始化004c a606 2 LDA #6004e 87 2 PSHA 004f 5f 1 CLRX 0050 4f 1 CLRA 0051 cd00
19、00 6 JSR Light_Init0054 8a 3 PULH 26: Light_Init(Light_Run_PORT,Light_Run,Light_OFF)是C程序代碼;004c a606 004e 87 0050 4f 0051 cd0000 004f 5f 0054 8a 是該程序的機(jī)器代碼;其后面的對(duì)應(yīng)的是匯編程序代碼。 9如何能知道一段或一句C語(yǔ)言源程序的匯編代碼與機(jī)器碼,舉例之。答:請(qǐng)參考第8題。10給出一個(gè)C語(yǔ)言控制三盞小燈的程序,并調(diào)試,功能自定。答:請(qǐng)參考課本中3.5及隨書光盤。11給出一個(gè)S08匯編語(yǔ)言控制三盞小燈的程序,并調(diào)試,功能自定。答:請(qǐng)參考課本中3.6及
20、隨書光盤。12分析一個(gè)map文件,簡(jiǎn)要說(shuō)明map文件給了我們什么信息?答:打開工程后,展開“工程設(shè)置文件夾<Project Settings>”后,再展開“Linker Files” 文件夾,可以看到“Project.map”文件,通常稱之為工程的“映像文件”,這個(gè)文件告訴我們,源代碼被編譯連接后的機(jī)器碼,到底被下載到MCU內(nèi)存儲(chǔ)器中的什么地方,在高級(jí)調(diào)試時(shí),可能需要用到這些知識(shí)。第4章 基于硬件構(gòu)件的嵌入式系統(tǒng)開發(fā)方法 習(xí)題參考答案1簡(jiǎn)要闡述嵌入式硬件構(gòu)件的基本思想及優(yōu)點(diǎn)。答:嵌入式硬件構(gòu)件是指將一個(gè)或多個(gè)硬件功能模塊、支撐電路及其功能描述封裝成一個(gè)可重用的硬件實(shí)體,并提供一系列
21、規(guī)范的輸入/輸出接口。 優(yōu)點(diǎn):結(jié)構(gòu)清晰,方便移植。2硬件構(gòu)件如何分類?給出各類硬件構(gòu)件的定義及原理圖設(shè)計(jì)要點(diǎn)。答:根據(jù)所擁有接口類型的不同,硬件構(gòu)件分為核心構(gòu)件、中間構(gòu)件和終端構(gòu)件三種類型。核心構(gòu)件只有提供接口,沒(méi)有需求接口。也就是說(shuō),它只為其它硬件構(gòu)件提供服務(wù),而不接受服務(wù)。在以單MCU為核心的嵌入式系統(tǒng)中,MCU的最小系統(tǒng)就是典型的核心構(gòu)件。中間構(gòu)件既有需求接口又有提供接口,即它不僅能夠接受其它構(gòu)件提供的服務(wù),而且也能夠?yàn)槠渌鼧?gòu)件提供服務(wù)。而終端構(gòu)件只有需求接口,它只接受其它構(gòu)件提供的服務(wù)。 設(shè)計(jì)核心構(gòu)件時(shí),需考慮的問(wèn)題是:“核心構(gòu)件能為其他構(gòu)件提供哪些信號(hào)?”核心構(gòu)件設(shè)計(jì)的目標(biāo)是:凡是使
22、用該MCU進(jìn)行硬件系統(tǒng)設(shè)計(jì)時(shí),核心構(gòu)件可以直接“組裝”到系統(tǒng)中,無(wú)須任何改動(dòng)。為了實(shí)現(xiàn)這一目標(biāo),在設(shè)計(jì)核心構(gòu)件的實(shí)體時(shí)必須考慮細(xì)致、周全,包括穩(wěn)定性、擴(kuò)展性等,封裝要完整。 設(shè)計(jì)中間構(gòu)件時(shí),需考慮的問(wèn)題是:“中間構(gòu)件需要接受哪些信號(hào),以及提供哪些信號(hào)?”為直觀起見(jiàn),設(shè)計(jì)中間構(gòu)件時(shí),將構(gòu)件的需求接口放置在構(gòu)件實(shí)體的左側(cè),提供接口放置在右側(cè)。 設(shè)計(jì)終端構(gòu)件時(shí),需考慮的問(wèn)題是:“終端構(gòu)件需要什么信號(hào)才能工作?”。終端構(gòu)件沒(méi)有提供接口,它僅有與上一級(jí)構(gòu)件交互的需求接口,因而接口標(biāo)識(shí)均為斜體標(biāo)注的接口注釋。3為什么要將某些寄存器名和寄存器位在頭文件中進(jìn)行宏定義?答:對(duì)MCU內(nèi)的模塊寄存器名和端口名進(jìn)行重
23、定義,在其它的代碼里面都將使用宏名對(duì)模塊寄存器和端口進(jìn)行操作。這樣,當(dāng)?shù)讓域?qū)動(dòng)程序移植到其它MCU時(shí),只要修改重定義語(yǔ)句就可以了。 4為什么在設(shè)計(jì)底層硬件驅(qū)動(dòng)構(gòu)件時(shí),不能使用全局變量?答:應(yīng)用程序在使用底層構(gòu)件時(shí),嚴(yán)格禁止通過(guò)全局變量來(lái)傳遞參數(shù),所有的數(shù)據(jù)傳遞都要通過(guò)函數(shù)的形式參數(shù)來(lái)接收。這樣做不但使得接口簡(jiǎn)潔,更加避免了全局變量可能引發(fā)的安全隱患。5給出設(shè)計(jì)底層硬件驅(qū)動(dòng)構(gòu)件的基本原則,并舉例說(shuō)明。答:在對(duì)底層構(gòu)件進(jìn)行設(shè)計(jì)時(shí),最關(guān)鍵的工作是要對(duì)構(gòu)件的共性和個(gè)性進(jìn)行分析,抽取出構(gòu)件的屬性和對(duì)外接口函數(shù)。盡量做到:當(dāng)一個(gè)底層構(gòu)件應(yīng)用到不同系統(tǒng)中時(shí),僅需修改構(gòu)件的頭文件,對(duì)于構(gòu)件的源程序文件則不必修
24、改或改動(dòng)很小。 例如,串行通信模塊SCI是大多數(shù)MCU都具有的內(nèi)部模塊。仔細(xì)分析各種MCU串行通信程序發(fā)現(xiàn):在查詢方式下,各種MCU都是根據(jù)狀態(tài)寄存器中的兩個(gè)標(biāo)志位來(lái)判斷是否接收到數(shù)據(jù)和數(shù)據(jù)是否發(fā)送完畢,這就是SCI模塊的共性。對(duì)于不同的MCU,該狀態(tài)寄存器的名稱可能不同,這兩個(gè)標(biāo)志位的位號(hào)也有可能不同。此外,用以設(shè)置波特率、通信格式、是否校驗(yàn)、是否允許中斷等參數(shù)的寄存器也不同,這就是SCI模塊的個(gè)性。分析出了共性和個(gè)性之后,就可以抽取出SCI構(gòu)件的屬性和操作,編制構(gòu)件頭文件和程序文件了。 6什么叫程序復(fù)用?什么叫程序移植?怎樣才能方便重用與移植。答:復(fù)用是指在一個(gè)系統(tǒng)中,同一構(gòu)件可被重復(fù)使用
25、多次。移植是指將一個(gè)系統(tǒng)中使用到的構(gòu)件應(yīng)用到另外一個(gè)系統(tǒng)中;在設(shè)計(jì)時(shí)最關(guān)鍵的工作是要對(duì)構(gòu)件的共性和個(gè)性進(jìn)行分析,抽取出構(gòu)件的屬性和對(duì)外接口函數(shù),設(shè)計(jì)是充分考慮這幾放面的因素,才能方便重用和移植。7怎樣方便驅(qū)動(dòng)程序進(jìn)行移植?答:首先對(duì)外接口函數(shù)設(shè)計(jì)要合理,其次要對(duì)MCU內(nèi)的模塊寄存器名和端口名進(jìn)行重定義,在其它的代碼里面都將使用宏名對(duì)模塊寄存器和端口進(jìn)行操作。這樣,當(dāng)?shù)讓域?qū)動(dòng)程序移植到其它MCU時(shí),只要修改重定義語(yǔ)句就可以了,這就方便了驅(qū)動(dòng)程序的移植。 8闡述利用硬件構(gòu)件思想設(shè)計(jì)嵌入式應(yīng)用系統(tǒng)時(shí)應(yīng)該遵循的基本原則。答: 應(yīng)當(dāng)遵循以下基本規(guī)則:(1)構(gòu)件的頭文件和源程序文件的主文件名一致,且為構(gòu)件
26、名。(2)屬性和操作的命名統(tǒng)一以構(gòu)件名開頭。這樣做的好處是:當(dāng)使用底層構(gòu)件組裝軟件系統(tǒng)時(shí),避免構(gòu)件之間出現(xiàn)同名現(xiàn)象。同時(shí),名稱要使人有“顧名思義”的效果。(3)對(duì)MCU內(nèi)的模塊寄存器名和端口名進(jìn)行重定義,在其它的代碼里面都將使用宏名對(duì)模塊寄存器和端口進(jìn)行操作。這樣,當(dāng)?shù)讓域?qū)動(dòng)程序移植到其它MCU時(shí),只要修改重定義語(yǔ)句就可以了。(4)內(nèi)部函數(shù)與外部函數(shù)要設(shè)計(jì)合理,函數(shù)參數(shù)個(gè)數(shù)及類型要考慮全面。內(nèi)部函數(shù)僅提供給同一構(gòu)件中的其它內(nèi)部函數(shù)或外部函數(shù)調(diào)用,作用域僅限于定義該函數(shù)的文件。外部函數(shù)是對(duì)外接口函數(shù),供上層應(yīng)用程序調(diào)用。在定義外部函數(shù)時(shí),應(yīng)該對(duì)函數(shù)名、函數(shù)功能、入口參數(shù)、函數(shù)返回值、使用說(shuō)明、函
27、數(shù)適用范圍等進(jìn)行詳細(xì)描述,以增強(qiáng)程序的可讀性。上層應(yīng)用程序不能直接對(duì)構(gòu)件的屬性進(jìn)行讀取或設(shè)置,必須借助于該構(gòu)件提供的接口操作函數(shù)來(lái)實(shí)現(xiàn)。(5)應(yīng)用程序在使用底層構(gòu)件時(shí),嚴(yán)格禁止通過(guò)全局變量來(lái)傳遞參數(shù),所有的數(shù)據(jù)傳遞都要通過(guò)函數(shù)的形式參數(shù)來(lái)接收。這樣做不但使得接口簡(jiǎn)潔,更加避免了全局變量可能引發(fā)的安全隱患。10第5章 串行通信接口SCI 習(xí)題參考答案1簡(jiǎn)要闡述異步串行通信涉及的主要基本概念。答:串行通信至少涉及到以下幾個(gè)基本概念:第一,每個(gè)字節(jié)之間是如何區(qū)分開的?第二,發(fā)送一位的持續(xù)時(shí)間是多少?第三,怎樣知道傳輸是正確的?第四,可以傳輸多遠(yuǎn)?這些問(wèn)題屬于串行通信的基本概念。2表征串行通信速度的物
28、理量是什么?串行通信的傳輸速度有限制嗎?答:位長(zhǎng)(Bit Length),也稱為位的持續(xù)時(shí)間(Bit Duration)。其倒數(shù)就是單位時(shí)間內(nèi)傳送的位數(shù)。人們把每秒內(nèi)傳送的位數(shù)叫做波特率(Baud Rate)。波特率的單位是:位/秒,記為bps。bps是英文bit per second的縮寫,習(xí)慣上這個(gè)縮寫不用大寫,而用小寫。通常情況下,波特率的單位可以省略。通常使用的波特率有600、900、1200、1800、2400、4800、9600、19200、38400、57600、115200、128000等。有限制。因?yàn)殡S著波特率的提高,位長(zhǎng)變小,以至于很容易受到電磁源的干擾,通信就不可靠了。當(dāng)
29、然,還有通信距離問(wèn)題,距離小,可以適當(dāng)提高波特率,但這樣畢竟提高的幅度非常有限,達(dá)不到大幅度提高的目的。3MCU與PC進(jìn)行通信為什么要進(jìn)行電平轉(zhuǎn)換?如何進(jìn)行電平轉(zhuǎn)換?答:在MCU中,若用RS-232總線進(jìn)行串行通信,則需外接電路實(shí)現(xiàn)電平轉(zhuǎn)換。在發(fā)送端,需要用驅(qū)動(dòng)電路將TTL電平轉(zhuǎn)換成RS-232電平;在接收端,需要用接收電路將RS-232電平轉(zhuǎn)換為TTL電平。電平轉(zhuǎn)換器不僅可以由晶體管分立元件構(gòu)成,也可以直接使用集成電路。目前廣泛使用MAX232芯片較多,該芯片使用單一+5V電源供電實(shí)現(xiàn)電平轉(zhuǎn)換。4給出SCI編程的通用模型。答:SCI具有初始化、接收和發(fā)送三種基本操作。按照構(gòu)件的思想,可將它們
30、封裝成三個(gè)獨(dú)立的功能函數(shù),初始化函數(shù)完成對(duì)SCI模塊的工作屬性的設(shè)定,接收和發(fā)送功能函數(shù)則完成實(shí)際的通信任務(wù)。以SCI的初始化、接收和發(fā)送三種基本操作為例,來(lái)說(shuō)明實(shí)現(xiàn)構(gòu)件化的全過(guò)程。(1)SCI模塊是最底層的構(gòu)件,它主要向上提供三種服務(wù),分別是SCI模塊的初始化、接收單個(gè)字節(jié)和發(fā)送單個(gè)字節(jié),向下則直接訪問(wèn)模塊寄存器,實(shí)現(xiàn)對(duì)硬件的直接操作。另外,從現(xiàn)實(shí)使用角度出發(fā),它還需要封裝接收N個(gè)字節(jié)和發(fā)送N個(gè)字節(jié)的子功能函數(shù)。(2)SCI模塊在軟件上對(duì)應(yīng)1個(gè)SCI.c程序源代碼文件和1個(gè)SCI.h頭文件,當(dāng)需要對(duì)它進(jìn)行移植時(shí),大多數(shù)情況下只需簡(jiǎn)單拷貝這兩個(gè)文件即可,無(wú)需對(duì)源代碼文件和頭文件進(jìn)行修改,只有當(dāng)
31、實(shí)施不同芯片之間的移植時(shí),才需要修改頭文件中與硬件相關(guān)的宏定義。(3)上層構(gòu)件或軟件在使用該構(gòu)件時(shí),嚴(yán)格禁止通過(guò)全局變量來(lái)傳遞參數(shù),所有的數(shù)據(jù)傳遞都直接通過(guò)函數(shù)的形式參數(shù)來(lái)接收。這樣做不但使得接口簡(jiǎn)潔,更加避免了全局變量可能引發(fā)的安全隱患。5簡(jiǎn)述中斷的作用與處理過(guò)程。答:中斷是MCU實(shí)時(shí)地處理內(nèi)部或外部事件的一種內(nèi)部機(jī)制。當(dāng)某種內(nèi)部或外部事件發(fā)生時(shí),中斷系統(tǒng)將迫使CPU暫停正在執(zhí)行的程序,轉(zhuǎn)而去進(jìn)行中斷事件的處理,中斷處理完畢后,又返回被中斷的程序處,繼續(xù)執(zhí)行下去。中斷的處理過(guò)程一般為:關(guān)中斷(在此中斷處理完成前,不處理其它中斷)、保護(hù)現(xiàn)場(chǎng)、執(zhí)行中斷服務(wù)程序、恢復(fù)現(xiàn)場(chǎng)、開中斷等。6S08系列M
32、CU都有哪些中斷源?答:S08系列MCU有26個(gè)中斷源,按優(yōu)先級(jí)從高到低的順序分別是:復(fù)位中斷(1個(gè))、SWI指令中斷(1個(gè))、引腳中斷(1個(gè))、低電壓檢測(cè)中斷(1個(gè))、ICG中斷(1個(gè))、定時(shí)器中斷(10個(gè))、SPI中斷(1個(gè))、SCI中斷(6個(gè))、鍵盤輸入中斷(1個(gè))、ADC轉(zhuǎn)換完成中斷(1個(gè))、IIC中斷(1個(gè))和實(shí)時(shí)中斷(1個(gè))。26個(gè)中斷源只有18個(gè)中斷向量,有的是幾個(gè)中斷源使用同一個(gè)中斷向量。7S08系列MCU的中斷執(zhí)行過(guò)程分為哪幾個(gè)步驟?答:CPU每執(zhí)行完一條指令,若程序有開放某些中斷及總中斷(使用CLI指令),則CPU按照優(yōu)先級(jí)次序查詢所有中斷標(biāo)志位,若某個(gè)中斷已發(fā)生,則響應(yīng)該
33、中斷請(qǐng)求。中斷響應(yīng)過(guò)程是:(1)CPU內(nèi)的寄存器PCL、PCH、X、A、CCR依次進(jìn)棧(注意H未被保護(hù),這是為了與HC05系列MCU兼容,所以必要時(shí),H應(yīng)由用戶中斷服務(wù)程序保護(hù));(2)自動(dòng)關(guān)總中斷(即相當(dāng)于自動(dòng)執(zhí)行SEI指令),防止其他中斷進(jìn)入;(3)從相應(yīng)的中斷向量地址取出中斷向量(即中斷服務(wù)程序的入口地址)送給PC;(4)執(zhí)行中斷服務(wù)程序,直到執(zhí)行中斷返回指令RTI。RTI指令從堆棧中依次彈出CCR、A、X、PCH、PCL,使CPU返回原來(lái)中斷處繼續(xù)執(zhí)行;(5)若中斷過(guò)程也允許響應(yīng)新的中斷,可在中斷服務(wù)程序中用CLI指令開放中斷。一般不建議這樣做,可用其他編程技巧處理相關(guān)問(wèn)題。8給出AW
34、60中斷編程框架與基本步驟。答:在CW環(huán)境下使用AW60芯片中斷步驟是:在main.c中,依照“關(guān)總中斷開模塊中斷開總中斷”的順序打開模塊中斷;在isr.c文件中,編寫中斷服務(wù)程序,修改中斷向量表;按照這種思路,編程的基本步驟可以概括為3步:(1)新建(或者復(fù)制)一個(gè)isr.c文件,并加入工程中。(2)定義中斷向量表(復(fù)制isr.c的應(yīng)修改中斷向量表)。(3)定義ISR并在中斷向量表中填入相應(yīng)ISR的名稱。如中斷處理函數(shù)文件(isr.c)之中的函數(shù)interrupt void SCI1_Recv(void)的定義。9用一種高級(jí)語(yǔ)言實(shí)現(xiàn)PC方串行數(shù)據(jù)收發(fā)的通用程序(要求:從PC方發(fā)送數(shù)據(jù)A到MC
35、U,MCU收到后,判斷是否是A,若是,回發(fā)給PC機(jī),在PC機(jī)顯示“串行口正常”,若不是,則在PC機(jī)顯示“通信有誤”。)參見(jiàn)隨書光盤的習(xí)題參考解答程序。10在上一題測(cè)試的基礎(chǔ)上編寫通信程序,實(shí)現(xiàn)如下功能:通過(guò)PC機(jī)發(fā)送一個(gè)命令以控制接在PTA0PTA7口的8個(gè)小燈亮暗狀態(tài),各個(gè)小燈初始狀態(tài)都為暗,首先進(jìn)行通信測(cè)試,PC機(jī)發(fā)送“A”(65),若MCU接收到則8個(gè)小燈全亮,并回送字符“A”(65),雖然MCU接收到但有問(wèn)題,不是“A”(65),說(shuō)明有誤碼,則4個(gè)小燈全亮,并回送字符“0”(48),否則8個(gè)小燈全暗無(wú)反應(yīng),通信測(cè)試成功后進(jìn)入控制狀態(tài),PC機(jī)發(fā)送字符串“11”,PTA0口燈亮;發(fā)送“10
36、”,PTA0口燈暗;發(fā)送“21”,PTA1口燈亮;發(fā)送“20”,PTA1口燈暗;依此類推,當(dāng)給PTA口發(fā)送“01”,8個(gè)小燈全亮,發(fā)送“00”,全暗。參見(jiàn)隨書光盤的習(xí)題參考解答程序。28第6章 GPIO的應(yīng)用實(shí)例鍵盤、LED與LCD 習(xí)題參考答案1為了實(shí)現(xiàn)對(duì)鍵盤的編程,至少應(yīng)該考慮哪幾個(gè)方面的問(wèn)題?分別如何解決?答:第一,如何識(shí)別鍵盤上的按鍵?第二,如何區(qū)分按鍵是否真正地被按下,還是抖動(dòng)?第三,如何處理重鍵問(wèn)題?(1)鍵的識(shí)別如何知道鍵盤上哪個(gè)鍵被按下就是鍵的識(shí)別問(wèn)題。若鍵盤上閉合鍵的識(shí)別由專用硬件實(shí)現(xiàn),稱為編碼鍵盤;而靠軟件實(shí)現(xiàn)的稱為未編碼鍵盤。在這里主要討論未編碼鍵盤的接口技術(shù)和鍵盤輸入程
37、序的設(shè)計(jì)。識(shí)別是否有鍵被按下,主要有查詢法、定時(shí)掃描法與中斷法等。而要識(shí)別鍵盤上哪個(gè)鍵被按下主要有行掃描法與行反轉(zhuǎn)法。(2)抖動(dòng)問(wèn)題當(dāng)鍵被按下時(shí),會(huì)出現(xiàn)所按的鍵在閉合位置和斷開位置之間跳幾下才穩(wěn)定到閉合狀態(tài)的情況,當(dāng)釋放一個(gè)按鍵時(shí)也會(huì)出現(xiàn)類似的情況,這就是抖動(dòng)問(wèn)題。抖動(dòng)持續(xù)的時(shí)間因操作者而異,一般為510ms之間,穩(wěn)定閉合時(shí)間一般為十分之幾秒幾秒,由操作者的按鍵動(dòng)作所確定。在軟件上,解決抖動(dòng)的方法通常是延遲等待抖動(dòng)的消失或多次識(shí)別判定。(3)重鍵問(wèn)題所謂重鍵問(wèn)題就是有兩個(gè)及兩個(gè)以上按鍵同時(shí)處于閉合狀態(tài)的處理問(wèn)題。在軟件上,處理重鍵問(wèn)題通常有連鎖法與巡回法。2編程:對(duì)于鍵盤程序,樣例中使用的是中
38、斷法。請(qǐng)用查詢法實(shí)現(xiàn)鍵盤功能。答:略。3簡(jiǎn)述掃描法LED顯示編程原理。答:略。具體參見(jiàn)本章6.2.1。4簡(jiǎn)述字符型液晶顯示控制器HD44780的編程結(jié)構(gòu)。答:從編程角度看,HD44780內(nèi)部主要由指令寄存器(IR)、數(shù)據(jù)寄存器(DR)、忙標(biāo)志(BF)、地址計(jì)數(shù)器(AC)、顯示數(shù)據(jù)寄存器(DD RAM)、字符發(fā)生器ROM(CG ROM)、字符發(fā)生器RAM(CG RAM)及時(shí)序發(fā)生電路構(gòu)成。5編程:在LCD上同步顯示PC時(shí)間。答:略。第7章 定時(shí)器模塊 習(xí)題參考答案1實(shí)現(xiàn)計(jì)數(shù)與定時(shí)的基本方法有哪些?比較它們的優(yōu)缺點(diǎn)。答:實(shí)現(xiàn)計(jì)數(shù)與定時(shí)的基本方法有三種:完全硬件方式、完全軟件方式和可編程計(jì)數(shù)器/定時(shí)
39、器方法。其中完全硬件方式速度快,但通用性和靈活性差;完全軟件方式的優(yōu)點(diǎn)是節(jié)省硬件。主要缺點(diǎn)是執(zhí)行延時(shí)程序期間,CPU一直被占用,所以降低了CPU的使用效率,也不容易提供多作業(yè)環(huán)境;可編程計(jì)數(shù)器/定時(shí)器方法的最突出的優(yōu)點(diǎn)是計(jì)數(shù)時(shí)不占用CPU的時(shí)間。2簡(jiǎn)述AW60定時(shí)器模塊的定時(shí)功能是如何實(shí)現(xiàn)的。答:在AW60定時(shí)器的內(nèi)部有狀態(tài)和控制寄存器,通過(guò)對(duì)它某些位的設(shè)置,就可以確定多少時(shí)間計(jì)數(shù)器加1,即定時(shí)間隔。通過(guò)對(duì)狀態(tài)和控制寄存器的某位進(jìn)行設(shè)置,可以決定在計(jì)數(shù)器溢出時(shí),是否允許中斷。利用這樣的中斷,可以編寫中斷例程,實(shí)現(xiàn)預(yù)設(shè)的功能。在定時(shí)器內(nèi)部還有個(gè)預(yù)置寄存器,當(dāng)計(jì)數(shù)器的值等于預(yù)置寄存器的值時(shí),稱為計(jì)
40、數(shù)器溢出,當(dāng)計(jì)數(shù)器溢出時(shí),計(jì)數(shù)器的值被賦0,同時(shí)將計(jì)數(shù)器溢出標(biāo)志等狀態(tài)置于狀態(tài)和控制寄存器中。使用預(yù)置計(jì)數(shù)功能可以得到精確的溢出時(shí)間,可以在任何時(shí)候暫?;蚯宄?jì)數(shù)器的計(jì)數(shù)(溢出功能是定時(shí)器的最基本的功能)。3定時(shí)器模塊的核心是什么,為什么?答:定時(shí)器模塊的核心是計(jì)數(shù)器。計(jì)數(shù)器裝載預(yù)置的初始計(jì)數(shù)值之后,啟動(dòng)會(huì)以預(yù)設(shè)的頻率進(jìn)行加一或者減一的運(yùn)作,當(dāng)其值變化到0(溢出到0或者減到0)時(shí),即完成了定時(shí)的功能,其定時(shí)的時(shí)長(zhǎng)取決于預(yù)置的初始計(jì)數(shù)值和預(yù)設(shè)的頻率。4設(shè)計(jì)并編程:仿照本章給出的定時(shí)器1通道0輸入捕捉中斷里程,捕捉兩路輸入信號(hào),分別用相應(yīng)的指示燈指示。請(qǐng)參考隨書光盤內(nèi)的習(xí)題解答程序。5比較AW60
41、定時(shí)器模塊實(shí)現(xiàn)輸出比較功能與PWM功能的異同點(diǎn)。答:PWM產(chǎn)生一個(gè)在高電平和低電平之間重復(fù)交替的輸出信號(hào),這個(gè)信號(hào)被稱為PWM信號(hào),也叫脈寬調(diào)制波。通過(guò)指定所需的時(shí)鐘周期和占空比來(lái)控制高電平和低電平的持續(xù)時(shí)間。通常定義占空比為信號(hào)處于高電平的時(shí)間(或時(shí)鐘周期數(shù))占整個(gè)信號(hào)周期的百分比,方波的占空比是50%。脈沖寬度是指脈沖處于高電平的時(shí)間。PWM的另一個(gè)常見(jiàn)用途是控制輸入到某個(gè)設(shè)備的平均電流或電壓。PWM的常見(jiàn)應(yīng)用是為其他設(shè)備產(chǎn)生類似于時(shí)鐘的信號(hào)。因?yàn)镾08是8位MCUs系列,定時(shí)器通道寄存器的設(shè)置被緩存起來(lái),以確保連續(xù)16位數(shù)據(jù)更新,并避免出現(xiàn)意外的PWM脈沖寬度。寫TPMxCnVH或TPM
42、xCnVL中的任意一個(gè)寄存器,也就是寫緩沖寄存器。在邊沿對(duì)齊模式下,只有在一個(gè)16位寄存器的兩個(gè)8位字節(jié)都被寫入后,且TPMxCNTH:TPMxCNTL計(jì)數(shù)器中的值為0x0000,計(jì)數(shù)值被轉(zhuǎn)移至相應(yīng)的定時(shí)器通道寄存器(直到下一個(gè)整周期新的占空比才有效)。6綜合設(shè)計(jì):利用輸入捕捉功能,只用定時(shí)器的一個(gè)通道,測(cè)量一路輸入,將輸入信號(hào)的電平(只區(qū)分高低)隨時(shí)間變化的情況以圖形方式顯示在PC屏幕上。請(qǐng)參考隨書光盤內(nèi)的習(xí)題解答程序。第8章 串行外設(shè)接口SPI 習(xí)題參考答案1簡(jiǎn)述SPI工作原理。答:可以從SPI工作時(shí)序,主機(jī)從機(jī),以及如何傳輸數(shù)據(jù)等幾個(gè)方面展開描述,具體參加本章第一節(jié)內(nèi)容。2為什么在SPI
43、通信時(shí)序圖中會(huì)有四種情況?答:先來(lái)解釋一下SPI通信時(shí)所涉及的一時(shí)鐘相位與時(shí)鐘極性。時(shí)鐘相位,表示時(shí)鐘信號(hào)在空閑時(shí)是高電平還是低電平。時(shí)鐘極性,決定數(shù)據(jù)是在SPSCK的上升沿還是在SPSCK時(shí)鐘的下降沿采樣。從上面的分析我們可以看出來(lái),通訊雙方確定SPI通信時(shí)選擇時(shí)序時(shí),一種有四種時(shí)序可以選擇,使得雙方的時(shí)鐘相位與時(shí)鐘極性保持一致。3 SPI通信時(shí)時(shí)鐘以那個(gè)設(shè)備的時(shí)鐘為基準(zhǔn)?為什么?答:SPI主設(shè)備的時(shí)鐘極性和時(shí)鐘相位是以從設(shè)備的時(shí)鐘極性和時(shí)鐘相位為基準(zhǔn)的,因此在配置SPI接口時(shí),必須先了解從設(shè)備的時(shí)鐘要求。從設(shè)備何時(shí)接收數(shù)據(jù),是在時(shí)鐘的上升沿還是下降沿?何時(shí)輸出數(shù)據(jù),是在時(shí)鐘的下降沿還是上升
44、沿?由于主設(shè)備的接收引腳與從設(shè)備的發(fā)送引腳相連,主設(shè)備的發(fā)送引腳與從設(shè)備的接收引腳相連接,即從設(shè)備接收的數(shù)據(jù)時(shí)主設(shè)備的發(fā)送引腳發(fā)出的,因此主設(shè)備接收數(shù)據(jù)的極性跟從設(shè)備接收數(shù)據(jù)的極性相反,跟從設(shè)備發(fā)送數(shù)據(jù)的極性相同。4SPI與SCI同樣都是串行數(shù)據(jù)傳輸,為什么SPI協(xié)議通信雙方多了一個(gè)時(shí)鐘線SPSCK答:正因?yàn)镾PI數(shù)據(jù)是一位一位傳輸?shù)?,所以在傳輸?shù)臅r(shí)候要有SPSCK提供時(shí)鐘脈沖完成數(shù)據(jù)的傳輸,數(shù)據(jù)通過(guò)MOSI,MISO線在始終上升沿或者下降沿時(shí)改變,在緊接著的下降沿或上升沿被讀取,完成一位數(shù)據(jù)的讀取,輸入也使用同樣的原理。這樣,在至少8次時(shí)鐘信號(hào)的改版(上沿和下沿為一次),就可以完成8為數(shù)據(jù)傳
45、輸。5同步通信與異步通信的區(qū)別與聯(lián)系。答:異步通訊在發(fā)送字符之前,發(fā)送端可以在任意時(shí)刻開始發(fā)送字符,因此必須在每一個(gè)字符的開始和結(jié)束的地方加上標(biāo)志,即加上開始位和停止位,以便使接收端能夠正確地將每一個(gè)字符接受下來(lái)。在每次傳輸?shù)臄?shù)據(jù)之前要加上起始位跟停止位(結(jié)束位),異步傳輸?shù)暮锰幨峭ㄓ嵲O(shè)備簡(jiǎn)單、發(fā)送端可以隨時(shí)發(fā)送數(shù)據(jù)。缺點(diǎn)就是在每次傳輸時(shí)傳輸?shù)?,開始位和停止位的傳輸給通訊雙方帶來(lái)了額外的傳輸。同步通信的通信雙方必須先建立同步,即雙方的時(shí)候要調(diào)整到一個(gè)頻率。收發(fā)雙方不停地發(fā)送和接收持續(xù)的同步比特流。因此通訊雙方必須保持相同的時(shí)鐘頻率,很顯然這也是同步通信的缺點(diǎn)所在,而且雙發(fā)在通信之前必須確定好傳
46、輸時(shí)的時(shí)序圖,時(shí)鐘相位、時(shí)鐘極性都必須保持一致。好處就是不用傳輸額外的標(biāo)志比特。6閱讀網(wǎng)絡(luò)光盤中關(guān)于AT45DB041D芯片的介紹,在本書給出的參考程序的基礎(chǔ)上,完善塊擦除,扇區(qū)擦除燈驅(qū)動(dòng)函數(shù),并測(cè)試。答:略。第9章 Flash存儲(chǔ)器在線編程 習(xí)題參考答案1簡(jiǎn)述Flash存儲(chǔ)器的特點(diǎn)。答:Flash存儲(chǔ)器是一種高密度、真正不揮發(fā)的高性能讀寫存儲(chǔ)器,兼有功耗低、可靠性高等優(yōu)點(diǎn)。與傳統(tǒng)的固態(tài)存儲(chǔ)器相比,F(xiàn)lash存儲(chǔ)器的主要特點(diǎn)如下。(1)固有不揮發(fā)性:這一特點(diǎn)與磁存儲(chǔ)器相似,F(xiàn)lash存儲(chǔ)器不需要后備電源來(lái)保持?jǐn)?shù)據(jù)。所以,它具有與磁存儲(chǔ)器一樣無(wú)需電能保持?jǐn)?shù)據(jù)的優(yōu)點(diǎn)。(2)易更新性:Flash存儲(chǔ)
47、器具有電可擦除的特點(diǎn)。相對(duì)于EPROM(電可編程只讀存儲(chǔ)器)的紫外線擦除方式,F(xiàn)lash存儲(chǔ)器的電擦除功能為開發(fā)者節(jié)省了大量時(shí)間,也為最終用戶更新存儲(chǔ)器內(nèi)容提供了方便條件。(3)成本低、密度高、可靠性好:與EEPROM(電可擦除可編程只讀存儲(chǔ)器)相比較,F(xiàn)lash存儲(chǔ)器的成本更低、密度更高、可靠性更好。2AW60的Flash存儲(chǔ)器有什么特點(diǎn)?答:要點(diǎn)主要有以下幾條:(1)編程速度快且可靠性高。S08系列MCU的片內(nèi)Flash存儲(chǔ)器的整體擦除時(shí)間可以控制在5ms以內(nèi),對(duì)單字節(jié)的編程(寫入)時(shí)間也在40ns以內(nèi)。片內(nèi)Flash存儲(chǔ)器的存儲(chǔ)數(shù)據(jù)可以保持10年以上,可擦寫次數(shù)均在1萬(wàn)次以上。(2)單一
48、電源電壓供電。一般的Flash存儲(chǔ)器,在正常的只讀情況下,只需要用戶為其提供普通的工作電壓即可,而要對(duì)其編程(寫入)時(shí)還需要同時(shí)提供高于正常工作電壓的編程電壓。正因?yàn)镕lash的讀寫電壓要求不同,一些公司的內(nèi)置Flash存儲(chǔ)器便放棄了在線擦除寫入功能,而僅有通過(guò)編程器的寫入功能。但是,S08系列MCU通過(guò)在片內(nèi)集成的電荷泵,可由單一工作電壓在片內(nèi)產(chǎn)生出編程電壓,這樣就實(shí)現(xiàn)了單一電源供電的在線編程電壓,而不需要為Flash的編程增加額外的編程電壓模塊,同時(shí)也使S08系列MCU兼具了兩種編程模式。(3)支持在線編程。S08系列MCU的片內(nèi)Flash存儲(chǔ)器支持在線編程,允許MCU內(nèi)部運(yùn)行的程序去改寫
49、Flash存儲(chǔ)器的內(nèi)容,這樣就可以代替外部電可擦除存儲(chǔ)芯片,從而減少了外圍部件,增加了嵌入式系統(tǒng)開發(fā)的方便性。3AW60的Flash存儲(chǔ)器有哪兩種編程模式??jī)煞N模式有什么區(qū)別?答:從Flash存儲(chǔ)器的基本特點(diǎn)可以看出,在MCU中可以利用Flash存儲(chǔ)器來(lái)固化程序,一般情況下通過(guò)編程器來(lái)完成這種操作,F(xiàn)lash存儲(chǔ)器工作于這種情況稱為監(jiān)控模式(Monitor Mode)或?qū)懭肫髂J?,這與一般的EPROM、OTP、EEPROM裝入程序的方式十分相似。另一方面,由于Flash存儲(chǔ)器具有電可擦除的特點(diǎn),因此在程序運(yùn)行過(guò)程中有可能對(duì)Flash存儲(chǔ)區(qū)的數(shù)據(jù)或程序進(jìn)行更新,F(xiàn)lash存儲(chǔ)器工作于這種情況叫做
50、用戶模式(User Mode)或在線編程模式(In-Circuit Program)。但是,并不是所有類型的MCU的內(nèi)部Flash存儲(chǔ)器都具有在線編程功能。目前有的公司出品的MCU還不支持Flash存儲(chǔ)器在線編程模式。Freescale的S08系列MCU的片內(nèi)Flash均支持這兩種編程模式。一般來(lái)說(shuō),兩種模式對(duì)Flash存儲(chǔ)器的編程操作的程序是一致的,差別在于調(diào)用這些程序的方式和環(huán)境的不同。4AW60的Flash存儲(chǔ)器編程時(shí)涉及哪些寄存器,其各自地址是什么?答:在AW60中,與Flash編程有關(guān)的寄存器有6個(gè),它們分別是Flash時(shí)鐘分頻寄存器(FCDIV)、Flash選項(xiàng)寄存器(FOPT和N
51、VOPT)、Flash配置寄存器(FCNFG)、Flash保護(hù)寄存器(FPROT和NVPROT)、Flash狀態(tài)寄存器(FSTAT)和Flash命令寄存器(FCMD),其對(duì)應(yīng)的地址分別為$1820、$1821、$1823、$1824、$1825和$1826。5AW60的Flash存儲(chǔ)器的編程命令一般執(zhí)行哪些步驟?答:可以分為以下幾步:(1)向Flash地址中寫入一個(gè)數(shù)據(jù)。地址和數(shù)據(jù)信息都會(huì)被鎖定到Flash接口中。對(duì)于空白檢測(cè)和擦除命令,數(shù)據(jù)信息是一個(gè)任意值;對(duì)于頁(yè)擦除命令,地址信息是擦除頁(yè)(512字節(jié))地址中的任意一個(gè)地址;對(duì)于空白檢測(cè)和整體擦除命令,地址信息是Flash中的任意一個(gè)地址。(
52、2)向Flash命令寄存器FCMD中寫入需要執(zhí)行的命令。(3)執(zhí)行命令。將Flash狀態(tài)寄存器FSTAT的FCBEF位置1,同時(shí)開始執(zhí)行命令寄存器中的命令。6AW60的Flash存儲(chǔ)器的編程命令的執(zhí)行流程是怎樣的?答:在進(jìn)行Flash擦寫編程時(shí),也需要遵循嚴(yán)格的時(shí)序流程。批量模式寫一個(gè)字節(jié)命令和其他命令的執(zhí)行過(guò)程有很大差別。批量模式意味著有很多連續(xù)數(shù)據(jù)需要寫入Flash,每執(zhí)行一次寫入命令后,向Flash中加入的寫入高電壓并不撤銷,這樣就加快了數(shù)據(jù)寫入速度;而對(duì)于其他的命令,在命令執(zhí)行的時(shí)候,加高電壓,命令執(zhí)行結(jié)束的時(shí)候立即撤銷高電壓。7給出AW60芯片的擦除與寫入子程序的編程要點(diǎn)。答:使用F
53、lash在線編程技術(shù)可以省去外接EEPROM,不僅簡(jiǎn)化了電路設(shè)計(jì),也提高了系統(tǒng)穩(wěn)定性。我們將Flash的執(zhí)行程序編譯后存放到Flash中,當(dāng)需要使用時(shí)則將這段代碼復(fù)制到RAM中,同時(shí)需要修改一下執(zhí)行指令,正是由于這個(gè)特殊的過(guò)程,根據(jù)實(shí)際編程調(diào)試與項(xiàng)目開發(fā)過(guò)程中積累的經(jīng)驗(yàn),提出以下注意點(diǎn),供讀者參考:(1)RAM中要留有足夠的緩沖區(qū),以便存放復(fù)制到RAM中的子程序,具體值是取擦除與寫入子程序中的大者即可。它們的大小可在編譯后的.LST文件中查得。(2)一次擦除后未被寫入過(guò)的區(qū)域可以再次調(diào)用寫入子程序?qū)懭?,但寫入過(guò)的區(qū)域,未經(jīng)擦除不能重寫。(3)由于擦除是每次擦除一頁(yè)(512字節(jié)),所以數(shù)據(jù)應(yīng)合理
54、安排,避免誤擦。(4)頁(yè)首地址的定義須遵照保護(hù)寄存器FLBPR定義的規(guī)則。(5)在線編程時(shí)使用的Flash存儲(chǔ)區(qū)域應(yīng)在程序Flash存儲(chǔ)區(qū)域之前,因?yàn)镕lash保護(hù)區(qū)為FLBPR決定的地址至末尾。8AW60芯片如何加密?如何解除密碼?答:1.為了防止Flash中的程序被非法讀出,就要將MCU設(shè)置為保密狀態(tài),下面提供兩種加密Flash方法。方法一:通過(guò)修改文件isr.c文件中的安全配置域(即修改FOPT寄存器,地址0xFFBF的值和密鑰地址0xFFB0 0xFFB7的值)實(shí)現(xiàn)加密。例如,若要設(shè)置密碼0x3132333435363738,則只要將這8字節(jié)數(shù)據(jù)依次寫到地址0xFFB00xFFB7處即
55、可,該密碼即為字符串“12345678”。方法二:在程序運(yùn)行中,通過(guò)調(diào)用自定義函數(shù)修改Flash相關(guān)地址處的內(nèi)容來(lái)加密Flash。通過(guò)修改NVOPT地址的內(nèi)容,復(fù)位后,該寄存器的值將自動(dòng)載入FOPT中。2. S08系列芯片在加密后,需要重新寫入程序,必須先解除密碼。這里提供2種解除密碼方法。方法一:通過(guò)將寫入器的BDM接口,對(duì)已經(jīng)加密的芯片進(jìn)行整體擦除,具體使用方法參見(jiàn)光盤中“S08/S12/ColdFire三合一寫入器使用說(shuō)明”。方法二:在芯片中駐留擦除密碼或擦除Flash的操作接口,通過(guò)調(diào)用Flash_KEY_Match函數(shù)實(shí)現(xiàn)。用戶可以選擇一種“后門”機(jī)制,假如寄存器NVOPT/FOPT
56、的KEYEN位為0時(shí),后門機(jī)制無(wú)效,但是如果KEYEN位為1時(shí),用戶按照如下的方法取消MCU的保密狀態(tài):(1)將FCNFG的KEYACC位置1。(2)向NVBACKKEYNVBACKKEY+7的位置(Flash中$FFB0$FFB7)依次寫入8個(gè)字節(jié),由于第(1)步的操作,MCU會(huì)將該寫入操作理解為是密碼比較操作,這8個(gè)字節(jié)被看作是后門的鑰匙。(3)將FCNFG的KEYACC位置0,如果用戶寫入的8個(gè)字節(jié)和NVBACKKEYNVBACKKEY+7的位置的8個(gè)字節(jié)是匹配的,MCU會(huì)將SEC01:SEC00改寫成1:0,從而取消MCU的保密性。這種保密鑰匙只能從保密的存儲(chǔ)器中寫入,所以在沒(méi)有用戶程序的配合下,背景調(diào)試命令也不可以進(jìn)入的。當(dāng)然如果不知道后門鑰匙,使用這種方法也是無(wú)法取消MCU的保密態(tài)。第10章 集成電路互連總線I2C 習(xí)題參考答案1簡(jiǎn)述I2C總線的特點(diǎn)。答:I2C主要特點(diǎn)總結(jié)如下。(1)在硬件上,二線制的I2C串行總線使得各IC只需最簡(jiǎn)單的連接,而且總線接口都集成在I
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 主管在行業(yè)整合中的挑戰(zhàn)與應(yīng)對(duì)計(jì)劃
- 急診醫(yī)療文書標(biāo)準(zhǔn)化探討計(jì)劃
- 數(shù)據(jù)分析與決策支持總結(jié)計(jì)劃
- 提升員工歸屬感的實(shí)施策略計(jì)劃
- 美術(shù)班級(jí)文化建設(shè)活動(dòng)計(jì)劃
- 《貴州廣鋁水落潭礦業(yè)有限公司貴州省清鎮(zhèn)市貓場(chǎng)鋁土礦區(qū)水落潭礦段(新建)礦產(chǎn)資源綠色開發(fā)利用方案(三合一)》評(píng)審意見(jiàn)
- 《伊吾縣九方建筑材料有限公司新疆伊吾縣尤樂(lè)滾碎石礦礦產(chǎn)資源開發(fā)利用與生態(tài)保護(hù)修復(fù)方案》專家意見(jiàn)認(rèn)定
- 血液凈化??谱o(hù)理核心
- 2025年克拉瑪依貨運(yùn)從業(yè)資格證考試模擬
- 2025年曲靖貨車上崗證理論模擬考試題庫(kù)
- 《肺動(dòng)靜脈瘺》課件
- 約定工資結(jié)清協(xié)議書(2篇)
- 農(nóng)行競(jìng)聘高級(jí)專員述職報(bào)告范本
- 湖北省荊州市英語(yǔ)初一上學(xué)期期末試題與參考答案(2024年)
- 鶴壁海格龍升3萬(wàn)噸溴系列新材料產(chǎn)品環(huán)評(píng)資料環(huán)境影響
- 2024屆全國(guó)新高考英語(yǔ)復(fù)習(xí)-讀后續(xù)寫微寫作
- 顳下頜關(guān)節(jié)疾病(口腔頜面外科學(xué)課件)
- 2025屆福建廈門雙十中學(xué)高一數(shù)學(xué)第一學(xué)期期末經(jīng)典模擬試題含解析
- 中考語(yǔ)文一輪專題復(fù)習(xí):詩(shī)歌鑒賞中常見(jiàn)的意象(共32張課件)
- 陜西省咸陽(yáng)市實(shí)驗(yàn)中學(xué)高一下學(xué)期第一次月考物理試題(原卷版)
- 課件:《中華民族共同體概論》第一講 中華民族共同體基礎(chǔ)理論
評(píng)論
0/150
提交評(píng)論