32位精簡(jiǎn)指令集架構的AT91M42800A的設計與應用
摘要:介紹了ATMEL公司生產(chǎn)的基于32位精簡(jiǎn)指令集(RISC)架構的單片機AT91M42800A的特點(diǎn),提出了一種基于AT91M42800A的應用設計方案,給出該設計的硬件原理圖,同時(shí)針對AT91M42800A的存儲器空間分配問(wèn)題,給出了分散裝載的程序代碼舉例,從而為基于A(yíng)T91M42800A的嵌入式系統設計提供了一個(gè)思路。 關(guān)鍵詞:精簡(jiǎn)指令集 AT91M42800A 單片機 1 引言 目前,嵌入式產(chǎn)品逐步占領(lǐng)了PC市場(chǎng),而其核心部分——處理器的性能則決定了產(chǎn)品的設計和性能。在32位嵌入式處理器中, 由ATMEL 公司生產(chǎn)的AT91系列芯片之一AT91M42800A是基于A(yíng)RM7TDMI 處理器內核的16/32位微控制器,它除具有ARM處理器的低功耗、低成本、高性能等優(yōu)點(diǎn)外,還具有非常豐富的片內資源,特別適合于嵌入式產(chǎn)品的設計開(kāi)發(fā)。 2 AT91M42800A 的基本特性 AT91M42800A采用32位精簡(jiǎn)指令集(RISC)架構,因此,它既支持16位Thumb指令集,又支持32位的Arm指令集。它采用三級流水線(xiàn)結構,可在同一時(shí)間內,一條指令在執行,第二條指令在譯碼,第三條指令在取指,這樣,在每個(gè)周期都有一條指令在執行,因此,指令執行速度很快。AT91M42800A的基于先進(jìn)微控制器總線(xiàn)結構(AMBA)的模塊化設計方法具有綜合、快速、高性能價(jià)格比的特點(diǎn)。該微控制器的內部工作寄存器很多,非常適合實(shí)時(shí)控制應用。其主要特點(diǎn)如下:
本文引用地址:http://dyxdggzs.com/article/201610/307589.htm
●內核電壓和鎖相環(huán)電壓為2.7~3.6V, I/O口操作電壓為2.7~5.5V; ●內部帶有8kB靜態(tài)RAM; ●具有完全可編程外部總線(xiàn)接口(EBI),且多達8個(gè)片選,尋址空間很大; ●內含8通道外設數據控制器(PDC); ●帶有54個(gè)可編程I/O口; ●內含6通道16位定時(shí)/計數器; ●具有2個(gè)通用串行異步接收/發(fā)送器(USART)和2個(gè)主/從SPI接口; ●內含3個(gè)系統定時(shí)器; ●時(shí)鐘可由32768 Hz 晶體和內部鎖相環(huán)(PLL)電路產(chǎn)生,最高可編程至33MHz,也可由外部時(shí)鐘信號提供; ●內置嵌入式在線(xiàn)仿真電路(Embedded ICE)可通過(guò)JTAG口對AT91M42800A進(jìn)行測試。 3 基本組成系統 由AT91M42800A構成的最基本的系統至少應包括以下幾個(gè)部分: (1)程序存儲器(ROM) 由于A(yíng)T91M42800A 內部沒(méi)有ROM,因此,必須外擴一片程序存儲器。應當注意的是:AT91M42800A的8位總線(xiàn)和16位總線(xiàn)的FLASH接法不同,具體接法如圖1所示。 (2)數據存儲器RAM 如果設計的系統比較復雜,數據比較多,當單片機內部8kB SRAM不能滿(mǎn)足要求時(shí),還要外擴一片數據存儲器。AT91M42800A能夠支持兩種“寫(xiě)”方式,但對8位數據總線(xiàn)和16位數據總線(xiàn)的操作也是不同的,因此,對于不同的存儲器,其接法不同。對于8位總線(xiàn)的存儲器,只需接D0~D7,將D8~D15懸空,并將其地址線(xiàn)對接,而單片機的NWE/NWR0接到存儲器的NWE上。對于16位總線(xiàn)的存儲器,則將其數據線(xiàn)對接,A1~A17接存儲器的A0~A16,并將其N(xiāo)WE/NWR0接存儲器的NWE,NUB/NWR1接存儲器的NUB,NLB/A0接存儲器的NLB。外擴的RAM 的接法與外擴FLASH的接法類(lèi)似。 (3)時(shí)鐘發(fā)生電路 AT91M42800A的時(shí)鐘既可以外接晶體,也可外接時(shí)鐘信號。當外接晶體時(shí),由于其內帶振蕩電路,因此,外接32.768 kHz 的晶體后,可產(chǎn)生慢時(shí)鐘(SLCK)。由于SLCK頻率低,所以系統的功耗也很低。若想提高系統的工作頻率,則可通過(guò)PLLA或PLLB對其倍頻,以達到所要求的工作頻率。如果所需頻率不能通過(guò)PLL倍頻得到,則可由外接時(shí)鐘信號來(lái)提供。當外接時(shí)鐘信號時(shí),可直接把時(shí)鐘信號接到XIN引腳上,XOUT引腳懸空。 (4)顯示電路 顯示電路可采用數碼管顯示或液晶顯示,由于液晶顯示的功耗低,故常采用這種顯示方式。該設計選用的液晶顯示模塊為L(cháng)CM103。 (5)電源及復位電路 AT91M42800A內部帶有看門(mén)狗(WatchDog)電路,也可以外加WatchDog電路。本文中的例子采用的就是外加WatchDog電路的接法,所選用的器件是MAXIM公司生產(chǎn)的MAX6316LUK29CY。 4 典型應用 由于單片機AT91M42800A具有低功耗、高性能、片內資源豐富、尋址空間大等優(yōu)點(diǎn),所以適合現場(chǎng)總線(xiàn)產(chǎn)品的開(kāi)發(fā),其簡(jiǎn)要硬件原理圖如圖2所示。圖中只給出主要器件的主要引腳接法,電源電路及其它引腳限于篇幅圖中未畫(huà),讀者在實(shí)際的設計過(guò)程中可自行設定。 圖2 現場(chǎng)總線(xiàn)開(kāi)發(fā)實(shí)例 5 存儲器空間分配 在本設計中,由于A(yíng)RM7TDMI處理器的地址空間非常大(可達4G字節)。因此,在重映射前,可將地址最低的4MB分配給內部存儲器,最高的4M 分配給內部外設,其余中間的地址空間(從0x00400000到0xFFFCFFFF)留給外部擴展的設備,這部分設備可由AT91M42800A 的八個(gè)片選來(lái)選擇。筆者選擇的AT91M42800A開(kāi)發(fā)環(huán)境為ADS1.1,由于在實(shí)際的嵌入式系統中,ADS1.1提供的缺省存儲器映射不能滿(mǎn)足要求,而用戶(hù)的目標硬件有多個(gè)存儲器設備,且位于不同的位置,如上例中,AT91M42800A的四個(gè)片選分別給了外擴FLASH、外擴的RAM、以及FB3050的內部寄存器片選和存儲器片選,因此需要通過(guò)Scat-ter 文本文件來(lái)指定一段代碼或數據在加載和運行時(shí)在存儲器的不同位置,這個(gè)文本文件在命令行中由-scatter開(kāi)關(guān)指定。在arm linker菜單的output 子菜單下有link type一項。link type 選項中,只要選擇 scatter,并指定scatter.scf 文件的存儲位置就可以了。在下面的例子中,FLASH中的代碼和數據存儲在0x04000000起始的、長(cháng)度為32kB的地址空間中。 由于Start. s:匯編引導程序代碼在執行重映射后,中斷向量表將存放在內部RAM中,其地址范圍為0x00000000到0x00000018,因此,用于存放數據的實(shí)際地址是從0x00000020開(kāi)始的。存放在外擴RAM中的代碼放在ext_ram.c中,以下類(lèi)似。上例的scatter 文本文件代碼如下: FLASH 0x04000000 0x8000 { FLASH 0x04000000 0x8000 { Start.o (Reset, +First) * (+RO) } RAM ON CHIP 0x0020 0x2000 { *(+RW,+ZI) } RAM OFF CHIP 0x8000000 0x40000 { ext ram.o(+RW,+ZI) } FB3050 SEND 0x30000000 0x00ff { sendbuf.o(+RW,+ZI) } FB3050 RECEIVE 0x30004000 0x00ff { receive buf.o+RW+ZI } } 6 調試要點(diǎn) 在設計調試過(guò)程中,AT91M42800A還有幾個(gè)特殊的引腳需要特別注意。 BMS:此引腳用來(lái)選擇引導存儲器的數據寬度,如果引導存儲器是8位的,應將其上拉,而如果為16位則要下拉。 NTRI:此引腳用來(lái)選擇三態(tài)模式。如果要進(jìn)入三態(tài)模式,應使NTRI引腳在NRST上升沿到來(lái)之前保持10個(gè)慢時(shí)鐘周期的低電平,否則,則應將NTRI上拉。 NWAIT:此引腳在調試AT91M42800A時(shí),應將其上拉,否則,系統將進(jìn)入等待狀態(tài)。 MODE0、MODE1:這兩個(gè)引腳用來(lái)選擇AT91M42800A的4種操作模式,當模式改變時(shí),必須進(jìn)行復位才能有效。其設置方法如表1所列。 表1 操作模式設置 MODE0 MODE1 操 作 模 式 0 0 通用模式(時(shí)鐘由片上振蕩電路產(chǎn)生) 0 1 邊界掃描模式 1 0 通用模式(時(shí)鐘由外時(shí)鐘信號通過(guò)XIN引腳) 1 1 保留7 結束語(yǔ) AT91M42800A是一款處理能力非常強、性能價(jià)格比非常高的嵌入式微控制器,它具有32位處理器的處理能力,但卻只有16位處理器的價(jià)格。它豐富的片上資源和強大的擴展能力為嵌入式系統的開(kāi)發(fā)設計提供了很大靈活性。
評論