總結(jié)嵌入式系統(tǒng)基礎(chǔ)—下篇
第四章 外圍設(shè)備
——>通過I/O口控制外部設(shè)備絕不像有些讀者想像的去驅(qū)動一組發(fā)光二極管那么簡單。在單片機(jī)的后向通道控制系統(tǒng)中,常用斷電器控制器件功率
——>測量和控制是單片機(jī)系統(tǒng)一個(gè)非常重要的應(yīng)用領(lǐng)域。典型的應(yīng)用模式是通過傳感器采集現(xiàn)場的微弱信號參數(shù),經(jīng)過數(shù)據(jù)處理后再通過A/D模數(shù)轉(zhuǎn)換送到單片機(jī)系統(tǒng)進(jìn)行各種工業(yè)調(diào)節(jié)和控制。
——>在單片機(jī)系統(tǒng)中,與傳感器的接口通常稱之為前向通道接口
——>繼電器:單片機(jī)應(yīng)用中,開關(guān)量都通過單片機(jī)I/O口或擴(kuò)展I/O口輸出來的,這些I/O口的驅(qū)動電流往往不足以驅(qū)動一些功率開關(guān)往往需要用到一些特殊的設(shè)備來控制大功率的器件
——>繼電器:一種器件,它們響應(yīng)小的電流或者電壓變化,激活電路中的開關(guān)或者其他設(shè)備??梢杂糜谶h(yuǎn)程地切換信號或電源
——>繼電器分為機(jī)械繼電器和固態(tài)繼電器
——>機(jī)械繼電器:驅(qū)動器的選擇要根據(jù)繼電器的吸合電流而定,即驅(qū)動器的電流一定要大于繼電器的吸合電流。繼電器的選擇是根據(jù)的需要,結(jié)合負(fù)載電流,負(fù)載功率選擇合適的繼電器
——>固態(tài)繼電器:固態(tài)繼電器是一種新型的無觸點(diǎn)電子繼電器,輸入端只需極小的控制電流,輸出則用雙向的晶閘管控制負(fù)載,輸入、輸出均通過內(nèi)部光電耦合器隔離;具有外界元器件少、控制電壓低、電流小、搞干擾性強(qiáng)、易于與單片機(jī)接口的特點(diǎn)
——>繼電器的實(shí)際使用中,我們需要注意的關(guān)鍵問題主要有兩點(diǎn):一是功率驅(qū)動,二是抗干擾
——>A/D轉(zhuǎn)換器:傳感器將自然界獲得的模擬信號轉(zhuǎn)換成MCU能識別的電信號,也就是我們常說的AD轉(zhuǎn)換;除了要選合適的傳感器以外,還要將傳感器采集來的微弱的信號放大
——>設(shè)計(jì)軟件的時(shí)候要注意:片選(CS)脈沖要在每次的開始處,或者在轉(zhuǎn)換時(shí)序的開始處變化一次后保持CS為低,直到時(shí)序結(jié)束
——>信號量可以分為模擬信號量和數(shù)字信號量。模擬信號量是連續(xù)變化的信號,在自然界中,存在著大量的信號量
——>傳感器:能夠感知外界的信息并能按照一定的規(guī)律將這些轉(zhuǎn)換成可用的信號裝置。簡單地說就是一種將物理量或化學(xué)量轉(zhuǎn)化成可利用的電信號器件
——>MCU相當(dāng)于人的大腦,傳感器就相當(dāng)于人的各式各樣的感覺器官。傳感器將從自然界中獲取到的信息傳給“大腦”。然后大腦進(jìn)行“分析、判斷、決斷”
——>自然界中物體只要它本身溫度高于絕對零度又低于500度,就會成為紅外線輻射源;許多物質(zhì)對可見光是透明體,但對有些紅外光是不透明體,反過來也一樣。
——>紅外傳感器:紅外傳感器主要用來檢測是否有障礙物,一般由兩只紅外管構(gòu)成的,一只發(fā)射,一只接收
——>灰度傳感器:所謂灰度也可認(rèn)為是亮度,簡單的說就是色彩的深淺程度。根據(jù)反射光的強(qiáng)度,可以判斷出物體的灰級程度
——>亮度傳感器:亮度傳感器可以是一個(gè)簡單的光敏電阻,其原理與熱敏電阻類似,阻值隨著外界亮度的不同而發(fā)生變化,使用時(shí)也必須事先確定阻值和亮度的對應(yīng)關(guān)系;只要這個(gè)傳感器可以“看到”LED,就表示一切正常,一旦光被擋住,你就可以知道有人或別的物體從傳感器和LED之間經(jīng)過
——>超聲波傳感器:按其工作原理可分為壓電式、磁致伸縮式、電磁式等,以壓電式最為常用
——>溫度傳感器:溫度傳感器的應(yīng)用范圍很廣,最顯著的例子就是環(huán)境監(jiān)控或氣象站,不過也可以拿來感應(yīng)室內(nèi)的溫度,并對加熱或制冷系統(tǒng)進(jìn)行適當(dāng)?shù)目刂?,將其和?shù)據(jù)記錄儀相連,你就擁有一個(gè)溫度記錄器
——>最常用的電阻溫度傳感器,電阻的阻值隨著溫度的變化而變化
——>根據(jù)原理的不同主要分為半導(dǎo)體熱電偶傳感器、PN結(jié)溫度傳感器和集成溫度傳感器
——>熱電偶傳感器主要原理是:兩種不同的材質(zhì)連在一起,對這個(gè)連接點(diǎn)進(jìn)行加熱,在它們的不加熱部位就會出現(xiàn)電位差,而這種電位差與它們在不加熱點(diǎn)的溫度和它們的材質(zhì)有關(guān)
——>PN結(jié)溫度傳感器利用半導(dǎo)體材料和器件的某些性能參數(shù)的溫度依賴性,實(shí)現(xiàn)對溫度的檢測,控制和補(bǔ)償?shù)墓δ?br style="text-transform: none; text-indent: 0px; font: 12px/24px 'Microsoft YaHei'; white-space: normal; letter-spacing: normal; color: rgb(0,0,0); word-spacing: 0px; -webkit-text-stroke-width: 0px" />
——>隨著外界溫度的不同,熱敏電阻的阻值會發(fā)生相應(yīng)變化,這時(shí)輸入MCU的A/D轉(zhuǎn)換通道的電壓值也跟著發(fā)生變化;熱敏電阻只能作為精度不高的溫度測試工具
——>溫度傳感器:最簡單的溫度傳感器為濕敏電阻或者濕敏電阻
——>濕敏電阻的特點(diǎn)是在基片上覆蓋一層用感濕材料制成的膜,當(dāng)空氣中的水蒸氣吸附在感濕膜上時(shí),元件的電阻率和電阻值都發(fā)生變化,利用這一特性即可測量溫度。而濕敏電容一般是高分子薄膜電容制成的,當(dāng)環(huán)境發(fā)生改變時(shí),濕敏電容的介電常數(shù)發(fā)生變化,使其電容量也發(fā)生變化,其電容變化量與相對溫度成正比
——>磁卡(Magnetic Card)是一種卡片狀的磁性記錄介質(zhì),與各種讀卡器配合作用
——>以前在磁卡上應(yīng)用的安全技術(shù),如水印技術(shù)、全息技術(shù)、精密磁記錄技術(shù)等,隨著時(shí)間的推移其相對安全性已大為降低
——>IC卡(芯片型智能卡的一種)則是通過芯片上寫有的密鑰參數(shù)進(jìn)行識別的。IC卡在使用時(shí),必須要通過與讀寫設(shè)備間特有的雙向密鑰認(rèn)證。
——>把適合的存儲卡當(dāng)作一個(gè)可移動存儲器,從而可以通過讀卡器讀寫存儲卡
——>按所兼容存儲卡的各類分可以分為CF卡讀卡器、SM卡讀卡呂、PCMICA卡讀卡器以及記憶棒讀寫器等
——>液晶顯示器(Liquid Crystal Display,LCD)基本特點(diǎn)
1.低電壓微功耗,液晶顯示器件為電池供電的電子設(shè)備的首先顯示器件
2.平板型結(jié)構(gòu)
3.使用壽命長
4.被動顯式。對LCD來說,環(huán)境光線越強(qiáng)顯示內(nèi)容越清晰。人眼所感受的外部信息90%以上是外部物體對光的反射,而不是物體本身發(fā)光,所以被動顯式更適合人的視覺習(xí)慣,更不容易引起疲勞。這在信息量大、顯示密度高、觀看時(shí)間長的場合顯得更重要
5.顯示信息量大且易于彩色化
6.無電磁輻射
——>從程序員角度來說,LCD的顯示接口與編程是面向HD44780的,只在了解HD44780的編程結(jié)構(gòu)即可進(jìn)行LCD的顯示編程
——>鍵盤是由若干個(gè)熱鍵組成的開關(guān)矩陣,它是最簡單的MCU的數(shù)字量輸入設(shè)備。鍵盤的基本電路為接觸開關(guān)
——>獨(dú)立方式:獨(dú)立方式是指將每個(gè)按鍵按一對一的方式直接拉到I/O輸入線上;讀鍵值時(shí)直接讀I/O口,每一個(gè)鍵的狀態(tài)通過讀入鍵值來反映,所以也稱這種方式為一維直讀方式,按習(xí)慣稱為獨(dú)立式;這種方式查鍵實(shí)現(xiàn)簡單,但占用I/O資源較多,一般在鍵的數(shù)量較少時(shí)候使用
——>矩陣方式:矩陣方式是用n條I/O線組成行輸入口,m條I/O線組成列輸出口,在行列線的每一個(gè)交點(diǎn)上設(shè)置一個(gè)按鍵;這種方式占用I/O線較少,在實(shí)際應(yīng)用系統(tǒng)中采用較多
——>設(shè)計(jì)鍵盤的時(shí)候,通常小于4個(gè)按鍵的應(yīng)用,可以使用獨(dú)立式接口。如果多于4個(gè)按鍵,為了減少處理器的I/O端口的占用,可以使用矩陣式鍵盤
——>鍵的識別:若鍵盤上閉合鍵的識別由專用硬件實(shí)現(xiàn),稱為編碼鍵盤;而靠軟件實(shí)現(xiàn)的稱為未編碼鍵盤
——>識別是否有鍵被按下,主要有查詢法、定時(shí)掃描法與中斷法等。而要識別鍵盤上哪個(gè)鍵被按下主要有行掃描法與行反轉(zhuǎn)法
——>抖動問題:當(dāng)手按下鍵時(shí),會出現(xiàn)所按的鍵在閉合位置和斷開位置之間跳幾下才穩(wěn)定到閉合狀態(tài)的情況,當(dāng)釋放一個(gè)按鍵時(shí)也會出現(xiàn)類似情況,這就是抖動問題
——>在軟件上,解決抖動的方法通常是延遲等待抖動的消失或多次識別判定
——>重鍵問題:所謂重鍵問題就是有兩個(gè)及兩個(gè)以上按鍵同時(shí)處于閉合狀態(tài)的處理問題,在軟件上,處理重鍵問題通常有連鎖法與巡回法
——>當(dāng)鍵盤上某一個(gè)閉合時(shí),則該所對應(yīng)的行線與列線短路
——>把列線n1~n4拉到MCU的輸入口,行線m1~m4拉到MCU的輸出口
——>逐行逐列檢查鍵盤狀態(tài)的過程稱為對鍵盤的一次掃描。
——>CPU可隨時(shí)響應(yīng)鍵輸入請求。也可以采用中斷方式,當(dāng)鍵盤上有鍵閉合時(shí),向CPU請求中斷
第五章 總線
——>異步傳輸標(biāo)準(zhǔn)接口。通常RS-232接口以9個(gè)接腳(DB-9)或是25個(gè)接腳(DB-25)的型態(tài)出現(xiàn),一般個(gè)人計(jì)算機(jī)上會有兩級RS-232接口,分別稱為COM1和COM2;RS是英文“推薦標(biāo)準(zhǔn)”的縮寫
——>RS232C傳輸?shù)臄?shù)據(jù)位的電壓電平是相對于本地的地,它的高電平是負(fù)電壓,而低電平是正電壓
——>目前幾乎所有計(jì)算機(jī)上的串行口都是9芯接口
——>精簡的RS-232通信,通信時(shí)僅使用3根線:RxD(接收線)、TxD(發(fā)送線)和GND(地線)
——>若用RS-232C總線進(jìn)行串行通信,則需外接電路實(shí)現(xiàn)電平轉(zhuǎn)換
——>RS-485接口具有良好的抗噪聲干擾性,長的傳輸距離和多站能力等優(yōu)點(diǎn)使其成為首選的串行接口
——>USB是一種高速總線。設(shè)備能夠自動向計(jì)算機(jī)主機(jī)表明身份,而且可以熱切換
——>USB網(wǎng)絡(luò)的基本拓?fù)浣Y(jié)構(gòu)是星型的,一個(gè)USB系統(tǒng)由一個(gè)或多個(gè)USB設(shè)備(外設(shè))、一個(gè)或多個(gè)集線器(hub)和一個(gè)主機(jī)(控制計(jì)算機(jī))組成。計(jì)算機(jī)主機(jī)有時(shí)又叫做主控制器,在一個(gè)USB網(wǎng)絡(luò)中只能有一個(gè)主機(jī);集線器用來擴(kuò)展USB網(wǎng)絡(luò)
——>每個(gè)USB連接頭內(nèi)擁有4個(gè)引腳:其中2個(gè)用作傳遞差動數(shù)據(jù),另2個(gè)為USB設(shè)備提供電源
——>LIN(Local Interconnect Network 局域互連網(wǎng)絡(luò))是一種低成本的總線網(wǎng)絡(luò)。主要用于汽車中某些對通信速率需要不高的場合,能夠解決汽車內(nèi)因?qū)Ь€過多所帶來的許多問題
——>RJ45接口(又稱水晶頭)常用于數(shù)據(jù)傳輸,共有八芯做成
——>做水晶頭時(shí),使水晶頭的彈片朝外,入線口朝下,從左到右,遵循上面的線序,充分插入線,然后用駁線鉗夾一下,就可以了
——>成對扭絞的作用是盡可能減少電磁輻射與外部電磁干擾的影響
——>在數(shù)據(jù)的傳輸中,為了減少和抑制外界的干擾,發(fā)送和接收的數(shù)據(jù)均以差分方式傳輸,即每一對線互相扭在一起傳輸一路差分信號(這也是雙絞線名稱的由來)
——>所謂的差分信號:是指一根線以正電平方式傳輸,另外一根線以負(fù)電平方式傳輸同一信號,當(dāng)線路中出現(xiàn)干擾信號時(shí),其對兩根線的影響是相同的,因而在接收端還原差分信號時(shí)就可以屏蔽掉該干擾信號
——>每對線進(jìn)行雙絞的目的是為了抑制干擾信號,提高傳輸質(zhì)量;因而我們的制作雙絞線的接頭時(shí),一定不要將傳輸差分信號的一對線分開,否則將大大影響網(wǎng)絡(luò)的傳輸質(zhì)量
第六章 規(guī)范
——>從本質(zhì)上講,在一個(gè)電路原理圖上有兩類對象:元件和網(wǎng)標(biāo)(net)。網(wǎng)標(biāo)表明元件之間是如何連接的。有元件名和元件類型;注意:在電路原理圖在元件的元件類型可省,但元件名不能省略并且不可重名
——>對同種類型的元件命名時(shí)常用的做法是冠以同前綴。例如,電阻的前綴為R,電容的前綴為C,電感的前綴為L,二極管的前綴為D,晶體管為O,連接器和跳線器為J,半導(dǎo)體的前綴通常為U,但也常用元件名來直接命名
——>電源部分:在計(jì)算電源總功率時(shí)要考慮一定的余量,可取2倍;考慮使用電源模塊還是外接電源的方式提供工作電源
——>開關(guān)量輸入:開關(guān)量輸入一定要保證高低電壓分明,理想情況下高電平就是電源電壓,低電平就是地的電平
——>開關(guān)量輸出:開關(guān)量輸出的基本原則是保證輸出高電平接近電源電壓,低電平接近在電平
——>繪制原理圖的基本要求
1.A4紙
2.不使用網(wǎng)格,底色為白色
3.每個(gè)模塊獨(dú)立畫出,用虛線框框好,分清輸入輸出,左側(cè)輸入右側(cè)輸出
4.每個(gè)模塊要標(biāo)注模塊名
5.MCU最小系統(tǒng)不能做任何更改,各系統(tǒng)中的相同MCU的最小系統(tǒng)保持一致
6.以MCU為中心擴(kuò)展其它模塊,形成分級結(jié)構(gòu)
7.對外接口的設(shè)計(jì),盡可能采用防止反插的接口
8.每個(gè)電路板都應(yīng)該設(shè)計(jì)有電源指示燈,運(yùn)行指示燈,故障指示燈等表達(dá)電路的運(yùn)行狀態(tài)
9.電路繪制完成后,不要忘記要填寫版權(quán)框中的有關(guān)信息
——>PCB(Printed Circuit Board),中文名稱為印刷線路板,簡稱印制板
——>電路板最佳形狀是矩形,長寬比為3:2或4:3
——>元件封裝:是指實(shí)際的電子元器件或集成電路的外型尺寸、管腳的直徑及管腳的距離等,它是使元件引腳和印刷電路板上的焊盤一致的保證
——>元件放置的順序:先放置與結(jié)構(gòu)有緊密配合的固定位置的元器件;接著放置線路上的特殊元件和大的元器件;最后放置小器件
——>平放:當(dāng)電路元件數(shù)量不多,而且電路板尺寸較大的情況下,一般是采用平放比較好
——>豎放:當(dāng)電路元件較多時(shí),而且電路板尺寸不大的情況下,一般采用豎放
——>集成電路座應(yīng)該盡可能將定位槽放置方向一致
6.4 面向硬件構(gòu)件底層驅(qū)動程序要求
——>獨(dú)立編程的實(shí)體就是硬件構(gòu)件,硬件構(gòu)件分為內(nèi)部構(gòu)件和外部構(gòu)件,內(nèi)部構(gòu)件如系統(tǒng)初始化、定時(shí)器、Flash、串口等,外部構(gòu)件如LED、形狀、按鈕、電機(jī)等
——>對每個(gè)硬件構(gòu)件編寫?yīng)毩⒌尿?qū)動程序:每個(gè)構(gòu)件對應(yīng)一個(gè)頭文件和源文件,如果構(gòu)件是外部構(gòu)件,則要在頭文件中用宏定義構(gòu)件接在哪個(gè)腳上,頭文件只聲明供外部調(diào)用的功能函數(shù);也就是說,其他人只要看頭文件函數(shù)聲明就知道如何使用此構(gòu)件而無需去看源文件去閱讀代碼
——>一般函數(shù)的命名規(guī)則是:構(gòu)件_功能
——>如果一個(gè)函數(shù)只供構(gòu)件功能函數(shù)內(nèi)部調(diào)用,則此函數(shù)在源文件里面聲明和實(shí)現(xiàn),不出現(xiàn)在頭文件里,并聲明為static函數(shù)
——>如果一個(gè)全局變量只供某模塊使用,則可以把此全局變量定義為static
——>模塊函數(shù)就實(shí)現(xiàn)此模塊要實(shí)現(xiàn)的功能,模塊內(nèi)部之間不能相互調(diào)用;可以通過返回值告訴高端,讓高端根據(jù)返回值來決定是否調(diào)用串口子程序
——>返回值問題:如果只返回一個(gè)基本類型的返回值,則用返回值返回此值也可;如果返回一個(gè)復(fù)雜類型的返回值,比如一個(gè)struct結(jié)構(gòu)體,則用返回值返回的話要進(jìn)行復(fù)制,開銷很大,此時(shí)用傳地址方式返回;如果返回的值很多,可以把這些值定義在一個(gè)struct里面,通過指針形式返回
——>函數(shù)命名要合理,所有的函數(shù)代碼編寫方式有一個(gè)統(tǒng)一的風(fēng)格,注意對齊
——>盡量用效率高的方式編碼,比如乘除可以用移位來實(shí)現(xiàn)
——>驅(qū)動程序一般在兩個(gè)地方調(diào)用:一個(gè)是main函數(shù),一個(gè)是中斷處理函數(shù)
——>變量分為全局變量、堆棧變量、函數(shù)內(nèi)靜態(tài)變量、文件內(nèi)靜態(tài)變量和寄存器變量
——>寄存器變量是當(dāng)某個(gè)變量頻繁使用很多次的時(shí)候?yàn)榱吮苊饷看螐膬?nèi)在中讀它,而把它放在寄存器中來改變性能
——>如果一個(gè)變量只有函數(shù)中使用,并且要一直存在,則命名為函數(shù)內(nèi)靜態(tài)變量,如果一個(gè)函數(shù)只在某個(gè)源文件中使用,此源文件各個(gè)函數(shù)通過此變量來通信,則此變量命名為文件內(nèi)靜態(tài)變量
——>全局變量前面加前綴g,靜態(tài)變量前面加前綴s,寄存器變量前面加前綴r;不管使用何種命名寫法,全局要統(tǒng)一一致,不能兩種混合使用
6.5 硬件驅(qū)動模塊的測試要求
——>對于已經(jīng)設(shè)計(jì)好的驅(qū)動模塊,必須經(jīng)過嚴(yán)格的測試后才能使用;同時(shí),測試過程要以目錄的形式保留下來,用于備案
——>對于有可視結(jié)果的模塊先行測試
——>測試只能證明錯(cuò)誤的存在,而不能證明錯(cuò)誤的不存在
——>不能簡單的直接在無可視執(zhí)行結(jié)果的模塊的測試中直接修改
——>用于測試驅(qū)動模塊的工程中,必須要有一個(gè)用于記錄測試信息的文本文件,記錄的內(nèi)容包括測試人,測試時(shí)間、測試結(jié)果及意見等相關(guān)信息
——>通過把測試用例放到靜態(tài)變量中,然后不斷修改靜態(tài)變量,實(shí)現(xiàn)了自動對測試用例的覆蓋測試
——>可使用輔助測試工具測試
編輯:admin 最后修改時(shí)間:2018-05-19