新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > C8051F020高速ADC采樣的代碼優(yōu)化

C8051F020高速ADC采樣的代碼優(yōu)化

作者:黃玉金,董浩斌 時間:2012-01-18 來源:電子產(chǎn)品世界 收藏

  在應(yīng)用的片內(nèi)高速進(jìn)行時間序列采樣時,編寫代碼使工作于最高速度是一個難題。本文從的C語言中斷模式的驅(qū)動代碼設(shè)計(jì)開始,分析對應(yīng)的匯編語言中消耗CPU的主要步驟,研究ADC采樣的優(yōu)化方式。經(jīng)過驗(yàn)證,通過使用額外定時器可以優(yōu)化ADC采樣結(jié)束時機(jī)的控制;而在時間關(guān)鍵場所,因?yàn)闇p少了現(xiàn)場保護(hù)和恢復(fù)的操作代碼,查詢方式比中斷模式具有更高的時間效率。

本文引用地址:http://2s4d.com/article/128269.htm

  引言

  在設(shè)計(jì)需要進(jìn)行時間序列采樣的數(shù)據(jù)采集儀表中,需要用ADC對電壓信號進(jìn)行等間隔高速采樣并緩存,帶有高速ADC的[1]是一種很好的選擇。是一款由Silicon Laboratories公司生產(chǎn)的高性能8位混合信號兼容MCS-51,內(nèi)部集成4096字節(jié)的XRAM,以及2個帶有PGA的高速ADC,其中8位模數(shù)轉(zhuǎn)換器ADC1采樣率高達(dá)500kSPS(Sample per second)。在進(jìn)行時間序列分析的應(yīng)用中需要編程ADC1進(jìn)行數(shù)據(jù)采集并將數(shù)據(jù)緩存到XRAM中。C8051F020的機(jī)器周期和時鐘周期相等(傳統(tǒng)的機(jī)器周期等于其時鐘周期的12倍),當(dāng)使用24MHz的晶振時,速度最高可達(dá)到24MIPS(Million Instructions Per Second),傳統(tǒng)單片機(jī)僅2MIPS。雖然這個速度看起來已經(jīng)很快,但是如果需要使得ADC1工作于最高頻率,代碼的編寫則需要相當(dāng)?shù)募记?。針對時間關(guān)鍵部分的編程,除了需要考慮常規(guī)的代碼優(yōu)化方案[2],如循環(huán)展開、宏替換函數(shù)等之外,本文將從基本的采樣設(shè)計(jì)程序結(jié)構(gòu)設(shè)計(jì)入手,研究如何在Keil集成開發(fā)環(huán)境下編寫合適的C語言代碼驅(qū)動F020的ADC1,使其工作于最高采樣率。

  ADC1高速采樣的初步時間估算

  時間序列的獲取需要進(jìn)行等時間間隔采樣,也就是要編寫代碼驅(qū)動ADC1進(jìn)行高速等間隔采樣并將數(shù)據(jù)存儲到有限數(shù)量的XRAM。C8051F020中沒有DMA模塊,控制ADC1采樣以及將采樣結(jié)果傳送到XRAM均需要CPU的直接操作。設(shè)定單片機(jī)系統(tǒng)時鐘24MHz,則其機(jī)器周期為T=1/24MHz≈41.67ns。ADC1的時鐘根據(jù)器件手冊最高可配置為6MHz[1],可由系統(tǒng)時鐘4分頻得到;當(dāng)ADC1工作于500kHz時,采樣周期為2μs=2000ns,在該段時間如果運(yùn)行單周期的指令,可以運(yùn)行2000ns/41.67ns=48條指令,簡記為48T。已采樣點(diǎn)數(shù)計(jì)算和判斷、跳轉(zhuǎn)以及外部存儲器的訪問等操作均需要執(zhí)行時間≥2T的指令,初步分析在此期間最多可以運(yùn)行24條匯編指令。

  為了實(shí)現(xiàn)等時間間隔采樣,根據(jù)對F020數(shù)據(jù)手冊的閱讀,應(yīng)該采用定時器2或3周期觸發(fā)ADC1,并在ADC1采樣結(jié)束立即將采樣結(jié)果傳送到XRAM。該類程序的設(shè)計(jì)一般有兩種模式:查詢方式和中斷方式。通常而言,中斷有利于節(jié)約CPU時間,本設(shè)計(jì)即從中斷模式設(shè)計(jì)開始分析。



關(guān)鍵詞: 單片機(jī) ADC C8051F020 201201

評論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉