2012-09-19 99 views
2

我是嵌入式編程領域的新手,我正在尋找有關使用I2C,USB,UART,CAN等的微控制器接口的信息。有沒有人知道任何好的鏈接,書籍,教程,關於這個主題?因爲我對這個主題很滿意,如果它儘可能的基本,我更喜歡。微控制器接口

+0

從Google搜索開始! – androidFan

+0

您可能希望首先縮小您的選擇範圍:較低性能的8位和16位uC *與32位uC(如ARM Cortex-M3)具有16位指令集並使較舊的16位uC看起來過時。另請注意,高端UC具有MMU並可運行Linux;這樣的uC可能有你提到的大部分接口,例如Atmel AT91SAM9XE128。 BTW將SPI添加到您的接口列表中。 – sawdust

回答

3

由於您已經是桌面開發人員,您可能會跳到中間的某處。下載您打算使用的控制器的用戶手冊。從製造商等網站獲取示例代碼,以獲得更簡單的外設之一 - UART非常好。

獲取開發板和Eclipse/Crossworks /任何支持您的開發板並獲得某些功能的開發系統 - 閃光LED,UART回聲等。不要試圖首先使用多任務器和中斷驅動程序 - 只需用盡可能少的代碼行輪詢UART即可。爲什麼 - 因爲獲得開發設置來編譯,鏈接,下載和運行一行代碼本身就是一個相當大的練習,沒有複雜代碼的複雜性。在您可以有效地編寫/調試控制器的任何代碼之前,您有您的開發設置和硬件來進行調試。 ,僅僅閃爍板載LED工作剛剛起步「的Blinky」的代碼是一個巨大的一步向前:)

大多數控制器有專門的小組/博客,無論是在UC廠商的網站或鏈接從它 - 加入他們的行列。

如果你想有效地進行這項工作,找一個董事會,並試圖讓它做一些事情 - 沒有更好的辦法。一旦你可以得到一個LED閃光燈或一個UART發出一串字符,你就可以參加比賽:)

開發簡單的'閃爍'或UART輪詢功能不會浪費 - 你可以繼續使用他們稍後當你有更復雜的代碼。閃爍LED(延遲循環被操作系統睡眠代替)是一個很好的指示器,代碼運行起來很好,我一直將它保存在交付的系統上。 UART輪詢也很有用 - 它將在沒有任何中斷的情況下運行,因此您可以從數據/預取/任何中止向量中調用它來發出許多在正在進行的開發過程中將獲得的'CRITICAL ERROR - SYSTEM HALTED'消息:)

3

維基百科確實是一個很好的起點,可以學習圍繞這些機制的基礎知識。一旦掌握了一些知識,我建議您查看具有以上某些功能的微控制器的實際數據表和用戶指南。例如,this 16位PIC具有專用的UART,I2C和SPI總線。查看文檔的相關部分,掌握您對基本原理的新知識,就會開始瞭解如何設計使用它們的系統。

下一步將是購買這樣的設備的開發板,然後,使用示例代碼(其中有噸),編碼自己的一些數據鏈接。順便提一句,UART是最容易測試的,因爲所有PC都可以使用終端的RS-232協議進行傳輸,所以在這種情況下,您可以編寫環回來相對容易地傳輸和接收字符。然而,對於I2C和SPI,我認爲您需要購買專用的host dongle以允許您使用協議進行傳輸,但我認爲Windows 8可能會引入本地支持(但不要引用我的意思)。

我還沒有使用CAN實現數據鏈,所以我不能特別評論,雖然我只是做了一個快速的谷歌搜索,並且有一個支持它的PIC系列,所以我相信你可以採用類似的方法。至於USB,我認爲這是一種黑色藝術,所以我會留下其他人來回答這個問題 - 儘管我知道你可以爲PIC提供一個USB軟件堆棧,所以再次,可能會採用類似的方法。

最後,我只提到PIC作爲示例微控制器。如果您對微控制器一般不熟悉,那麼您很快就會意識到,來自Microchip,TI和Atmel等公司的所有主要微控制器系列通常都採用相同的設計,所以我會進行瀏覽並選擇您的文檔,最舒服的(或者最不舒服的,就像Martin James所建議的那樣)。

+1

'選擇那些你最熟悉的文檔' - 你的意思是'最不舒服',當然? Re。可以 - 我會建議遠離這一點,特別是如果短語'全球接受過濾器'出現在文檔中的任何地方:( –

2

大多數情況下,您打算使用的微控制器的數據手冊或參考手冊就是您需要的。每個供應商都會以不同的方式實現這些接口,因此這是您的低級編程信息的唯一權威來源。

我 C和UART相對簡單,沒有標準的高級協議棧;這將由您或您可能連接到的設備定義。您的微控制器供應商幾乎可以獲得示例代碼和/或應用筆記。

CAN更加複雜,通常CAN網絡使用更高級的應用協議,其中有幾個適用於不同的應用領域,如CANopen,NMEA2000,DeviceNet,IEC J1939等。大多數情況下,第三方庫是實現應用程序協議棧最具成本效益的方法,但如果網絡僅包含您正在實施的設備,則可能不需要這種複雜性。您的微控制器供應商可能再次舉例說明。

USB由USB Implementers Forum非常強烈地定義,並且協議棧是非平凡的。大多數具有片上USB接口的微控制器供應商將爲至少設備級USB提供示例代碼和應用筆記。 USB Host堆棧更爲複雜,再次使用第三方庫(相對昂貴)是最快的市場推廣方式。否則,您將不得不支付USB IF的費用可能會使您自己的主機堆棧編寫代價更低。即使對於USB設備接口,您也將嚴格需要來自USB IF的USB供應商ID,售價爲2000美元。一些微控制器和磁帶庫供應商將允許您以很小的成本或免費的成本將他們的供應商ID用於定義的產品ID子集,但是就產量而言,您可能必須成爲重要的客戶。對於內部實驗,您可能不使用官方VID即可離開,但這樣的產品無法在商業上發佈。