基于ARM9電能質(zhì)量監(jiān)測(cè)儀的數(shù)據(jù)采集
2 接口驅(qū)動(dòng)
設(shè)備驅(qū)動(dòng)程序的任務(wù)包括自動(dòng)配置和初始化子程序,負(fù)責(zé)檢測(cè)所要驅(qū)動(dòng)的硬件設(shè)備是否能正常工作。如果該設(shè)備正常,則對(duì)這個(gè)設(shè)備及其相關(guān)的設(shè)備驅(qū)動(dòng)程序需要的軟件狀態(tài)進(jìn)行初始化。
Linux下的設(shè)備驅(qū)動(dòng)程序被組織為一組完全不同任務(wù)的函數(shù)的集合。編寫A/D驅(qū)動(dòng),主要完成對(duì)A/D器件控制寄存器和數(shù)據(jù)寄存器的open0,closeO,read0,writeO等的操作,并在file_operations中注冊(cè)。
static struct file_operations adcmax1324_fops={
open:ademaxl324_open,
ioctl:adcmaxl324_ioctl,
read:adcmaxl324_read,
write:ademaxl324_write,
release:adcmaxl324_release,
}
下面介紹其中幾個(gè)重要的函數(shù):
(1)adcmaxl324_write函數(shù):調(diào)用該函數(shù),通過(guò)雙向數(shù)據(jù)線DATAO~DATA7向MAX1324寫人數(shù)據(jù)OxOOFF,把MAX1324設(shè)置成8通道同時(shí)轉(zhuǎn)換的模式;(2)ademax1324_ioctl函數(shù):Ioctl函數(shù)跟蹤信號(hào),啟動(dòng)A/D轉(zhuǎn)換;(3)adcmax1324_read函數(shù):read函數(shù)把中斷處理函數(shù)中讀到的數(shù)據(jù)發(fā)到用戶程序。
最后在init()中完成初始化工作。包括注冊(cè)設(shè)備驅(qū)動(dòng)程序和申請(qǐng)系統(tǒng)資源。在編寫驅(qū)動(dòng)程序時(shí)通常編寫成模塊的形式,在模塊加載時(shí)調(diào)用初始化函數(shù)module_init(),在卸載時(shí)調(diào)用卸載模塊函數(shù)module_exit()。
3 結(jié)束語(yǔ)
文中實(shí)現(xiàn)了基于ARM9的電能質(zhì)量監(jiān)測(cè)儀數(shù)據(jù)采集的設(shè)計(jì)。介紹了硬件電路及其相關(guān)軟件,經(jīng)實(shí)驗(yàn)測(cè)試,基于MAX1324ECM的上述數(shù)據(jù)采集電路,實(shí)測(cè)準(zhǔn)確度可以達(dá)到±0.5%,實(shí)驗(yàn)結(jié)果如表1所示,因此MAX1324ECM完全適用于電能質(zhì)量監(jiān)測(cè)中的數(shù)據(jù)采集。
評(píng)論