嵌入式數(shù)字存儲(chǔ)示波器
關(guān)鍵詞:嵌入式系統(tǒng);uCLinux;數(shù)字存儲(chǔ)示波器;FIFO;多任 務(wù)
Changsha 410083, China)
Samsung S3C44BOX是三星公司專為手持設(shè)備和一般應(yīng)用提供的高性價(jià)比和高性能的微處理器 ,它使用ARM7TDMI核,工作在66MHz。為了降低系統(tǒng)總成本和減少外圍器件,這款芯片中還 集成了下列部件:8KB Cache、外部存儲(chǔ)器控制器、LCD控制器、4個(gè)DMA通道、2通道UART、1 個(gè)多主IIC總線控制器、1個(gè)IIS(Inter?IC Sound)總線控制器,5通道PWM定時(shí)器及1個(gè)內(nèi)部 定時(shí)器、71個(gè)通用I/O口、8個(gè)外部中斷源、實(shí)時(shí)時(shí)鐘、8通道12位ADC等。
1.2A/D轉(zhuǎn)換采集系統(tǒng)
由于數(shù)字存儲(chǔ)示波器工作在40MHz,而S3C44BOX處理器內(nèi)帶ADC的工作頻率最高只能達(dá)到50kH z,所以必須單獨(dú)設(shè)計(jì)一個(gè)A/D轉(zhuǎn)換采集系統(tǒng),其組成如圖2所示。
1.2A/D轉(zhuǎn)換采集系統(tǒng)
由于數(shù)字存儲(chǔ)示波器工作在40MHz,而S3C44BOX處理器內(nèi)帶ADC的工作頻率最高只能達(dá)到50kH z,所以必須單獨(dú)設(shè)計(jì)一個(gè)A/D轉(zhuǎn)換采集系統(tǒng),其組成如圖2所示。
根據(jù)數(shù)字存儲(chǔ)示波器的隨機(jī)采樣原理得知:示波器每次觸發(fā)以后,A/D轉(zhuǎn)換器完成一組采樣 序列,并將其存入高速RAM中;稍后,由微處理器進(jìn)行處理,顯示在液晶屏幕上,這就是一 次數(shù)據(jù)獲得過程。系統(tǒng)接口具體方案如圖3所示。使用微處理器S3C44BOX的I/O端口來讀取數(shù) 據(jù)并發(fā)出控制信號。其中“FIFO RAM”為先進(jìn)先出存儲(chǔ)器,采用IDT公司的IDT72V02型號, 最高轉(zhuǎn)換速率為15ns,1024×9bit存儲(chǔ)空間。
系統(tǒng)利用S3C44BOX微處理器I/O端口中的F端口實(shí)現(xiàn)數(shù)據(jù)的輸入輸出,利用D端口和G端口來進(jìn) 行控制。采集的信號經(jīng)過A/D變換后首先進(jìn)入FIFO存儲(chǔ)器,當(dāng)從FIFO中每讀出一個(gè)數(shù)據(jù)后需 要再向其發(fā)送一個(gè)讀數(shù)脈沖信號,這樣才能保證讀出下一個(gè)單元內(nèi)存儲(chǔ)的數(shù)據(jù),讀數(shù)脈沖由 G端口的第四位PG4給出。數(shù)據(jù)從FIFO存儲(chǔ)器中被讀出后經(jīng)過數(shù)字鎖存器進(jìn)入端口F的數(shù)據(jù)寄 存器PFDATA中,數(shù)字鎖存信號由D端口的第四位PD4給出。當(dāng)處理器讀周期到來時(shí),數(shù)據(jù)由端 口被讀入內(nèi)存。每當(dāng)數(shù)據(jù)采滿1K時(shí),F(xiàn)IFO存儲(chǔ)器會(huì)產(chǎn)生一個(gè)中斷信號,該中斷信號由D端口 的PD6輸入給微處理器。
系統(tǒng)利用S3C44BOX微處理器I/O端口中的F端口實(shí)現(xiàn)數(shù)據(jù)的輸入輸出,利用D端口和G端口來進(jìn) 行控制。采集的信號經(jīng)過A/D變換后首先進(jìn)入FIFO存儲(chǔ)器,當(dāng)從FIFO中每讀出一個(gè)數(shù)據(jù)后需 要再向其發(fā)送一個(gè)讀數(shù)脈沖信號,這樣才能保證讀出下一個(gè)單元內(nèi)存儲(chǔ)的數(shù)據(jù),讀數(shù)脈沖由 G端口的第四位PG4給出。數(shù)據(jù)從FIFO存儲(chǔ)器中被讀出后經(jīng)過數(shù)字鎖存器進(jìn)入端口F的數(shù)據(jù)寄 存器PFDATA中,數(shù)字鎖存信號由D端口的第四位PD4給出。當(dāng)處理器讀周期到來時(shí),數(shù)據(jù)由端 口被讀入內(nèi)存。每當(dāng)數(shù)據(jù)采滿1K時(shí),F(xiàn)IFO存儲(chǔ)器會(huì)產(chǎn)生一個(gè)中斷信號,該中斷信號由D端口 的PD6輸入給微處理器。
2.1數(shù)據(jù)采集和存儲(chǔ)模塊
數(shù)據(jù)采集存儲(chǔ)模塊的流程如圖4所示。
數(shù)據(jù)采集存儲(chǔ)模塊的流程如圖4所示。
2.2波形顯示和刷新模塊
系統(tǒng)使用一塊大小為240×320像素的256彩色液晶顯示屏,其平面尺寸為93mm×75mm(長 ×寬)。微處理器S3C44BOX為LCD的控制提供了良好的支持,其實(shí)現(xiàn)主要通過微處理器中的LC D控制器來完成。波形的顯示主要通過將數(shù)字量轉(zhuǎn)換成液晶顯示屏上點(diǎn)的坐標(biāo)來實(shí)現(xiàn),存放 在內(nèi)存中的數(shù)據(jù)經(jīng)過坐標(biāo)變換就可以在LCD上進(jìn)行顯示。因?yàn)長CD的坐標(biāo)系與顯示波形 時(shí)所用的坐標(biāo)系y軸方向相反,且需要將波形顯示在屏幕的特定區(qū)域內(nèi),所以在顯示之前要 對數(shù)據(jù)進(jìn)行歸一化處理。從端口讀入數(shù)據(jù)的范圍為0~0xff,0點(diǎn)對應(yīng)于LCD上y軸坐標(biāo)的190 ,0xff對應(yīng)于LCD上y軸坐標(biāo)的50,則0x7f對應(yīng)于LCD上坐標(biāo)為120的點(diǎn),即屏幕顯示的零點(diǎn), 相應(yīng)的轉(zhuǎn)化公式為:Y=120-(data-0x7f)×0x7f,其中:data為從端口讀 入的數(shù)據(jù);Y是data在LCD上顯示的y坐標(biāo)。LCD一屏可以顯示300個(gè)數(shù)據(jù)點(diǎn) ,點(diǎn)與點(diǎn)之間用矢量法直線相連。
2.3觸摸屏控制模塊
觸摸屏是附著在LCD表面的一層透明薄膜,它將壓力轉(zhuǎn)換成模擬電信號,再經(jīng)過模 數(shù)轉(zhuǎn)換送給系統(tǒng)。本系統(tǒng)觸摸屏使用FM7843芯片控制。FM7843是4線電阻觸摸屏轉(zhuǎn)換接口芯 片。它是一款具有同步串行接口的12位取樣模數(shù)轉(zhuǎn)換器。在125kHz吞吐速率和2.7V電 壓下的功耗為750μW,而在關(guān)閉模式下的功耗僅為0.5μW。圖5為觸摸屏工作流程示 意圖。觸摸屏通過中斷方式完成其功能,從執(zhí)行流程上來說,首先在Touch Panel?init() 中完成兩件事:注冊驅(qū)動(dòng)程序和注冊中斷。對于觸摸屏設(shè)備,主設(shè)備號為58,設(shè)備名為“FM 7843”,驅(qū)動(dòng)程序子函數(shù)集為Touch Panel?fops。Touch Panel?fops中指定了read,sele ct,open,telease四個(gè)操作子函數(shù)的地址,依次為:Read Touch Panel,Touch Panel Sel ect,Open Touch Panel和Close Touch?Panel。當(dāng)用戶進(jìn)程調(diào)用open()打開/dev/FM7843時(shí) ,內(nèi)核調(diào)用Open Touch Panel();用戶進(jìn)程調(diào)用read()讀該設(shè)備時(shí),內(nèi)核調(diào)用Read Touch P anel()。request?irq()注冊中斷處理,中斷為TOUCHPANEL?IRQ?NUM,中斷處理程序?yàn)門o uch Panel Interrupt(),說明為“Touch?Panel”。當(dāng)觸摸屏被觸摸有數(shù)據(jù)來到時(shí),中斷 被觸發(fā),調(diào)用中斷處理程序,準(zhǔn)備處理數(shù)據(jù)。
該系統(tǒng)中觸摸屏主要用于獲取用戶的控制信息, 在LCD的上方顯示有若干個(gè)觸摸屏按鈕,例 如其中有幅值增加、幅值減小、頻率增加和頻率減小等。幅值和頻率的選定值存放在指定內(nèi) 存單元中,當(dāng)檢測到觸摸點(diǎn)的坐標(biāo)在相應(yīng)區(qū)域中后,系統(tǒng)就會(huì)根據(jù)程序預(yù)先設(shè)定來設(shè)定采樣 頻率和幅值,這些在前、后臺(tái)任務(wù)之間進(jìn)行同步和通信。任務(wù)之間的通信是通過共享指定的 物理內(nèi)存單元來實(shí)現(xiàn)的,不同任務(wù)之間對共享內(nèi)存單元的訪問是互斥的。uCLinux的設(shè)計(jì)針 對沒有MMU(內(nèi)存管理單元模塊)的處理器,不能使用虛擬內(nèi)存管理技術(shù)。uCLinux系統(tǒng)對于內(nèi) 存的訪問是直接的,所有程序中訪問的地址都是實(shí)際的物理地址,操作系統(tǒng)對內(nèi)存空間沒有 保護(hù)。當(dāng)觸摸屏檢測到有改變幅值或頻率的信號發(fā)生時(shí),就去修改指定單元中存儲(chǔ)的數(shù)據(jù), 這樣的內(nèi)存單元對于兩個(gè)任務(wù)來說屬于臨界資源,在觸摸屏修改內(nèi)存期間需要禁止其他程序 對該內(nèi)存進(jìn)行任何操作。同樣,采集程序每次在發(fā)送幅值和頻率信號之前要對該內(nèi)存單元進(jìn) 行讀操作,若在此時(shí)有觸摸屏信號對內(nèi)存提出寫操作要求,程序就應(yīng)該進(jìn)行等待,直到采集 部分的讀操作執(zhí)行完畢,釋放內(nèi)存的訪問權(quán)。
系統(tǒng)使用一塊大小為240×320像素的256彩色液晶顯示屏,其平面尺寸為93mm×75mm(長 ×寬)。微處理器S3C44BOX為LCD的控制提供了良好的支持,其實(shí)現(xiàn)主要通過微處理器中的LC D控制器來完成。波形的顯示主要通過將數(shù)字量轉(zhuǎn)換成液晶顯示屏上點(diǎn)的坐標(biāo)來實(shí)現(xiàn),存放 在內(nèi)存中的數(shù)據(jù)經(jīng)過坐標(biāo)變換就可以在LCD上進(jìn)行顯示。因?yàn)長CD的坐標(biāo)系與顯示波形 時(shí)所用的坐標(biāo)系y軸方向相反,且需要將波形顯示在屏幕的特定區(qū)域內(nèi),所以在顯示之前要 對數(shù)據(jù)進(jìn)行歸一化處理。從端口讀入數(shù)據(jù)的范圍為0~0xff,0點(diǎn)對應(yīng)于LCD上y軸坐標(biāo)的190 ,0xff對應(yīng)于LCD上y軸坐標(biāo)的50,則0x7f對應(yīng)于LCD上坐標(biāo)為120的點(diǎn),即屏幕顯示的零點(diǎn), 相應(yīng)的轉(zhuǎn)化公式為:Y=120-(data-0x7f)×0x7f,其中:data為從端口讀 入的數(shù)據(jù);Y是data在LCD上顯示的y坐標(biāo)。LCD一屏可以顯示300個(gè)數(shù)據(jù)點(diǎn) ,點(diǎn)與點(diǎn)之間用矢量法直線相連。
2.3觸摸屏控制模塊
觸摸屏是附著在LCD表面的一層透明薄膜,它將壓力轉(zhuǎn)換成模擬電信號,再經(jīng)過模 數(shù)轉(zhuǎn)換送給系統(tǒng)。本系統(tǒng)觸摸屏使用FM7843芯片控制。FM7843是4線電阻觸摸屏轉(zhuǎn)換接口芯 片。它是一款具有同步串行接口的12位取樣模數(shù)轉(zhuǎn)換器。在125kHz吞吐速率和2.7V電 壓下的功耗為750μW,而在關(guān)閉模式下的功耗僅為0.5μW。圖5為觸摸屏工作流程示 意圖。觸摸屏通過中斷方式完成其功能,從執(zhí)行流程上來說,首先在Touch Panel?init() 中完成兩件事:注冊驅(qū)動(dòng)程序和注冊中斷。對于觸摸屏設(shè)備,主設(shè)備號為58,設(shè)備名為“FM 7843”,驅(qū)動(dòng)程序子函數(shù)集為Touch Panel?fops。Touch Panel?fops中指定了read,sele ct,open,telease四個(gè)操作子函數(shù)的地址,依次為:Read Touch Panel,Touch Panel Sel ect,Open Touch Panel和Close Touch?Panel。當(dāng)用戶進(jìn)程調(diào)用open()打開/dev/FM7843時(shí) ,內(nèi)核調(diào)用Open Touch Panel();用戶進(jìn)程調(diào)用read()讀該設(shè)備時(shí),內(nèi)核調(diào)用Read Touch P anel()。request?irq()注冊中斷處理,中斷為TOUCHPANEL?IRQ?NUM,中斷處理程序?yàn)門o uch Panel Interrupt(),說明為“Touch?Panel”。當(dāng)觸摸屏被觸摸有數(shù)據(jù)來到時(shí),中斷 被觸發(fā),調(diào)用中斷處理程序,準(zhǔn)備處理數(shù)據(jù)。
該系統(tǒng)中觸摸屏主要用于獲取用戶的控制信息, 在LCD的上方顯示有若干個(gè)觸摸屏按鈕,例 如其中有幅值增加、幅值減小、頻率增加和頻率減小等。幅值和頻率的選定值存放在指定內(nèi) 存單元中,當(dāng)檢測到觸摸點(diǎn)的坐標(biāo)在相應(yīng)區(qū)域中后,系統(tǒng)就會(huì)根據(jù)程序預(yù)先設(shè)定來設(shè)定采樣 頻率和幅值,這些在前、后臺(tái)任務(wù)之間進(jìn)行同步和通信。任務(wù)之間的通信是通過共享指定的 物理內(nèi)存單元來實(shí)現(xiàn)的,不同任務(wù)之間對共享內(nèi)存單元的訪問是互斥的。uCLinux的設(shè)計(jì)針 對沒有MMU(內(nèi)存管理單元模塊)的處理器,不能使用虛擬內(nèi)存管理技術(shù)。uCLinux系統(tǒng)對于內(nèi) 存的訪問是直接的,所有程序中訪問的地址都是實(shí)際的物理地址,操作系統(tǒng)對內(nèi)存空間沒有 保護(hù)。當(dāng)觸摸屏檢測到有改變幅值或頻率的信號發(fā)生時(shí),就去修改指定單元中存儲(chǔ)的數(shù)據(jù), 這樣的內(nèi)存單元對于兩個(gè)任務(wù)來說屬于臨界資源,在觸摸屏修改內(nèi)存期間需要禁止其他程序 對該內(nèi)存進(jìn)行任何操作。同樣,采集程序每次在發(fā)送幅值和頻率信號之前要對該內(nèi)存單元進(jìn) 行讀操作,若在此時(shí)有觸摸屏信號對內(nèi)存提出寫操作要求,程序就應(yīng)該進(jìn)行等待,直到采集 部分的讀操作執(zhí)行完畢,釋放內(nèi)存的訪問權(quán)。
評論