<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 電源與新能源 > 設(shè)計(jì)應(yīng)用 > 基于PowerPC的模擬量輸入接口擴(kuò)展

          基于PowerPC的模擬量輸入接口擴(kuò)展

          作者: 時(shí)間:2008-07-01 來源:網(wǎng)絡(luò) 收藏

          本文引用地址:http://www.ex-cimer.com/article/258663.htm
          3 硬件結(jié)構(gòu)

          MAX197是一種通用A/D芯片,可以和多種處理器接口,本系統(tǒng)通過MPC8349E的局部總線與MAX197連接。硬件結(jié)構(gòu)如圖3所示。圖3中使局部總線的LBD7~LBD0與MAX197的D0~D7相連。選擇MAX197為軟件設(shè)置低功耗工作方式,所以置SHDN管腳為高電平,本系統(tǒng)采用內(nèi)部基準(zhǔn)電壓,所以REF、REFADJ管腳均通過電容接地。用一路片選信號(hào)線做讀高、低位數(shù)據(jù)的選擇線, 直接與HBEN管腳相連,因而采用讀不同地址的方式分別讀取低8位和高4位數(shù)據(jù)。MAX197的INT管腳與系統(tǒng)的INT相連,作為轉(zhuǎn)換識(shí)別信號(hào),當(dāng)數(shù)據(jù)轉(zhuǎn)換完畢時(shí),MAX197的INT腳產(chǎn)生中斷信號(hào),從而使處理器進(jìn)入中斷處理程序進(jìn)行一路轉(zhuǎn)換數(shù)據(jù)的讀入操作。

          4 驅(qū)動(dòng)軟件設(shè)計(jì)

          設(shè)備是應(yīng)用程序和機(jī)器硬件之間的接口。設(shè)備為應(yīng)用程序屏蔽了硬件的細(xì)節(jié),在應(yīng)用程序看來,硬件設(shè)備只是一個(gè)設(shè)備文件,應(yīng)用程序可以象操作普通文件一樣對(duì)硬件設(shè)備進(jìn)行操作。

          本系統(tǒng)采用Linux操作系統(tǒng),需要編制Linux下的設(shè)備。A/D轉(zhuǎn)換設(shè)備用作為字符設(shè)備,而字符設(shè)備驅(qū)動(dòng)程序具有比較固定的結(jié)構(gòu),即將設(shè)備抽象成文件來進(jìn)行操作,因此要在驅(qū)動(dòng)程序?qū)崿F(xiàn)Open、Close、Write、Read和Ioctl等操作,其中Ioctl對(duì)于執(zhí)行各種類型的硬件控制應(yīng)用比較方便,其在內(nèi)核中的原型為

          int(*ioctl)(struct inode *inode,
          struct file *filp,
          unsigned int cmd,
          unsigned long arg);

          A/D轉(zhuǎn)換的驅(qū)動(dòng)程序主要是實(shí)現(xiàn)了這個(gè)函數(shù)。其中cmd用來傳遞通道序號(hào),arg傳遞指向用戶空間的一個(gè)指針,用來返回A/D轉(zhuǎn)換結(jié)果。

          當(dāng)寫入控制字開始轉(zhuǎn)換后,處理器進(jìn)入其它工作狀態(tài),直到轉(zhuǎn)換完成產(chǎn)生中斷,處理器在ioctl中讀取A/D轉(zhuǎn)換結(jié)果,并調(diào)用put_user(datum,ptr)宏函數(shù)將該結(jié)果傳遞到用戶空間。Ioctl函數(shù)的流程圖如圖4所示

          用戶程序?qū)崿F(xiàn)數(shù)據(jù)采集需要先打開設(shè)備文件,分配數(shù)據(jù)空間,決定A/D轉(zhuǎn)換通道序號(hào),然后調(diào)用ioctl實(shí)現(xiàn)A/D轉(zhuǎn)換并得到結(jié)果。
          當(dāng)對(duì)MAX197 的控制字開始寫操作時(shí),轉(zhuǎn)換就開始了。寫操作將選擇多路通道,并確定MAX197的輸入范圍是單極性還是雙極性。一個(gè)寫脈沖( )可以開始一次采集,或者對(duì)采樣進(jìn)行初始化并開始轉(zhuǎn)換。對(duì)任何時(shí)鐘模式和采集模式,轉(zhuǎn)換間隔都延時(shí)12個(gè)時(shí)鐘周期。若在轉(zhuǎn)換周期寫一個(gè)新的控制字節(jié)將使轉(zhuǎn)換失效, 并啟動(dòng)方式可以更精確地控制采樣間隔和轉(zhuǎn)換。在這種方式下,用戶通過2個(gè)寫脈沖控制采集和啟動(dòng)轉(zhuǎn)換。在第一寫脈沖中,要使ACQMOD 位=1,它將啟動(dòng)一次采集開始。在第二個(gè)寫脈沖中,要使ACQMOD 位=0,在 的上升沿開始轉(zhuǎn)換并結(jié)束采集。在發(fā)第一和第二個(gè)寫脈沖時(shí), 多路輸入通道的地址位值必須一樣。在第二個(gè)寫脈沖中, 低功耗模式位( PD0、PD1)可以設(shè)一個(gè)新值。當(dāng)轉(zhuǎn)換結(jié)束產(chǎn)生一個(gè)正確的結(jié)果時(shí),芯片發(fā)出一個(gè)標(biāo)準(zhǔn)的中斷信號(hào)INT給處理器。在第一個(gè)讀周期或者寫一個(gè)新控制字節(jié)時(shí),INT就變?yōu)楦唠娖健?



          評(píng)論


          相關(guān)推薦

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

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();