筆者並非專業電子信息的,只是想用硬件來實現一些功能,但是我認爲在用一個東西的時候,有必要了解這個模塊的組成,即使這裏面的許多專有名詞並不是很熟悉。
目錄
Arduino專用微控制器
其實,arduino開發板只是一個AVR芯片的載體,所以arduino的電氣特性多半指處理器的電氣特性。芯片引腳直接連接arduino開發板邊緣的針型端子或焊盤。芯片與開發板的連接點之間不存在緩衝或電平位移。
目前arduino採用的AVR設備的主要區別在於板載閃存的數量、最大時鐘頻率、芯片上I/O引腳的數目,以及可用的內部外圍電路。
- 以下是arduino產品使用的AVR微控制器:
接下來將會介紹ATmega168/328
從根本上說,ATmega168與ATmega328是一樣的芯片,只是帶有不同大小的板載內存。
- 下圖展示了ATmega168與ATmega328微控制器內部的框圖:
1)內存
ATmega328中的每種內存都是ATmega168的兩倍,除此之外,兩者完全相同。
- 以下是ATmega168/328板載內存:
2)特性
ATmega168/328擁有如下特性:
- 支持片上啓動程序的系統內編程(in-system programming by on-chip boot program)
- 2個8位定時器/計數器,帶有獨立預分頻器和比較模式
- 1個16位定時器/計數器,帶有獨立預分頻器、比較模式和捕獲模式
- 實時計數器,配有獨立振盪器
- 6個PWM通道
- 6個或8個通道的10位ADC(取決於封裝類型)
- USART
- 主從SPI串行接口
- 雙線串行接口(兼容Philips I2C)
- 可編程看門狗定時器
- 模擬比較器
- 23個可編程I/O線路
3)封裝
ATmega168與ATmega328有4種不同的封裝類型可用,分別爲:
- 28-pin DIP
- 28-pin MLF表面貼裝
- 32-pin TQFP表面貼裝
- 32-pin MLF表面貼裝
其中,28-pin DIP是arduino開發板最常用的封裝方式,但Uno AMD除外,它使用32-pin表面貼裝方式。
這裏主要介紹ATmega168的PDIP版本。
4)端口
ATmega168/328設計有3種類型的端口,分別爲B、C、D。其中,端口B與D是8位端口,端口C有6個可用的引腳,它們可用作ADC輸入。
每個端口提供雙向獨立的數字I/O,並帶有可編程的內部上拉電阻。上拉電阻的on/off狀態藉由控制寄存器中特定的端口引腳位進行選擇。
端口輸出緩衝擁有對稱的驅動特性,並帶有匯和源的能力(sink and source capability)。
5)引腳電路
下面這張圖顯示了28-pin DIP封裝的引腳電路:
6)模擬比較器輸入
下面這張圖顯示使用PDIP封裝的ATmega168或ATmega328的AIN0與AIN1引腳的位置。
注意,AIN0與OC0A定時器/計數器輸出(PD6)共享一個引腳。所以,如果PD6被用作PWM輸出,它就不能被用作AIN0輸入,除非每次需要修改其功能時進行重新配置。
7)模擬輸入
除了用於TWI串行通信的SCL與SDA引腳之外,模擬輸入引腳也可以用作獨立的數字I/O,或者用作模擬輸入,不與AVR其他周邊電路發生衝突。下面這張圖顯示ATmega168的PDIP封裝的引腳,它們被用作模擬輸入。
8)串行接口
下面顯示了ATmega168(PDIP封裝)的I/O引腳,串口電路會使用它們。由於沒有串行電路共享端口引腳,所以3種類型都可以使用,不會發生端口衝突。
9)定時器/時鐘I/O
ATmega168/328的內部定時器/計數器邏輯相當複雜,這反映在芯片的引腳分配上,下面這張圖展示了ATmega168/328微控制器定時器/計數器引腳:
注意OCxn引腳(OC0A、OC0B、OC1A、OC1B、OC2A、OC2B)可以用作PWM輸出,並且在arduino開發板上都被打上了標籤。還要注意T1與OSC0B共用相同的引腳(PD5),但也可以使用其他具有PWM能力的輸出,且不會與其他定時器/計數器電路發生衝突。
10)外部中斷
端口D的PD2與PD3引腳特意被用作外部中斷輸入。
11)arduino引腳分配
ATmega168/328引腳的arduino標籤:
其中,主要強調的是最常用的功能,比如獨立的數字I/O、模擬輸入、以及AVR控制器的PWM輸出能力。
12)基本電氣特徵
下圖展示了ATmega168/328微控制器的一些基本電氣特徵,重點強調的是電力消耗:
參考:
- Arduino:A Technical Reference John M. Hughes
- Atmel官網:https://www.microchip.com/ 因爲Atmel被micropchip收購了
- 官方pdf文檔位置:http://ww1.microchip.com/downloads/en/DeviceDoc/Atmel-7810-Automotive-Microcontrollers-ATmega328P_Datasheet.pdf