Linux驅動設計的硬件基礎

驅動設計的硬件基礎

1、處理器

1.1、通用處理器GPP

微控制器MCU和微處理器MPU 中會包含一個通用處理器核。MPU 通常代表一個 CPU(中央處理器),而 MCU 則強調把中央處理器、存儲器和外圍電路集成在一個芯片中。早期,微控制器被稱爲單片機,指把計算機集成在一個芯片內。

中央處理器的體系架構可以分爲兩類, 一類爲馮· 諾伊曼結構, 一類爲哈佛結構。

1.2、數字信號處理器DSP

數字信號處理器(DSP)針對通信、圖像、語音和視頻處理等領域的算法而設計。DSP 分爲兩類,一類是定點 DSP,一類是浮點 DSP。浮點 DSP 的浮點運算用硬件來實現,可以在單週期內完成,因而其浮點運算處理速度高於定點 DSP。

2、存儲器

存儲器可分爲只讀儲存器(ROM) 、閃存(Flash) 、隨機存取存儲器(RAM) 、光介質存儲器和磁介質存儲器。

 

2.1、ROM

ROM 還可再細分爲不可編程 ROM、可編程 ROM(PROM)、可擦除可編程 ROM(EPROM)和電可擦除可編程 ROM(EEPROM),目前 ROM 有被 Flash 替代的趨勢。

2.2、Flash

NOR(或非)和 NAND(與非)是市場上兩種主要的 Flash閃存技術。

  • NOR Flash 和 CPU 的接口屬於典型的類 SRAM 接口,不需要增加額外的控制電路。而 NAND Flash 和 CPU 的接口必須由相應的控制電路進行轉換,當然也可以通過地址線或 GPIO 產生 NAND Flash 接口的信號。

  • NOR Flash 的特點是可芯片內執行(XIP,eXecute In Place),程序可以直接在 NOR內運行。。NAND FLASH 以塊方式進行訪問,不支持芯片內執行

  • NAND Flash 較 NOR Flash 容量大,價格低

  • NAND Flash 中每個塊的最大擦寫次數是一百萬次,而 NOR 的擦寫次數是十萬次。

  • NAND Flash 的擦除、編程速度遠超過 NOR Flash。

  • 由於 Flash 固有的電器特性,在讀寫數據過程中,偶然會產生 1 位或幾位數據錯誤,即位反 轉,NAND Flash 發生位反轉的機率要遠大於 NOR Flash。位反轉無法避免,因此,使用 NAND Flash 的同時,應採用錯誤探測/錯誤更正(EDC/ECC)算法。

     

    注:Flash 的編程原理都是隻能將 1 寫爲 0,而不能將 0 寫爲 1。所以在 Flash 編程之前,必須將 對應的塊擦除,而擦除的過程就是把所有位都寫爲 1 的過程,塊內的所有字節變爲 0xFF。

     

2.3、RAM

以上所述的各種 ROM、Flash 和磁介質存儲器都屬於非易失性存儲器(NVM)的範疇,掉電信息不會丟失,而 RAM 則與此相反,爲易失性存儲器

RAM 也可再分爲靜態 RAM(SRAM)和動態 RAM(DRAM)。

DRAM 以電荷形式進行存儲,數據存儲在電容器中。由於電容器會由於漏電而導致電荷丟失,因而DRAM 器件需要定期被刷新。 通常所說的 SDRAM、DDR SDRAM 皆屬於 DRAM 的範疇。

SRAM 是靜態的, 只要供電它就會保持一個值, SRAM沒有刷新週期

每個 SRAM 存儲元由 6 個晶體管組成,而 DRAM 存儲單元由 1 個晶體管和 1 個電容器組成。

針對許多特定場合的應用,嵌入式系統中往往還使用了一些特定類型的 RAM。

1.NVRAM:非易失性 RAM

NVRAM 藉助帶有備用電源的 SRAM 或藉助 NVM(如 EEPROM)存儲 SRAM的信息並恢復來實現

2.DPRAM:雙端口 RAM

DPRAM 的特點是可以通過 2 個端口同時訪問,具有 2 套完全獨立的數據總線、地址總線線和讀寫控制線,通常用於 2 個處理器之間交互數據。

 

 

3.CAM:內容尋址 RAM

CAM 是以內容進行尋址的存儲器,是一種特殊的存儲陣列 RAM,它的主要工作機制就是將一個輸入數據項與存儲在 CAM 中的所有數據項自動同時進行比較,判別該輸入數據項與 CAM 中存儲的數據項是否相匹配,並輸出該數據項對應的匹配信息。

 

 

3、低速接口與總線

3.1、串口UART

1、RS232

全雙工、點對點、幾米。

電子工業協會(Electronic Industries Association,EIA) 所制定的異步傳輸標準接口。通常 RS-232 接口以9個引腳 (DB-9) 或是25個引腳 (DB-25) 的型態出現.

RS-232-C標準規定的數據傳輸速率爲50、75、100、150、300、600、1200、2400、4800、9600、19200、38400波特

RS-232點對點連接,一個串口只能連接一個外設。

接口的信號電平值較高,易損壞接口電路的芯片。因爲與TTL電平不兼容故需使用電平轉換電路方能與TTL電路連接。傳輸速率較低,在異步傳輸時,波特率爲20Kbps

傳輸距離有限,最大傳輸距離標準值爲50英尺,實際上也只能用在15米左右。

2、RS-485

半雙工、主節點、輪詢方式、一公里

具有聯網功能

RS485有兩線制和四線制兩種接線,四線制只能實現點對點的通信方式,現很少採用,現在多采用的是兩線制接線方式,這種接線方式爲總線式拓撲結構,在同一總線上最多可以掛接32個節點

下面我們看下 RS485 的特點:

(1)接口電平低,不易損壞芯片。 RS485 的電氣特性:邏輯“ 1”以兩線間的電壓差爲+(2~6)V 表示;邏輯“ 0”以兩線間的電壓差爲-(2~6)V 表示。接口信號電平比 RS232 降低了,不易損壞接口電路的芯片,且該電平與 TTL 電平兼容,可方便與 TTL 電路連接。

(2)傳輸速率高。10 米時,RS485 的數據最高傳輸速率可達 35Mbps,在1200m 時,傳輸速度可達 100Kbps。

(3)抗干擾能力強。 RS485 接口是採用平衡驅動器和差分接收器的組合,抗共模干擾能力增強,即抗噪聲干擾性好。

(4)傳輸距離遠,支持節點多。RS485 總線最長可以傳輸 1200m 以上(速率≤100Kbps)一般最大支持 32 個節點,如果使用特製的 485 芯片,可以達到128 個或者 256 個節點,最大的可以支持到 400 個節點。

3、RS-422

全雙工 點對多 一公里

共5根線。由於接收器採用高輸入阻抗和發送驅動器比RS232更強的驅動能力,故允許在相同傳輸線上連接多個接收節點,最多可接10個節點。一個主設備(Master),其餘爲從設備(Slave),從設備之間不能通信,所以RS-422支持點對多的雙向通信。RS-422的最大傳輸距離爲4000英尺(約1219米),最大傳輸速率爲10Mb/s。

4、串口基礎知識

串口按位(bit)發送和接收字節。儘管比按字節(byte)的並行通信慢,但是串口可以在使用一根線發送數據的同時用另一根線接收數據。它很簡單並且能夠實現遠距離通信。

通信使用3根線完成:(1)地線,(2)發送,(3)接收。由於串口通信是異步的,端口能夠在一根線上發送數據同時在另一根線上接收數據。

1、波特率

這是一個衡量通信速度的參數它表示每秒鐘傳送的bit的個數。例如300波特表示每秒鐘發送300個bit。當我們提到時鐘週期時,我們就是指波特率例如如果協議需要4800波特率,那麼時鐘是4800Hz。這意味着串口通信在數據線上的採樣率爲4800Hz。波特率可以遠遠大於這些值,但是波特率和距離成反比。

2、數據位

這是衡量通信中實際數據位的參數。當計算機發送一個信息包,實際的數據不會是8位的,標準的值是5、7和8位。如何設置取決於你想傳送的信息。比如,標準的ASCII碼是0~127(7位)。擴展的ASCII碼是0~255(8位)。如果數據使用簡單的文本(標準ASCII碼),那麼每個數據包使用7位數據。每個包是指一個字節,包括開始/停止位,數據位和奇偶校驗位。由於實際數據位取決於通信協議的選取,術語“包”指任何通信的情況。

3、停止位

用於表示單個包的最後一位。典型的值爲1,1.5和2位。由於數據是在傳輸線上定時的,並且每一個設備有其自己的時鐘,很可能在通信中兩臺設備間出現了小小的不同步。因此停止位不僅僅是表示傳輸的結束,並且提供計算機校正時鐘同步的機會。適用於停止位的位數越多,不同時鐘同步的容忍程度越大,但是數據傳輸率同時也越慢。

4、奇偶校驗位

在串口通信中一種簡單的檢錯方式。有四種檢錯方式:偶、奇、高和低。當然沒有校驗位也是可以的。對於偶和奇校驗的情況,串口會設置校驗位(數據位後面的一位),用一個值確保傳輸的數據有偶個或者奇個邏輯高位。例如,如果數據是011,那麼對於偶校驗,校驗位爲0,保證邏輯高的位數是偶數個。如果是奇校驗,校驗位位1,這樣就有3個邏輯高位。

3.2、集成電路總線IIC

I2C總線具有兩根雙向信號線,一根是數據線SDA,另一根是時鐘線SCL

1、初始化、起始和停止

初始化:IIC的初始化爲SDA和SCL均爲高。

開始信號:處理器讓SCL時鐘保持高電平,然後讓SDA數據信號由高變低就表示一個開始信號。同時IIC總線上的設備檢測到這個開始信號它就知道處理器要發送數據了。

停止信號:處理器讓SCL時鐘保持高電平,然後讓SDA數據信號由低變高就表示一個停止信號。同時IIC總線上的設備檢測到這個停止信號它就知道處理器已經結束了數據傳輸,我們就可以各忙各個的了,如休眠等。

 

2、數據傳輸和響應信號

數據傳輸:SDA上的數據只能在SCL爲低電平期間翻轉變化,在SCL爲高電平期間必須保持穩定,IIC設備只在SCL爲高電平期間採集SDA數據。

在選擇從設備時,如果從設備採用 7 位地址,則主設備在發起傳輸過程前,需先發送 1 字節的地址信息,前 7 位爲設備地址,最後 1 位爲讀寫標誌。之後,每次傳輸的數據也是 1 個字節,從 MSB 位開始傳輸。每個字節傳完後,在 SCL 的第 9 個上升沿到來之前,接收方應該發出 1 個 ACK 位。SCL 上的時鐘脈衝由 I 2 C 主控方發出,在第 8個時鐘週期之後,主控方應該釋放 SDA。

響應信號(ACK):單片機發完8bit數據後就不再驅動總線了(SDA引腳變輸入),而SDA和SDL硬件設計時都有上拉電阻,所以這時候SDA變成高電平。那麼在第8個數據位,如果外接IIC設備能收到信號的話接着在第9個週期把SDA拉低,那麼處理器檢測到SDA拉低就能知道外接IIC設備數據已經收到。

 

 

注:將SCL拉低,爲後續SDA電平變化做準備參考博客從硬件到軟件的實現過程:https://blog.csdn.net/lingdongtianxia/article/details/81135456

3.3、SPI

1、簡介

SPI是串行外圍設備接口,是一種高速,全雙工,同步的通信總線。常規只佔用四根線。主要應用在 EEPROM,FLASH,實時時鐘,AD轉換器,還有數字信號處理器和數字信號解碼器之間。

  • 優點:

支持全雙工,push-pull的驅動性能相比open-drain信號完整性更好;

支持高速(100MHz以上);

協議支持字長不限於8bits,可根據應用特點靈活選擇消息字長;

硬件連接簡單;

  • 缺點:

相比IIC多兩根線;

沒有尋址機制,只能靠片選選擇不同設備;

沒有從設備接受ACK,主設備對於發送成功與否不得而知;

典型應用只支持單主控;

相比RS232 RS485和CAN總線,SPI傳輸距離短;

2、硬件結構

SPI總線定義兩個及以上設備間的數據通信,提供時鐘的設備爲主設備Master,接收時鐘的設備爲從設備Slave。

信號定義如下:
SCK : Serial Clock 串行時鐘
​
MOSI : Master Output, Slave Input 主發從收信號
​
MISO : Master Input, Slave Output 主收從發信號
​
SS/CS : Slave Select 片選信號

電路連接如下:

單個主設備和單個從設備:

單個主設備和多個從設備,通過多個片選信號或者菊花鏈方式實現:(其實就是串並聯兩種方式)

片選時,主機的NSS信號爲高電平,從機的NSS信號被主機片選,即低電平的被選中。

3、SPI傳輸模式

通過設置控制寄存器SPICR1中的CPOL和CPHA位,將SPI可以分成四種傳輸模式。

CPOL,即Clock Polarity,決定時鐘空閒時的電平爲高或低。

不同的從設備可能在出廠是就是配置爲某種模式,這是不能改變的;但我們的通信雙方必須是工作在同一模式下,所以我們可以對我們的主設備的SPI模式進行配置,通過CPOL(時鐘極性)和CPHA(時鐘相位)來控制我們主設備的通信模式,具體如下:

Mode0:CPOL=0,CPHA=0 Mode1:CPOL=0,CPHA=1 Mode2:CPOL=1,CPHA=0 Mode3:CPOL=1,CPHA=1

時鐘極性CPOL是用來配置SCLK的電平出於哪種狀態時是空閒態或者有效態,時鐘相位CPHA是用來配置數據採樣是在第幾個邊沿: CPOL=0,表示當SCLK=0時處於空閒態,所以有效狀態就是SCLK處於高電平時 CPOL=1,表示當SCLK=1時處於空閒態,所以有效狀態就是SCLK處於低電平時 CPHA=0,表示數據採樣是在第1個邊沿,數據發送在第2個邊沿 CPHA=1,表示數據採樣是在第2個邊沿,數據發送在第1個邊沿

例如: CPOL=0,CPHA=0:此時空閒態時,SCLK處於低電平,數據採樣是在第1個邊沿,也就是 SCLK由低電平到高電平的跳變,所以數據採樣是在上升沿,數據發送是在下降沿。

CPOL=0,CPHA=1:此時空閒態時,SCLK處於低電平,數據發送是在第1個邊沿,也就是 SCLK由低電平到高電平的跳變,所以數據採樣是在下降沿,數據發送是在上升沿。

CPOL=1,CPHA=0:此時空閒態時,SCLK處於高電平,數據採集是在第1個邊沿,也就是 SCLK由高電平到低電平的跳變,所以數據採集是在下降沿,數據發送是在上升沿。

CPOL=1,CPHA=1:此時空閒態時,SCLK處於高電平,數據發送是在第1個邊沿,也就是 SCLK由高電平到低電平的跳變,所以數據採集是在上升沿,數據發送是在下降沿。

3.4、CAN BUS

1、簡介

CAN是控制器局域網絡(Controller Area Network, CAN)的簡稱,是一種能夠實現分佈式實時控制的串行通信網絡。

優點:

傳輸速度最高到1Mbps,通信距離最遠到10km,無損位仲裁機制,多主結構。近些年來,CAN控制器價格越來越低。

Ø 低成本:ECUs通過單個CAN接口進行通信,佈線成本低。

Ø 高集成:CAN總線系統允許在所有ECUs上進行集中錯誤診斷和配置。

Ø 可靠性:該系統對子系統的故障和電磁干擾具有很強的魯棒性,是汽車控制系統的理想選擇。

Ø 高效率:可以通過id對消息進行優先級排序,以便最高優先級的id不被中斷。

Ø 靈活性:每個ECU包含一個用於CAN總線收發芯片,隨意添加CAN總線節點。

2、CAN總線網絡

CAN總線網絡主要掛在CAN_H和CAN_L,各個節點通過這兩條線實現信號的串行差分傳輸,爲了避免信號的反射和干擾,還需要在CAN_H和CAN_L之間接上120歐姆的終端電阻。爲什麼是120Ω,因爲電纜的特性阻抗爲120Ω,爲了模擬無限遠的傳輸線。

3、CAN收發器

CAN收發器的作用是負責邏輯電平和信號電平之間的轉換。

即從CAN控制芯片輸出邏輯電平到CAN收發器,然後經過CAN收發器內部轉換將邏輯電平轉換爲差分信號輸出到CAN總線上,CAN總線上的節點都可以決定自己是否需要總線上的數據。具體的引腳定義如下:

4、CAN信號表示

CAN總線採用不歸零碼位填充技術,也就是說CAN總線上的信號有兩種不同的信號狀態,分別是顯性的(Dominant)邏輯0和隱形的(recessive)邏輯1,信號每一次傳輸完後不需要返回到邏輯0(顯性)的電平。

顯性與隱性電平的解釋:

CAN的數據總線有兩條,一條是黃色的CAN_High,一條是綠色的CAN_Low。當沒有數據發送時,兩條線的電平一樣都爲2.5V,稱爲靜電平,也就是隱性電平。當有信號發送時,CAN_High的電平升高1V,即3.5V,CAN_Low的電平降低1V,即1.5V。

按照定義的:

  • CAN_H-CAN_L < 0.5V 時候爲隱性的,邏輯信號表現爲"邏輯1"- 高電平。

  • CAN_H-CAN_L > 0.9V 時候爲顯性的,邏輯信號表現爲"邏輯0"- 低電平。

5、CAN信號傳輸

發送過程: CAN控制器將CPU傳來的信號轉換爲邏輯電平(即邏輯0-顯性電平或者邏輯1-隱性電平)。CAN發射器接收邏輯電平之後,再將其轉換爲差分電平輸出到CAN總線上。

接收過程: CAN接收器將CAN_H 和 CAN_L 線上傳來的差分電平轉換爲邏輯電平輸出到CAN控制器,CAN控制器再把該邏輯電平轉化爲相應的信號發送到CPU上。

 

5、CAN數據傳輸

CAN總線傳輸的是CAN幀,CAN的通信幀分成五種,分別爲數據幀、遠程幀、錯誤幀、過載幀和幀間隔。

數據幀根據仲裁段長度不同分爲標準幀(2.0A)和擴展幀(2.0B)

幀起始

由一個顯性位(低電平)組成,發送節點發送幀起始,其他節點同步於幀起始;

幀結束

由7個隱形位(高電平)組成。

仲裁段

只要總線空閒,總線上任何節點都可以發送報文,如果有兩個或兩個以上的節點開始傳送報文,那麼就會存在總線訪問衝突的可能。但是CAN使用了標識符的逐位仲裁方法可以解決這個問題。

CAN總線控制器在發送數據的同時監控總線電平,如果電平不同,則停止發送並做其他處理。如果該位位於仲裁段,則退出總線競爭;如果位於其他段,則產生錯誤事件。

幀ID越小,優先級越高。由於數據幀的RTR位爲顯性電平,遠程幀爲隱性電平,所以幀格式和幀ID相同的情況下,數據幀優先於遠程幀;由於標準幀的IDE位爲顯性電平,擴展幀的IDE位爲隱形電平,對於前11位ID相同的標準幀和擴展幀,標準幀優先級比擴展幀高。

數據段

一個數據幀傳輸的數據量爲0~8個字節,這種短幀結構使得CAN-bus實時性很高,非常適合汽車和工控應用場合如圖27所示。

數據量小,發送和接收時間短,實時性高,被幹擾的概率小,抗干擾能力強。

 

注:更多詳細請參考https://blog.csdn.net/liuligui5200/article/details/79030676

 

3.5、LIN BUS

 

3.6、IE BUS

 

4、高速接口與總線

4.1、USB

 

4.2、PCI/PCIE

 

4.3、SD/SDIO

 

4.4 EMMC

 

4.5 UFS

 

4.6 AVB

 

4.7 MOST

 

4.8 STAT

 

 

 

 

 

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章