您好,登錄后才能下訂單哦!
最近由于找到的工作是偏于嵌入式方向,因此又重新開始學習已經丟棄兩年的知識。新手學習知識感覺有一個通病:喜歡收集各種各樣的視頻、資料,網盤里收藏一大堆,但是卻從沒有打開看過,到頭來還是個小白,只聽說過幾個概念,而實際卻是不知所云,這就是所謂的"學習綜合征"。而我也是其中的一員,最近痛定思痛,就準備根據一套資料沉下心學習下去,不再進入收集資料的大軍。市場上關于嵌入式方面的視頻或資料有很多,比如國嵌、韋東山、華清遠見、朱有鵬等等,各有千秋但是最后還是殊途同歸,以我之見把其中一套吃透也算是入門,之后的成長還是要靠工作中的沉淀,看源碼,做項目才能提高。
現在準備根據韋東山老師的視頻寫一下自己學習的體會,這一次寫的主要是關于如何看原理圖,主要分為以下幾個部分: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中內存地址映射圖。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。