<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > 基于A(yíng)RM-Linux的MAX1303接口與驅動(dòng)程序設計

基于A(yíng)RM-Linux的MAX1303接口與驅動(dòng)程序設計

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

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

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

本文引用地址:http://dyxdggzs.com/article/201610/306026.htm

f.JPG


根據應用程序的打印結果和CH1、CH2的實(shí)際輸入,系統采樣結果正確,系統運行穩定。

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


上一頁(yè) 1 2 3 下一頁(yè)

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>