• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      基于ARM-Linux 的MAX1303 接口與驅動程序設計

      2013-10-21 00:54:06姜秀杰
      電子設計工程 2013年12期
      關鍵詞:驅動程序應用程序時鐘

      楊 斌,滿 峰,姜秀杰,劉 波

      (1.中國科學院 空間科學與應用研究中心,北京 100190;2.中國科學院 研究生院,北京 100049)

      在數據采集系統(tǒng)中,通常是通過傳感器將自然世界的物理量轉化成電量,電量是模擬量,必須經過模/數轉換才能被系統(tǒng)的處理器讀取?,F在的很多微處理器都有片內AD,但這些AD 多數是8 位、10 位或者12 位,有時候很難滿足精度要求。所以需要利用處理器的接口資源外擴精度較高的AD 芯片。然而精度越高,價格越貴。所以在選擇AD 芯片時,必須充分考慮這兩個方面。本系統(tǒng)在對采樣精度和價格進行權衡后,決定選擇16 位模/數轉換器。由于設計的數據采集系統(tǒng)放置于環(huán)境惡劣的野外,所以全部器件都要滿足工業(yè)級標準,所以最終選擇了MAXIM 公司的MAX1303。處理器選用了恩智普公司的ARM9 微處理器LPC3250。在此基礎上,設計了硬件連接,以及Linux2.6.29 內核下的設備驅動程序,并通過編寫的應用程序對驅動程序進行了測試。

      1 芯片介紹

      1.1 LPC3250 簡介

      LPC3250 是恩智普公司推出的、采用RISC 結構、基于ARM926EJ-S 內核的32 位工業(yè)級處理器,可工作于-40~+85 ℃的范圍內。它的最高工作頻率可達266 MHz,具有完整的存儲管理單元(MMU),可以嵌入Linux/Wince 等需要MMU 支持的操作系統(tǒng);高達256 kB 的內部SRAM 可用于數據和代碼存儲;32 kB 數據高速緩存和32 kB 指令高速緩存;矢量浮點協(xié)處理器具有硬件浮點計算功能。另外,片內有SD/MMC 卡主機控制器和以太網控制器使系統(tǒng)實現文件存儲和以太網功能變得簡單,這對于數據采集系統(tǒng)非常有用。

      1.2 AD 芯片MAX1303 簡介

      MAX1303 是MAXIM 公司推出的工業(yè)級、低功耗、多量程、16 位精度的模/數轉換芯片,采用+5 V 單電源供電,最高采樣率可達115kbps。可使用+4.096 V 片上基準或者3.800 到4.136 V 之間的外部電壓基準[1]。采用20 引腳的TSSOP 封裝。它的引腳如圖1 所示。

      從引腳圖可以看出,芯片外部有多種電源引腳,這些引腳對應芯片內部獨立的功能模塊。對芯片采用獨立的電源供電可以盡可能的使工作環(huán)境保持低噪聲。第16、17 引腳在使用外部電壓基準時分別連接AVDD 和基準電壓,在使用芯片內部基準時,分別通過0.01 μF 和1 μF 的電容旁路到AGND1即可。其他引腳功能如表1 所示。

      圖1 MAX1303 引腳圖Fig.1 Pin diagram of MAX1303

      表1 MAX1303 引腳功能Tab.1 Pin function of MAX1303

      CH0-CH4 支持4 路單端輸入,或者2 路差分輸入。SSTRB 在AD 轉換器的某些工作模式下可指示轉換狀態(tài)。另外4 種數字接口可通過SPI/QSPI/MICROWIRE 兼容的串行接口與2.7 V 至5.25 V 的系統(tǒng)連接。

      MAX1303 支持7 種單端輸入范圍或者3 種差分輸入范圍,有7 種工作模式。這些都可以通過輸入控制字進行配置。

      2 系統(tǒng)硬件設計

      已提到,模/數轉換器MAX1303 可以通過SPI/QSPI/MICROWIRE 兼容的串行接口進行控制。由于SPI 比較常見,并且協(xié)議簡單,本系統(tǒng)使用SPI 協(xié)議控制此AD 芯片。然而,雖然LPC3250 有內置的SPI 控制器,但本系統(tǒng)選擇使用LPC3250 的GPI/O 口模擬SPI 接口對MAX1303 進行控制。下面分析原因。

      已提到,MAX1303 有7 中工作模式,其中,有3 種用于數據采集。這3 種工作模式是:外部時鐘模式;外部采集模式;內部時鐘模式。這3 種采集模式各有優(yōu)缺點。外部時鐘模式的吞吐率最高,同時,給處理器帶來的負擔也最高;內部時鐘模式吞吐率次之,能適當減輕處理器的負擔;外部采集模式的吞吐率最低,但卻能最大限度的減輕處理器負擔。由于LPC3250 性能強大,所以系統(tǒng)在采集數據時,使用吞吐率高的外部時鐘模式。然而,使用外部時鐘模式時,不像使用內部時鐘模式和外部采集模式,處理器向MAX1303 寫完控制字和轉換啟動字后,只需等待MAX1303 的SSTRB 引腳輸出的轉換結束信號,然后就可以讀取轉換結果。使用外部時鐘模式,需要精確的控制時鐘個數,這使得在驅動程序中,要經常修改SPI 的相關控制器,而且還要通過查詢來確定時鐘的個數。如果使用LPC3250 的GPI/O 口模擬SPI 協(xié)議控制AD 芯片就簡單的多。控制GPO 口不斷翻轉輸出電平就可以產生時鐘信號,而且可隨意控制時鐘個數。對于發(fā)送數據,只需要簡單的把數據字節(jié)的每個位根據時鐘變化通過GPI 口輸出給AD 芯片。讀取數據與發(fā)送數據是一個相反的過程,但類似。

      所以,用GPI/O 口模擬SPI 總線控制MAX1303 非常簡單。本系統(tǒng)有兩路模擬信號需要采集,使用單端輸入,MAX1303 的另外兩個輸入端接地。LPC3250 與MAX1303 的硬件連接如圖2 所示。

      圖2 LPC3250 和MAX1303 的連接圖Fig.2 Connection diagram of LPC3250 and MAX1303

      3 Linux 下設備驅動程序設計

      設備驅動程序是應用程序和硬件之間的橋梁,它為應用程序屏蔽硬件細節(jié),并將硬件封裝成一個文件的形式[2-3]。當應用程序需要操作硬件時,只需操作硬件相對應的設備文件即可。Linux 對設備的分類有許多種,常見的分類是將設備分成3 種:字符設備、塊設備、網絡設備[4]。這三類設備對應3 種設備文件。不同設備的開發(fā)模式以及與內核的接口也不相同。MAX1303 屬于字符設備,本文將分析Linux2.6.29 內核下MAX1303 的字符設備驅動設計方法。

      設備驅動程序與應用程序不同,應用程序從main 函數開始執(zhí)行,而驅動程序在被安裝時,則是從module_init 宏指定的函數處開始執(zhí)行[5]。module_init 宏指定的函數被稱為模塊加載函數,它可以看成是驅動程序的入口。它通常完成地址映射,向內核注冊并初始化cdev 結構,創(chuàng)建設備文件等工作。模塊加載函數的程序流程圖如圖3 所示。

      與模塊加載函數對應的,有一個模塊卸載函數,此函數由module_exit 宏指定,它在驅動模塊被卸載時執(zhí)行。它主要完成的工作包括:銷毀設備文件;注銷設備所對應的cdev 結構;釋放內存;注銷設備號。

      Struct cdev 在內核內部被用來表示設備,這是一個非常重要的數據結構。它內部有一個成員結構 struct file_operations[6],用于連接設備編號和驅動程序的操作。這個數據結構包含一組函數指針,這一組函數的實現是設計驅動程序的重點和難點。這一組函數有很多,但根據項目需求,本系統(tǒng)只實現open,write,read,release 4個函數。

      圖3 模塊加載函數流程圖Fig.3 Flow diagram of module loading function

      結構struct file_operations 中的open 字段對應著系統(tǒng)調用中的open 函數。在應用程序中,通過open 函數打開MAX1303 對應的設備文件時,內核會跳轉到此函數指針處。此函數指針的實現,主要完成初始化工作。這包括MAX1303的初始化配置和LPC3250 驅動相關的寄存器設置。MAX1303的初始化包括工作模式選擇、量程范圍選擇、單端/差分輸入選擇、初始化通道選擇。對于這四項,本系統(tǒng)全部使用默認設置:外部時鐘模式;-Vref 到+Vref 的測量范圍;單端輸入;初始化輸入通道0。所以,在open 中不用配置MAX1303。對LPC3250 的寄存器配置也比較簡單,需要完成的配置有:片選信號拉高;時鐘信號拉低;處理器輸出拉低。

      Write 字段需要接收應用程序從用戶空間[7]傳遞到內核的的數據,然后將此數據通過GPO_17 端口發(fā)送給MAX1303。這些數據主要用于修改MAX1303 的配置,例如通道選擇。向MAX1303 寫數據時需要注意MAX1303 電氣特性中的兩個時間參數Tcss 和Tcspw。Tcss 對應著芯片的片選信號被拉低后到第一個時鐘到來前所必需的時間間隔[8]。Tcspw對應著寫模擬輸入配置字節(jié)、模式控制字節(jié)、轉換啟動字節(jié)時,任意兩者之間的時間間隔。這兩個時間參數都必須大于40 ns,且沒有上限。本系統(tǒng)中,在Read 中寫轉換啟動字節(jié),write 中只做通道的切換,其他配置都使用默認的。

      Read 字段是MAX1303 驅動的關鍵點。它負責讀取采樣結果,并將結果傳遞給應用程序。在read 中,首先是用8個時鐘向MAX1303 寫轉換起始字節(jié),然后使用8個是時鐘周期等待AD 轉換完成。最后使用16個時鐘周期讀取MAX1303輸出的轉換結果。由于轉換結果是以串行方式輸出,故需要將讀取的數據拼湊起來。又由于ARM 使用的是端口3 的GPI_06 管腳讀取MAX1303 的輸出數據,且對于端口3 的操作是以32 位進行的,所以還需要考慮拼接端口3 的哪個數據位。本文的處理方式是先將端口3 讀出的數據右移6 位。具體的操作代碼如下:

      release 對應著系統(tǒng)調用中的close 函數。它需要完成這個驅動所涉及的配置寄存器的復位,操作過程與open 相反。在還原寄存器的默認設置后,打印一條設備文件關閉的信息,供應用程序開發(fā)者調試時觀察使用。

      4 Linux 應用程序設計與測試

      本文介紹的應用程序是整個系統(tǒng)的一部分,這里僅供測試驅動程序使用。測試的功能主要是驅動中的write 和read功能。由于驅動程序的read 中沒有對讀取的采樣值做處理,所以得到的數據還不是輸入信號的實際值,應用程序必須對數據進行處理。由于MAX1303 采用單端、雙極性輸入,所以處理公式為:

      式中,實際值的單位是毫伏;采樣值是從MAX1303 讀取的數據;FSR 是滿量程范圍,對于本系統(tǒng),FSR 是2*Vref;本系統(tǒng)采用內部電壓基準,Vref 的理論值是4.096 V,但實際系統(tǒng)中會有一定的漂移,范圍一般在4.056 V 到4.136 V 之間。

      為了測試,應用程序每秒讀取一次兩個通道的數據,并打印。應用程序的流程圖如圖4 所示。

      圖4 應用程序流程圖Fig.4 Flow diagram of application

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

      5 結論

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

      [1]馬茂松,姜秀杰.星載電場儀的信號采集與傳輸系統(tǒng)[J].微計算機信息,2010,26(12):34-36.MA Mao-song,JIANG Xiu-jie.Signal sampling and transmitting system of satellite onboard electric field meter[J].Microcomputer Information,2010,26(12):34-36.

      [2]徐偉,胡志忠,肖前貴.AD7490與AT91RM9200的SPI接口及其驅動程序的實現[J].計算機測量與控制,2009,17(10):2089-2091.XU Wei,HU Zhi-zhong,XIAO Qian-gui.Implementation of SPI and driver for AD7490 and AT91RM9200 [J].Computer Measurement &Control,2009,17(10):2089-2091.

      [3]陳鑫旺,姜秀杰.基于嵌入式Linux 和FPGA 的數據通信系統(tǒng)設計[J].微計算機信息,2012,28(6):76-78.CHEN Xin-wang,JIANG Xiu-jie.Design of data communication system based on embedded Linux and FPGA[J].Microcomputer Information,2012,28(6):76-78.

      [4]劉淼.嵌入式系統(tǒng)接口設計與Linux 驅動程序開發(fā)[M].北京:北京航空航天大學出版社,2006.

      [5]曹毅,何慎學,陳會鴿.ARM-Linux 外擴AD 驅動程序的研究與實現[J].自動化與儀表,2010(9):45-48.CAO Yi,HE Shen-xue,CHEN Hui-ge.Research and implementation on extending AD driver program based on ARM-Linux[J].Automation&Instrumentation,2010(9):45-48.

      [6]李俊.嵌入式Linux設備驅動開發(fā)詳解[M].北京:人民郵電出版社,2008.

      [7]魏永明.Linux設備驅動開發(fā)詳解[M].北京:中國電力出版社,2006.

      [8]肖笑.基于BCC算法的多機系統(tǒng)PSS參數優(yōu)化設計[J].陜西電力,2012(12):51-54.XIAO Xiao.Optimal design of multi-machine power system stabilizer parameters based on bacterial colony chemotaxis algorithm[J].Shaanxi Electric Power,2012(12):51-54.

      猜你喜歡
      驅動程序應用程序時鐘
      別樣的“時鐘”
      古代的時鐘
      刪除Win10中自帶的應用程序
      電腦報(2019年12期)2019-09-10 05:08:20
      有趣的時鐘
      時鐘會開“花”
      關閉應用程序更新提醒
      電腦迷(2012年15期)2012-04-29 17:09:47
      三星電子將開設應用程序下載商店
      微軟軟件商店開始接受應用程序
      驅動程序更新與推薦
      驅動程序更新與推薦
      阳泉市| 吴川市| 三门县| 龙州县| 河南省| 阿拉尔市| 海口市| 松江区| 郯城县| 吴桥县| 剑阁县| 巴楚县| 延吉市| 得荣县| 桐城市| 拜泉县| 阿拉善盟| 高清| 岳阳市| 濮阳市| 筠连县| 阿瓦提县| 龙口市| 鹰潭市| 修武县| 肃南| 长寿区| 囊谦县| 都昌县| 乌鲁木齐市| 涪陵区| 白玉县| 海口市| 修水县| 观塘区| 米林县| 建湖县| 汤原县| 洛扎县| 金门县| 定南县|