基于ARM核的ADμC7024在醫療電子中的應用
0 引言
隨著信息技術的迅猛發展和人民生活水平的提高,極大地推動了醫療電子設備的發展,當今醫療電子設備的發展趨勢是高精度、實時性、低功耗和小尺寸,作為醫療電子設備中核心地位的mcu(微處理器)也隨著這一發展趨勢向前不斷衍變著。由早期的8位mcu發展到目前的32位risc(精簡指令集計算機)mcu。美國adi公司根據市場的需要最新推出了一款基于arm(高級精簡指令集計算機)核的微處理器adμc7024便是目前32位risc
mcu的杰出代表。adμc7024卓越的處理能力、集成眾多片上外圍器件和芯片低功耗的特點,完全勝任目前醫療電子設備的需求及未來的發展目標。
本文以adμc7024在醫療電子中監護產品脈搏血氧計的應用為例,重點介紹其在醫療電子行業中的實際用途。
1 arm內核特點
英國arm公司是嵌入式risc處理器的ip(知識產權)供應商,它為arm架構處理器提供arm處理器內核(如arm7tdmi、arm9tdmi及arm10tdmi等)。由各半導體公司在上述處理器內核基礎上進行再設計,嵌入各種外圍和處理部件,形成各種mcu。目前基于arm內核的芯片在嵌入式處理器市場上占據75%的份額。
arm作為嵌入式系統的處理器,具有低電壓,低功耗和高集成度等特點,并具有開放性和可擴充性。事實上,arm內核已成為嵌入式系統首選的處理器內核。而對于醫療電子設備而言,并不需要圖像處理等方面更高的要求,因此,arm7tdmi內核以0.9mips(百萬條指令每秒)/mhz的高效處理能力足以滿足應用需要。
arm7tdmi內核是arm核系列中32位通用內核中的一個產品,它采用三級流水線結構,指令的執行分成取指、譯值和執行3個階段。運算器能夠實現32位整數運算。內核不但能夠執行32位高效arm指令,同時還支持簡潔的16位thumb指令集以提高代碼密度。
arm7tdmi名稱的含義為:
a)arm7:arm系列具有32位運算能力的內核,它采用馮·諾依曼結構,數據長度可以是8位,16位和32位,而指令長度是32位。
b)t:內含16位壓縮指令集thumb,由于32位risc型處理器的指令代碼利用率較低,arm為了彌補不足,在新型arm架構(v4t版以上,成熟架構由v3版發展到v6版)定義了16位的thumb指令集,thumb指令集比通常的8位和16位cisc/risc處理器具有更好的代碼密度,而芯片面積只增加6%,可使程序存儲器更小。
c)d:支持片內調試,該內核包含用于調試的硬件結構,可使cpu進入調試模塊,可以方便地進行斷點觀察點設置、單步調試和多步調試
d)m:采用增強型乘法器。aarm7tdmi指令集包含2個32位×32位的乘法指令和2個乘法累加mac指令,該結構使得指令的執行比其他類型的arm7內核減小了許多機器周期。
e)i:內含嵌入式ice宏單元,arm架構的處理器芯片都嵌入了embedded ice-rt邏輯塊,便于通過jtag接口來仿真調試ram架構芯片。
2 芯片內部結構及特點
美國adi公司利用其在模擬電路領域的優勢,綜合基于8052-8位adμc8xx的技術積累,將arm7tdmi內核和adc(a/d轉換器),dac(d/a轉換器)等外圍設備集成在一塊芯片上,就是最近推向市場的拳頭產品adμc702x系列。其中adμc7020、adμc7021、adμc7022、adμc7026等芯片除了在片上flash和sram容量大小、adc和dac通道數量、pwm(脈寬調制)相位數量有差別外,其他完全一致;而adμc7026,adμc7027具有外部擴展內存接口。
本文主要介紹其中具有代表性的一款--adμc7024,工業級的adμc7024工作于2.7v-3.6v電源電壓,64引腳csp封裝的芯片面積僅為9mm×9mm,在1mhz時鐘頻率下芯片最高功耗為5ma,在最大時鐘頻率45mhz下芯片最高功耗為60ma。其原理框圖如圖1所示。

2.1 片上集成高性能的adc和dac
adμc7024片上集成了10通道12位逐次逼近型adc,能夠在電源電壓為2.7v-3.6v的范圍正常工作,在系統時鐘頻率為45mhz下的最高采樣率高達1msps(百萬次采樣每秒)。該adc模塊提供一個高精度、低漂移的片上2.5v基準電壓vref,該電壓通過片上refcon寄存器的軟件配置也能作為輸出,向外提供基準參考源。adc能夠工作于單端轉換模式或者差分轉換模式,在單端轉換模式下的輸入電壓范圍是0至vref,在差分轉換模式下輸入電壓范圍是0至avdd(avdd通常情況下為3.3v)adc單個或連續的轉換能夠被外部引腳convstar、片上pla、定時器1或定時器2所觸發。
通過adc控制寄存器adccon,通道選擇寄存器adccp和adccn軟件配置好adc后,轉換結果將存儲在寄存器adcdat位27至位16中,通過adc狀態寄存器adcsta的位0可以查看adc轉換是否完成,當adc轉換結束時,位0被置位;當讀取adc-dat時,該位自動被清空。當adc正在執行轉換操作時,片上引腳adcbusy保持高電平,一旦轉換結束,該引腳馬上變為低電平。
還可以通過adcrst寄存器將adc模塊中所有寄存器恢復至默認值;通過調整adcof和adcgn寄存器的值可以調整adc轉換精度,不過,該寄存器出廠時已經過校準。
由于該adc的是逐次逼近型結構,因此比較適合低功耗的產品應用。
adμc7024片上還集成有2通道12位dac。每個dac都具有軌至軌的輸出電壓范圍,驅動能力可達100pf或者5kω,每個dac也能通過軟件配置來選擇輸出范圍0至vref(內部基準電壓)、0至dacref(外部基準電壓)和0至avdd,而dacref的取值范圍是0v至avdd。
dac的使用十分簡單,通過dac控制寄存器dac0con或者dac1con來選擇通道和配置dac通道特性,然后通過向dac0con或dac1con的位27至位16寫入數值,就可以在dac引腳上得到所需要的模擬電壓結果。
2.2 片上集成flash寄存器和sram
adμc7024片上集成了64kb的flash存儲器,其中低62kb的flash存儲器是用戶可以編程的,剩下的高2kb區域是用戶不可接觸的固件程序,里面包含了在線串行下載程序及出廠配置默認方案。adμc7024片上flash存儲器能夠通過串行編程模式,jtag編程模式或并行編程模式在系統中編程。
1)串行編程模式
當片上bm引腳芯片被拉低時,adμc7024重啟動將進入串行下載模式,通過標準的uart端口或iic端口在線下載程序。
2)并行編程模式
并行編程協議使得片上flash存儲器能夠通過工業級第三方編程器進行編程。
3)jtag編程模式
adμc7024片上flash存儲器完全遵守ieee 1149.1規范,因而可以通過標準的jtag接口來下載程序和進行調試代碼,使得系統的開發十分簡單易行。
而adμc7024片上flash存儲器通過feepro、feehide寄存器的軟件設置可以防止程序通過jtag接口或并行編程模式被讀出,有效地保障了開發人員的勞動成果。
2.3 晶振和pll
adμc7024片上集成了一個32.768khz晶振、一個時鐘分頻器和一個pll(鎖相環)。內部的pll能夠將晶振頻率放大1376倍,即為系統提供一個穩定的45mhz。
為了降低系統功耗,可以通過軟件設置時鐘分頻器的控制寄存器pllcon和powcon將經過pll后輸出的45mhz降頻,最大可降低至352khz,由于內部晶振有±3%的誤差,因此,用戶可以選擇外接一個32.768khz的晶振,通過軟件設置pllcon值使用外部晶振,使系統的性能穩定可靠。
2.4 復用i/o及標準的uart、spi、iic
adμc7024提供30個通用型雙向i/o引腳。所有的i/o引腳具有5v電壓耐壓能力,一些i/o引腳中與其他外圍設備引腳復用。在默認情況下,所有的gpio都是i/o模式,如果在實際中需要將i/o口復用成其他情況的,只需要按照i/o控制配置寄存器gpxcon的手冊配置方案軟件編程即可(這里x表示端口0,端口1,…,端口4,如1端口5引腳則是p1.5)。在配置成i/o情況下,可以通過置位數據寄存器gpxdat中某些位的值使引腳輸出"1";同時可以清除數據寄存器gpxdat中的某些位的值使引腳輸出"0";還可以讀數據寄存器gpxdat中某些位的值得到輸入引腳的值(x同前面介紹,具體設置請參考adμc7024手冊)。
adμc7024片上集成了2個標準的、全雙工模式的異步串口uart(通用異步收發器),它們與16450串口標準所兼容。片上uart的波特率產生器中包含一個小數分頻器,使得uart波特率的產生更加精確。同時,其中一個uart還支持網絡尋址模式下的串口發送接收模式。uart的使用首先通過i/o的配置成uart端口引腳。然后通過軟件配置uart配置寄存器及波特率設定寄存器就可以通過comtx寄存器、comrx寄存器分別發送和接收數據。
adμc7024片上也集成了標準工業級同步串口spi(串行外圍接口),spi接口可以同步接收和發送8位數據,最高速率可達5.6mbit/s。該spi能夠被配置成主(master)或者從(slave)兩種工作模式,關于spi使能、選擇工作模式、串行時鐘相位及極性、先發送低有效位還是高有效位等多項設置,均是通過spicon編程而得到,而主模式發送的串行時鐘頻率由spidiv來設定,從模式則不用設定串行時鐘頻率,因為串行時鐘是由主模式的spi來決定的,通過讀取spista中某些數據位的值,可以知道spi是否發送結束或者接收結束。
adμc7024還具有兩個經philips公司授權的iic接口,iic是philips公司20世紀80年代開發的一個簡單的兩線總線,包括一條數據線和一條時鐘線,速率有100khz和400khz兩種方式,目前iic已經成為重要的全球業界標準,被所有主要的集成電路廠商所認同和使用。它采用主-從通信方式,采用總線仲裁特性,使得在某一時刻只有兩個器件進行通信,具體數據指標參考adμc7024數據手冊。
2.5 中斷系統
中斷系統是一個mcu在應用中的靈魂所在。adμc7024片上中斷控制器控制著24個中斷源。這些中斷源包括片上adc中斷、uart中斷、2個外部中斷請求xirq0和xirq1等,而arm7tdmi內核僅僅將這些中斷源分成兩大類來識別,一類是irq,另一類是fiq。所有中斷源能夠單獨地被屏蔽。中斷系統的控制和配置管理由9個關于中斷方面的寄存器所控制,4個涉及到irq的寄存器、4個涉及到fiq的寄存器,1個用來選擇已編程的中斷源寄存器swicfg。雖然作為一個已編程的中斷源是不能夠被屏蔽掉的,但是它們可以被swicfg來控制。
2.6 定時器
adμc7024有4個通用定時器:定時器0、定時器1、定時器2和定時器3。這4個定時器在一般的操作模式下均能按照默認值計數或者按照預設值寄存器txld(x表示0,1,2,和3中的某一個寄存器)中值來計算。在任意時刻可以通過讀取txval寄存器中的值了解定時器中的當前計數值。通過配置txcon的值可以設置相應的定時器按照一定的方式開始計數。
定時器0是一個通用型16位倒計數定時器,該定時器的刻度尺頻率來源是系統時鐘,計數默認值可以是系統時鐘頻率、系統時鐘頻率的16分頻和256分頻。
定時器1是一個32位通用型累加定時器或者倒計時定時器。該定時器的刻度尺頻率來源可以是32khz晶振、系統時鐘和外部gpio三者之一。計數默認值可以是刻度尺頻率、刻度尺頻率的16分頻、256分頻和32768分頻。定時器1可以被設置為標準的32位時間值,如hours:minutes:seconds:hundreths這樣的格式。定時器1通過預設響應irq事件,可以比通常情況下定時器0響應irq中斷請求要準確得多。它還可以用來觸發adc轉換過程。
定時器2的系統刻度尺頻率來源是內部集成的32.768khz晶振,當系統時鐘停止工作時,該定時器還可以繼續運行,這一特性可以用來將處于休眠狀態的系統內核恢復至正常工作狀態。
定時器3由兩種工作模式,一種通常模式與前面3個定時器一樣,還有一種是看門狗模式。一旦程序跑飛時,可以利用該定時器看門狗模式來重啟動處理器,令其恢復正常工作。
2.7 其他外圍設備及特性
片上還集成有獨立的比較器、電源監控模塊、三相pwm(在adμc7020、adμc7021、adμc7022是單相pwm)以及pla(可編程邏輯陣列)。其中pla的輸入輸出引腳與gpio復用。
3 引腳定義
adμc7024引腳定義見表1。

4 應用實例
該芯片卓越的數據處理能力、片上集成的高精度adc及dac等豐富的片上外圍設備以及時鐘頻率可調節的特點,使得在要求低功耗、高精度、實時性等嵌入式微信號處理系統中的應用如魚得水。現以脈搏血氧計為例,介紹其中一個廣泛的應用領域。其系統框圖如圖2所示。

adμc7024作為系統的核心mcu,負責控制和協調其他電路模塊的正常工作,它將采集到的血氧信號經過數據處理后,通過spi總線傳送給lcd顯示屏得以顯示。
根據實際臨床結果顯示,adμc7024已完全勝任設計血氧模塊的任務,處理能力、采樣率、采樣精度、功耗、實時性要求等指標完全達到系統的要求,arm體系架構使得醫療電子的穩定性得到極大保障。最后,采用第三方keil公司μvision開發工具,用c語言作為開發語言,利用gnu的arm-elf-gcc等工具作為編譯器及鏈接器,易學易用,它的調試仿真工具也是keil公司開發的ulink仿真器,調試簡單,縮短上市時間,便于移植。
可以預料,在不久的將來,adμc7024以其獨樹一幟的性能必將在醫療電子行業中發揮越來越大的作用。
評論