1. 程式人生 > >01嵌入式入門-如何看原理圖

01嵌入式入門-如何看原理圖

原理圖 協議接口 內存接口

最近由於找到的工作是偏於嵌入式方向,因此又重新開始學習已經丟棄兩年的知識。新手學習知識感覺有一個通病:喜歡收集各種各樣的視頻、資料,網盤裏收藏一大堆,但是卻從沒有打開看過,到頭來還是個小白,只聽說過幾個概念,而實際卻是不知所雲,這就是所謂的"學習綜合征"。而我也是其中的一員,最近痛定思痛,就準備根據一套資料沈下心學習下去,不再進入收集資料的大軍。市場上關於嵌入式方面的視頻或資料有很多,比如國嵌、韋東山、華清遠見、朱有鵬等等,各有千秋但是最後還是殊途同歸,以我之見把其中一套吃透也算是入門,之後的成長還是要靠工作中的沈澱,看源碼,做項目才能提高。

現在準備根據韋東山老師的視頻寫一下自己學習的體會,這一次寫的主要是關於如何看原理圖,主要分為以下幾個部分:GPIO和門電路,協議類接口(UART/I2C/SPI/NAND)、內存類接口。

一、GPIO和門電路原理圖

General Purpose Input Output(通用輸入/輸出)簡稱為GPIO,或總線擴展器。通常GPIO寄存器可以分為三類:

控制寄存器:為輸入、輸出、或其它特殊功能

數據寄存器:1或0

上拉寄存器:設置IO的輸出模式是高阻,還是帶上拉的電平輸出,或者不帶上拉的電平輸出


技術分享圖片技術分享圖片

上圖所示,可以配置按鍵所以對應引腳控制寄存器為輸入功能,LED引腳為輸出功能,那麽就通過按鍵控制LED燈的亮與滅。上拉(下拉)電阻是將不確定的信號通過一個電阻鉗位在高(低)電平,電阻同時起限流作用。

技術分享圖片技術分享圖片

上圖所示的電阻作用就是分別對應上拉電阻,與下拉電阻。引腳輸出高電平,但由於後續電路的影響,輸出的高電平不高,就是達不到VCC,影響電路工作,所以要接上拉電阻。下拉電阻情況相反,讓芯片引腳輸出低電平,結果由於後續電路影響輸出的低電平達不到GND,所以接個下拉電阻。

門電路用以實現基本邏輯運算和復合邏輯運算的單元電路。常用的門電路在邏輯功能上有與門、或門、非門、與非門、或非門、與或非門、異或門等幾種。如下圖所示:


二、協議類接口

協議類接口電路分為兩個方面:硬件電路的搭建與引腳工作的時序。協議類接口主要實在兩個設備之間進行通信,類比兩個人的對話,就要解決兩個問題:

1、你說的話別人要能聽懂(兩個設備之間約定好相同的信號協議)

2、雙方說話的語速不能太快,要不然別人反應不過來(雙方滿足相同的時序要求)

  • UART

這裏以UART、I2C、SPI、NAND Flash四個個通信協議說明協議類接口的硬件原理圖與時序圖。通用異步收發傳輸器(Universal Asynchronous Receiver/Transmitter),通常稱作UART,是一種異步收發傳輸器,是電腦硬件的一部分。它將要傳輸的資料在串行通信與並行通信之間加以轉換。在TQ2440中串口電路如下:

技術分享圖片 技術分享圖片

由於UART傳輸過程,為了保證信號的有效性和傳輸距離,采用的是負邏輯電平,即邏輯"1"用-3~-12V表示,邏輯"0"用3~12V表示,因此2440輸出的信號需要進行電壓轉換,上圖即為電壓轉換的原理圖。在UART的協議中,沒有統一的時鐘,依靠起始位和停止位標識一幀數據。其幀格式起始位1位(低電平),數據位5-8位,校驗位0-1位,停止位有(1、1.5、2 高電平表示)幾種。

技術分享圖片

  • I2C

I2C總線是由Philips公司開發的一種簡單、雙向二線制同步串行總線。它只需要兩根線即可在連接於總線上的器件之間傳送信息。SDA(串行數據線)和SCL(串行時鐘線)都是雙向I/O線,接口電路為開漏輸出.需通過上拉電阻接電源VCC.當總線空閑時.兩根線都是高電平,連接總線的外同器件都是CMOS器件,輸出級也是開漏電路.

技術分享圖片


在I2C總線上,發送到SDA 線上的每個字節必須為8 位,每次傳輸可以發送的字節數量不受限制。每個字節後必須跟一個響應位。首先傳輸的是數據的最高位(MSB),如果從機要完成一些其他功能後(例如一個內部中斷服務程序)才能接收或發送下一個完整的數據字節,可以使時鐘線SCL 保持低電平,迫使主機進入等待狀態,當從機準備好接收下一個數據字節並釋放時鐘線SCL 後數據傳輸繼續。數據傳輸的開始條件為:時鐘保持高電平時,數據由高電平變為低電平;結束條件為:時鐘保持高電平時,數據由低電平變為高電平。

技術分享圖片

其數據傳輸格式為:

技術分享圖片

  • SPI

SPI是串行外設接口(Serial Peripheral Interface)的縮寫。SPI,是一種高速的,全雙工,同步的通信總線,並且在芯片的管腳上只占用四根線,節約了芯片的管腳,同時為PCB的布局上節省空間,提供方便,正是出於這種簡單易用的特性,如今越來越多的芯片集成了這種通信協議,比如AT91RM9200。在TQ2440中,沒有專門引出SPI總線的外設接口,但是查看2440芯片手冊可以知道,該芯片支持4中SPI工作方式。其總線構成可以用下圖表示:

技術分享圖片

各引腳表示的含義為:1)MOSI – Master數據輸出,Slave數據輸入 2)MISO – Master數據輸入,Slave數據輸出 3)SCK – 時鐘信號,由Master產生 4)/CS – Slave使能信號,由Master控制。

技術分享圖片

SPI接口在Master控制下產生的從器件使能信號和時鐘信號,兩個雙向移位寄存器按位傳輸進行數據交換,傳輸數據高位在前,低位在後(MSB first)。如上圖所示,在SCK的下降沿上數據改變,上升沿一位數據被存入移位寄存器。

  • NAND Flash

Nand-flash存儲器是flash存儲器的一種,NAND結構能提供極高的單元密度,可以達到高存儲密度,並且寫入和擦除的速度也很快。下圖為一塊NAND Flash芯片,除去不用引腳與電源引腳外,主要有數據引腳線、片選、寫、讀等引腳,個引腳功能可從芯片手冊上查到。

技術分享圖片

在Nand Flash芯片,一塊芯片稱為一個device,一個device又可以分為多個Block,一個Block可以分為多頁,因此要讀取指定區域的數據時,要分多次傳輸地址。

技術分享圖片技術分享圖片


以上介紹了四個協議類接口,其具體的使用與編程在以後再作總結。


三、內存類接口

內存類接口主要有SDRAM、NOR Flash等芯片,這類芯片信號傳輸可以分為片選、地址信號、數據信號三大類。對於這類設備的訪問,首先選定其片選信號,其次確定地址,在讀取數據。在2440中,其內存控制分為8個區域,每個區域為128M,下圖為TQ2440中,sdram的電路圖,這是由兩塊16位的SDROM組成一個32位SDROM。由圖可以知道其片選信號接到2440的nGCS6,在2440的內存映射圖中nGCS6的起始地址為0x30000000,這也是為什麽我們剛開始學習ARM裸機編程時,老師讓我們將程序燒錄到0x30000000。在圖中,地址線接到2440的ADD2-ADD14,而沒有接ADD1、ADD0那是因為,2440的字寬為32位,即4個字節,最少讀取數據與寫入數據的單元為4個字節。那麽,想要處理一個字節數據也是只有先取出4個字節,再從中拆除需要的數據,處理的數據必然是4的整數倍,因此最低兩位地址線可以不接。



技術分享圖片 技術分享圖片 技術分享圖片

2440中內存地址映射圖。

技術分享圖片





01嵌入式入門-如何看原理圖