ADμC702x系列MicroConverter的特點與應(yīng)用
摘 要 主要介紹Analog Devices公司基于ARM7TDMI體系結(jié)構(gòu)的新型AD,μC702x系列Micro Converter的特點;討論基于ADμC702x芯片的應(yīng)用電路設(shè)計及在不同模式下A/D轉(zhuǎn)換單元的工作特性,并說明ADμuC702x評估板所提供開發(fā)工具的使用方法。旨在幫助讀者盡快熟悉使用ADμC702x系列Micro Converter。
關(guān)鍵詞 ADμC702x Micro Converter ARM7TDMI KEIL
引 言
ADI(Analog Devices Inc)公司是美國著名的半導(dǎo)體生產(chǎn)廠商,其生產(chǎn)的模擬器件、AD~C800系列(51內(nèi)核)單片機(jī)和ADSP系列處理器在國內(nèi)已有廣泛應(yīng)用。近來,ADI公司采用新型的ARM7TDMI內(nèi)核設(shè)計了全新的ADμC702x系列MicroConverter,其運(yùn)算速度可達(dá)45MIPS,12位A/D轉(zhuǎn)換速率高達(dá)1000 ksps,是MicroConverter系列中功能最強(qiáng)的成員。本文簡要介紹ADμC702x系列MicroConverter的特點及其軟、硬件的設(shè)計。
1 ADpC702x系列的特點及硬件設(shè)計
ADμC702x系列MicroConverter采用ARM7TDMI體系結(jié)構(gòu),支持16/32位精簡指令集(RISC),具有最多16通道、高達(dá)1000 ksps采樣速率的12位A/D。ADμC702x系列整合了片內(nèi)參考電平與溫度傳感器,支持JTAG方式調(diào)試與下載,外接32 kHz晶振,通過鎖相環(huán)可工作在45MHz下。該系列產(chǎn)品集成有62 KB的Flash與8 KB的SRAM,片上外設(shè)資源包含有UAR了、SPI,雙I2C串行接口、4個定時器、看門狗、電源監(jiān)測模塊、3相16位PWM輸出和可編程邏輯陣列(PLA)等。ADμC702x系列采用3V供電,在1 MHz系統(tǒng)時鐘下耗電為3 mA,45 MHz時鐘頻率下耗電為50 mA。圖1為以ADμC7026為例的系統(tǒng)功能框圖。下面簡要介紹AD#C702x系列的硬件特點與相關(guān)設(shè)計。
1.1ADuC702x系列A/D轉(zhuǎn)換器的配置與應(yīng)用
ADμC702x系列MicroConverter包含有快速多通12位A/D轉(zhuǎn)換器,可工作在2.7~3.6V電電壓下;在系統(tǒng)時鐘為45 MHz時,可提供1000 ksps的采樣率。A/D模塊還具有多路選擇開關(guān)、差動采樣保持和片上A/D轉(zhuǎn)換參考電平(2.5 V)。
ADμC702x系列的A/D轉(zhuǎn)換器可配置為差分、偽差分和單端模式。在偽差分與單端模式下,A/D轉(zhuǎn)換的輸入范圍是0 V~VREF(參考電平)。在差分模式下,輸入信號的共模電平為VCM,輸入信號范圍必須在0 V—AVDD(模擬電源電子)之間,輸入信號的差模幅值最大可達(dá)2VREF,如圖2所示。當(dāng)A/D工作在差分方式時,每兩路A/D轉(zhuǎn)換引腳作為一路A/D轉(zhuǎn)換通道,所以在該方式下可用的A/D通道較少;但差分方式對每一路模擬信號都能提供很好的共模抑制,并且擁有更寬的輸入范圍。采用單端與偽差分方式時,每個A/D引腳可作為獨立通道工作,所以會擁有更多的A/D通道與更高的分辨率(為差分方式下2倍)。在設(shè)計時,可根據(jù)信號的特點選擇A/D轉(zhuǎn)換方式。
1.2 ADμC702x系列存儲系統(tǒng)的特點與設(shè)計
ADμC702x系列MicroConverter具有64 KB的片上Flash。其中頂端的2 KB存儲區(qū)包含有永久的固件,主要用于工廠校準(zhǔn)、上電時內(nèi)部引導(dǎo)和串口程序加載等,對用戶是不可見的。其余62 KB可用于用戶程序的寫入。Flash組織方式為32K×16位。當(dāng)執(zhí)行ARM(32位)指令集時,單周期不能完成取指,而且從Hash中讀取數(shù)據(jù)需要插入更多的額外時鐘周期,所以對于關(guān)鍵的代碼段或中斷服務(wù)程序可以映射到SRAM中進(jìn)行。ADμC702x系列的SRAM組織方式為2K×32位,訪問速度為2 ns,可全速執(zhí)行ARM代碼。
在系統(tǒng)復(fù)位后,內(nèi)核首先執(zhí)行2KB的內(nèi)部設(shè)置程序,然后默認(rèn)從Flash中取指??赏ㄟ^REMAP寄存器(ADμC702x系列的寄存器除標(biāo)準(zhǔn)的37個ARM7TDMI寄存器外都為存儲器映射寄存器一一MMR)映射為從SRAM中取指,也可從SRAM取指方式通過REMAP寄存器返回為Flash取指方式。
ADμC702x系列中只有多引腳封裝的ADμC7026與ADμC7027支持外部存儲器擴(kuò)展,其外部存儲器總線可工作在8位或16位帶寬模式下,分為4個存儲區(qū),通過MS[3:O]進(jìn)行選擇。典型外部總線設(shè)置如圖3所示。
1.3 ADμC702x系列的PLA介紹
ADμC702x系列整合了可編程邏輯陣列(PLA),包含有2個相互獨立但內(nèi)部連接的PLA模塊。每個模塊包含8個PLA單元,共含有16個PLA單元。每個PLA單元包含1個雙輸入的查表結(jié)構(gòu),可用于產(chǎn)生基于輸入的任伺邏輯輸出函數(shù)并包含有1個觸發(fā)器。PLA單元的結(jié)構(gòu)如圖4所示。
ADμC702x系列共有30個可用于PLA的GPIO口,其中有16個輸入口,14個輸出口??赏ㄟ^配置GPxCON寄存器使它們成為PLA的外部引腳。通過配置相關(guān)寄存器可使PLA成為中斷源,啟動A/D轉(zhuǎn)換或在輸出引腳得到所需信號等。在AD公司的開發(fā)工具中還含有專門的設(shè)計軟件用來設(shè)計PLA寄存器配置。
1.4 ADμC702x電源與其他硬件相關(guān)設(shè)計
由于ADμC702x系列內(nèi)部整合有模擬與數(shù)字兩部分電路。為了防止數(shù)字部分對模擬部分的干擾,保證A/D精度,在電源部分設(shè)計時要特別注意兩部分電源的隔離??刹捎秒p電源供電或單電源供電磁珠隔離方式。典型電路分別如圖5、6所示。
ADμC702x系列其他片上外設(shè)資源,如LIART、SPI、PWM、watchdog等,在嵌入式系統(tǒng)中已有廣泛應(yīng)用,在ADμC702x系列使用中并無明顯差異,在此不再贅述。
2 ADμC702x系列的軟件設(shè)計
ADμC702x系列MicroConverter采用了ARM7TDMI內(nèi)核,支持ARM(32位)與Thumb(16位)指令集,包含長乘法指令,有5種中斷模式(未定義指令、軟件中斷、IRQ中斷、FIQ中斷和存儲器訪問終止),24個中斷源(包括看門狗中斷、定時器中斷、SPI中斷、PLA中斷、A/D中斷、外部中斷等)。其中5種中斷模式是ARM7TDMI內(nèi)核共有的。24個中斷源是根據(jù)ADμC702x系列特性可配置的,可分別配置為IRQ中斷或FIQ快速中斷模式。配置為FIQ模式時,將會有更快的響應(yīng)時間。對應(yīng)不同的工作模式,ADμC702x系列遵循ARM7TDMI內(nèi)核規(guī)范,使用不同模式下的寄存器。有關(guān)ARM7TDMI內(nèi)核特性可參考ARM體系結(jié)構(gòu)相關(guān)資料。
2.1 適用于ADμC702x系列的編譯器
ADμC702x系列為ARM7TDMI內(nèi)核,所以原則上可以編譯為ARM7TDMI指令集的編譯器都可以選擇。ARM7TDMI為RISC指令核,適用于使用C語言開發(fā)?,F(xiàn)在常用的ARM編譯環(huán)境有ARM Developer Suite(ADS)、RealView Developer Suite、IAR Embedded Work bench、KEILToolKit、GCC等。其中ADS與RealView是ARM公司開發(fā)的編譯環(huán)境,RealView為ADS的換代產(chǎn)品。這兩種編譯器都具有很高編譯效率與代碼密度。IAR是一家瑞典嵌入式系統(tǒng)開發(fā)工具和服務(wù)的供應(yīng)商,其不同MCU的編譯器(如MSP430)在國內(nèi)也有廣泛應(yīng)用。KEIL的C5l編譯器對805l核C語言具有很好的編譯效果,是國內(nèi)使用最廣的C5l編譯器,其ARM編譯器是該公司的新產(chǎn)品。而GCC是GNU組織設(shè)計的開源編譯器,針對不同MCU有不同的開發(fā)工具集,并且可以免費(fèi)使用,但它的編譯效率不高且缺少可視化開發(fā)環(huán)境。
2.2 基于KEIL的ADμC702x系列程序設(shè)計簡介
由于ADS在國內(nèi)使用較早,現(xiàn)已有很多參考書籍?,F(xiàn)簡要介紹ADμC702x開發(fā)套件中KEIL編譯器的開發(fā)流程。KEII.ARM集成開發(fā)環(huán)境為μVision3,具有友好的交互界面,編譯、連接可在集成環(huán)境中一次完成,并可進(jìn)行軟件仿真或通過開發(fā)套件中的UuNKJTAG調(diào)試器進(jìn)行下載、調(diào)試。在KEIL環(huán)境下,還可以配置編譯器為ADS、REALVIEW、GCC或KEIL公司的ARMC編譯器,所以KEIL環(huán)境極大地提高了開發(fā)的靈活性。以下簡述在KEIL環(huán)境下,基于GCC與KEIL編譯器的程序開發(fā)(GCC ARM編譯器可從KEIL官方網(wǎng)站免費(fèi)下載)。
在使用KEIL環(huán)境開發(fā)程序時,用戶需要提供匯編語言起始代碼startup.s、用戶程序和連接器配置文件。其中startup.s程序主要用于安裝中斷入口程序、初始化不同模式下堆棧指針和當(dāng)前MCU的初始化工作(包含PLL配置等),在初始化完成后,staltup.s還負(fù)責(zé)引導(dǎo)程序至C語言入口main()處。若使用GCC與KEIL編譯器,一些常用MCU(包括ADμC702x系列)的startup.s代碼已由KEIL提供,用戶可根據(jù)需要進(jìn)行少量修改。采用KEIL自帶的編譯器可在圖形化界面下完成大部分連接器的配置工作,無需編寫專門的文件。若使用GCC編譯器還需提供連接配置文件。針對常用的MCU,KEIL也提供了基本的連接代碼,可從相關(guān)目錄中拷貝,根據(jù)需要修改配置。連接文件主要用于各代碼和數(shù)據(jù)在存儲器中的定位與變量的初始化。
用戶程序可采用C語言編寫。針對ARM7TDMI內(nèi)核的特點,KEIL公司的ARMC編譯器CA與GCCARM編譯器arm-uclibc-gcc都對ANSI C進(jìn)行了擴(kuò)展,增加了關(guān)鍵字(如CA的中斷服務(wù)關(guān)鍵字_irq、絕對存儲地址關(guān)鍵字_at、GCC的_attribute_關(guān)鍵字等),以方便用戶使用C語言對嵌入式系統(tǒng)編程。在程序設(shè)計時,擴(kuò)展關(guān)鍵字可通過KEIL與GCC的用戶手冊進(jìn)行查找,也可參考KEIL官方網(wǎng)站上的例程。
2.3 ADμC702x系列程序的下載與調(diào)試
ADμC702x系列上的JTAG接口可通過開發(fā)工具中的ULINK連接至PC的USB口,在KEIL環(huán)境下進(jìn)行非侵入式(non intrusive)的調(diào)試和對Flash進(jìn)行編程。與其他MicroConveiter系列芯片相同,ADμC702x系列也可通過串口進(jìn)行程序的寫入與升級,即SERIAL DOWN-LOADER方式。該方式提供了廉價的系統(tǒng)升級方案,通過在系統(tǒng)復(fù)位或上電時,把P0.O口置低,使系統(tǒng)進(jìn)入SE-RIAL DOWNLOADER模式,通過UART口下載程序至片上F1atsh。