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

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 基于ARM-Linux的MAX1303接口與驅(qū)動(dòng)程序設(shè)計(jì)

          基于ARM-Linux的MAX1303接口與驅(qū)動(dòng)程序設(shè)計(jì)

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

          結(jié)構(gòu)struct file_operations中的open字段對(duì)應(yīng)著系統(tǒng)調(diào)用中的open函數(shù)。在應(yīng)用程序中,通過open函數(shù)打開對(duì)應(yīng)的設(shè)備文件時(shí),內(nèi)核會(huì)跳轉(zhuǎn)到此函數(shù)指針處。此函數(shù)指針的實(shí)現(xiàn),主要完成初始化工作。這包括的初始化配置和LPC3250驅(qū)動(dòng)相關(guān)的寄存器設(shè)置。的初始化包括工作模式選擇、量程范圍選擇、單端/差分輸入選擇、初始化通道選擇。對(duì)于這四項(xiàng),本系統(tǒng)全部使用默認(rèn)設(shè)置:外部時(shí)鐘模式;-Vref到+Vref的測(cè)量范圍;單端輸入;初始化輸入通道0。所以,在open中不用配置MAX1303。對(duì)LPC3250的寄存器配置也比較簡(jiǎn)單,需要完成的配置有:片選信號(hào)拉高;時(shí)鐘信號(hào)拉低;處理器輸出拉低。
          Write字段需要接收應(yīng)用程序從用戶空間傳遞到內(nèi)核的的數(shù)據(jù),然后將此數(shù)據(jù)通過GPO_17端口發(fā)送給MAX1303。這些數(shù)據(jù)主要用于修改MAX1303的配置,例如通道選擇。向MAX1303寫數(shù)據(jù)時(shí)需要注意MAX1303電氣特性中的兩個(gè)時(shí)間參數(shù)Tcss和Tcspw。Tcss對(duì)應(yīng)著芯片的片選信號(hào)被拉低后到第一個(gè)時(shí)鐘到來前所必需的時(shí)間間隔。Tcspw對(duì)應(yīng)著寫模擬輸入配置字節(jié)、模式控制字節(jié)、轉(zhuǎn)換啟動(dòng)字節(jié)時(shí),任意兩者之間的時(shí)間間隔。這兩個(gè)時(shí)間參數(shù)都必須大于40 ns,且沒有上限。本系統(tǒng)中,在Read中寫轉(zhuǎn)換啟動(dòng)字節(jié),write中只做通道的切換,其他配置都使用默認(rèn)的。
          Read字段是MAX1303驅(qū)動(dòng)的關(guān)鍵點(diǎn)。它負(fù)責(zé)讀取采樣結(jié)果,并將結(jié)果傳遞給應(yīng)用程序。在read中,首先是用8個(gè)時(shí)鐘向MAX1303寫轉(zhuǎn)換起始字節(jié),然后使用8個(gè)是時(shí)鐘周期等待AD轉(zhuǎn)換完成。最后使用16個(gè)時(shí)鐘周期讀取MAX1303輸出的轉(zhuǎn)換結(jié)果。由于轉(zhuǎn)換結(jié)果是以串行方式輸出,故需要將讀取的數(shù)據(jù)拼湊起來。又由于ARM使用的是端口3的GPI_06管腳讀取MAX1303的輸出數(shù)據(jù),且對(duì)于端口3的操作是以32位進(jìn)行的,所以還需要考慮拼接端口3的哪個(gè)數(shù)據(jù)位。本文的處理方式是先將端口3讀出的數(shù)據(jù)右移6位。具體的操作代碼如下:
          d.JPG
          release對(duì)應(yīng)著系統(tǒng)調(diào)用中的close函數(shù)。它需要完成這個(gè)驅(qū)動(dòng)所涉及的配置寄存器的復(fù)位,操作過程與open相反。在還原寄存器的默認(rèn)設(shè)置后,打印一條設(shè)備文件關(guān)閉的信息,供應(yīng)用程序開發(fā)者調(diào)試時(shí)觀察使用。

          4 Linux應(yīng)用程序設(shè)計(jì)與測(cè)試
          本文介紹的應(yīng)用程序是整個(gè)系統(tǒng)的一部分,這里僅供測(cè)試使用。測(cè)試的功能主要是驅(qū)動(dòng)中的write和read功能。由于的read中沒有對(duì)讀取的采樣值做處理,所以得到的數(shù)據(jù)還不是輸入信號(hào)的實(shí)際值,應(yīng)用程序必須對(duì)數(shù)據(jù)進(jìn)行處理。由于MAX1303采用單端、雙極性輸入,所以處理公式為:
          e.JPG
          式中,實(shí)際值的單位是毫伏;采樣值是從MAX1303讀取的數(shù)據(jù);FSR是滿量程范圍,對(duì)于本系統(tǒng),F(xiàn)SR是2*Vref;本系統(tǒng)采用內(nèi)部電壓基準(zhǔn),Vref的理論值是4.096 V,但實(shí)際系統(tǒng)中會(huì)有一定的漂移,范圍一般在4.056 V到4.136 V之間。
          為了測(cè)試,應(yīng)用程序每秒讀取一次兩個(gè)通道的數(shù)據(jù),并打印。應(yīng)用程序的流程圖如圖4所示。

          本文引用地址:http://www.ex-cimer.com/article/201610/306026.htm

          f.JPG


          根據(jù)應(yīng)用程序的打印結(jié)果和CH1、CH2的實(shí)際輸入,系統(tǒng)采樣結(jié)果正確,系統(tǒng)運(yùn)行穩(wěn)定。

          5 結(jié)論
          A/D轉(zhuǎn)換器在數(shù)據(jù)采集系統(tǒng)和智能控制系統(tǒng)中有極其重要的用途。嵌入式Linux在現(xiàn)代的嵌入式系統(tǒng)中也被廣泛應(yīng)用。本文描述的16位AD芯片的Linux驅(qū)動(dòng)和硬件設(shè)計(jì)不僅在筆者所開發(fā)的系統(tǒng)中具有實(shí)際工程應(yīng)用價(jià)值,同時(shí),對(duì)其他具有SPI的AD芯片的硬件設(shè)計(jì)和Linux設(shè)計(jì)也有一定的參考價(jià)值。


          上一頁 1 2 3 下一頁

          評(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); })();