999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

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

2013-10-21 00:54:06姜秀杰
電子設(shè)計(jì)工程 2013年12期
關(guān)鍵詞:設(shè)備系統(tǒng)

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

(1.中國(guó)科學(xué)院 空間科學(xué)與應(yīng)用研究中心,北京 100190;2.中國(guó)科學(xué)院 研究生院,北京 100049)

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

1 芯片介紹

1.1 LPC3250 簡(jiǎn)介

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

1.2 AD 芯片MAX1303 簡(jiǎn)介

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

從引腳圖可以看出,芯片外部有多種電源引腳,這些引腳對(duì)應(yīng)芯片內(nèi)部獨(dú)立的功能模塊。對(duì)芯片采用獨(dú)立的電源供電可以盡可能的使工作環(huán)境保持低噪聲。第16、17 引腳在使用外部電壓基準(zhǔn)時(shí)分別連接AVDD 和基準(zhǔn)電壓,在使用芯片內(nèi)部基準(zhǔn)時(shí),分別通過(guò)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 轉(zhuǎn)換器的某些工作模式下可指示轉(zhuǎn)換狀態(tài)。另外4 種數(shù)字接口可通過(guò)SPI/QSPI/MICROWIRE 兼容的串行接口與2.7 V 至5.25 V 的系統(tǒng)連接。

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

2 系統(tǒng)硬件設(shè)計(jì)

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

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

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

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

3 Linux 下設(shè)備驅(qū)動(dòng)程序設(shè)計(jì)

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

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

與模塊加載函數(shù)對(duì)應(yīng)的,有一個(gè)模塊卸載函數(shù),此函數(shù)由module_exit 宏指定,它在驅(qū)動(dòng)模塊被卸載時(shí)執(zhí)行。它主要完成的工作包括:銷(xiāo)毀設(shè)備文件;注銷(xiāo)設(shè)備所對(duì)應(yīng)的cdev 結(jié)構(gòu);釋放內(nèi)存;注銷(xiāo)設(shè)備號(hào)。

Struct cdev 在內(nèi)核內(nèi)部被用來(lái)表示設(shè)備,這是一個(gè)非常重要的數(shù)據(jù)結(jié)構(gòu)。它內(nèi)部有一個(gè)成員結(jié)構(gòu) struct file_operations[6],用于連接設(shè)備編號(hào)和驅(qū)動(dòng)程序的操作。這個(gè)數(shù)據(jù)結(jié)構(gòu)包含一組函數(shù)指針,這一組函數(shù)的實(shí)現(xiàn)是設(shè)計(jì)驅(qū)動(dòng)程序的重點(diǎn)和難點(diǎn)。這一組函數(shù)有很多,但根據(jù)項(xiàng)目需求,本系統(tǒng)只實(shí)現(xiàn)open,write,read,release 4個(gè)函數(shù)。

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

結(jié)構(gòu)struct file_operations 中的open 字段對(duì)應(yīng)著系統(tǒng)調(diào)用中的open 函數(shù)。在應(yīng)用程序中,通過(guò)open 函數(shù)打開(kāi)MAX1303 對(duì)應(yīng)的設(shè)備文件時(shí),內(nèi)核會(huì)跳轉(zhuǎn)到此函數(shù)指針處。此函數(shù)指針的實(shí)現(xiàn),主要完成初始化工作。這包括MAX1303的初始化配置和LPC3250 驅(qū)動(dòng)相關(guān)的寄存器設(shè)置。MAX1303的初始化包括工作模式選擇、量程范圍選擇、單端/差分輸入選擇、初始化通道選擇。對(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)用程序從用戶(hù)空間[7]傳遞到內(nèi)核的的數(shù)據(jù),然后將此數(shù)據(jù)通過(guò)GPO_17 端口發(fā)送給MAX1303。這些數(shù)據(jù)主要用于修改MAX1303 的配置,例如通道選擇。向MAX1303 寫(xiě)數(shù)據(jù)時(shí)需要注意MAX1303 電氣特性中的兩個(gè)時(shí)間參數(shù)Tcss 和Tcspw。Tcss 對(duì)應(yīng)著芯片的片選信號(hào)被拉低后到第一個(gè)時(shí)鐘到來(lái)前所必需的時(shí)間間隔[8]。Tcspw對(duì)應(yīng)著寫(xiě)模擬輸入配置字節(jié)、模式控制字節(jié)、轉(zhuǎn)換啟動(dòng)字節(jié)時(shí),任意兩者之間的時(shí)間間隔。這兩個(gè)時(shí)間參數(shù)都必須大于40 ns,且沒(méi)有上限。本系統(tǒng)中,在Read 中寫(xiě)轉(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 寫(xiě)轉(zhuǎn)換起始字節(jié),然后使用8個(gè)是時(shí)鐘周期等待AD 轉(zhuǎn)換完成。最后使用16個(gè)時(shí)鐘周期讀取MAX1303輸出的轉(zhuǎn)換結(jié)果。由于轉(zhuǎn)換結(jié)果是以串行方式輸出,故需要將讀取的數(shù)據(jù)拼湊起來(lái)。又由于ARM 使用的是端口3 的GPI_06 管腳讀取MAX1303 的輸出數(shù)據(jù),且對(duì)于端口3 的操作是以32 位進(jìn)行的,所以還需要考慮拼接端口3 的哪個(gè)數(shù)據(jù)位。本文的處理方式是先將端口3 讀出的數(shù)據(jù)右移6 位。具體的操作代碼如下:

release 對(duì)應(yīng)著系統(tǒng)調(diào)用中的close 函數(shù)。它需要完成這個(gè)驅(qū)動(dòng)所涉及的配置寄存器的復(fù)位,操作過(guò)程與open 相反。在還原寄存器的默認(rèn)設(shè)置后,打印一條設(shè)備文件關(guān)閉的信息,供應(yīng)用程序開(kāi)發(fā)者調(diào)試時(shí)觀察使用。

4 Linux 應(yīng)用程序設(shè)計(jì)與測(cè)試

本文介紹的應(yīng)用程序是整個(gè)系統(tǒng)的一部分,這里僅供測(cè)試驅(qū)動(dòng)程序使用。測(cè)試的功能主要是驅(qū)動(dòng)中的write 和read功能。由于驅(qū)動(dòng)程序的read 中沒(méi)有對(duì)讀取的采樣值做處理,所以得到的數(shù)據(jù)還不是輸入信號(hào)的實(shí)際值,應(yīng)用程序必須對(duì)數(shù)據(jù)進(jìn)行處理。由于MAX1303 采用單端、雙極性輸入,所以處理公式為:

式中,實(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 所示。

圖4 應(yīng)用程序流程圖Fig.4 Flow diagram of application

根據(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ì)不僅在筆者所開(kāi)發(fā)的系統(tǒng)中具有實(shí)際工程應(yīng)用價(jià)值,同時(shí),對(duì)其他具有SPI 接口的AD 芯片的硬件接口設(shè)計(jì)和Linux 驅(qū)動(dòng)程序設(shè)計(jì)也有一定的參考價(jià)值。

[1]馬茂松,姜秀杰.星載電場(chǎng)儀的信號(hào)采集與傳輸系統(tǒng)[J].微計(jì)算機(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接口及其驅(qū)動(dòng)程序的實(shí)現(xiàn)[J].計(jì)算機(jī)測(cè)量與控制,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 的數(shù)據(jù)通信系統(tǒng)設(shè)計(jì)[J].微計(jì)算機(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)接口設(shè)計(jì)與Linux 驅(qū)動(dòng)程序開(kāi)發(fā)[M].北京:北京航空航天大學(xué)出版社,2006.

[5]曹毅,何慎學(xué),陳會(huì)鴿.ARM-Linux 外擴(kuò)AD 驅(qū)動(dòng)程序的研究與實(shí)現(xiàn)[J].自動(dòng)化與儀表,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設(shè)備驅(qū)動(dòng)開(kāi)發(fā)詳解[M].北京:人民郵電出版社,2008.

[7]魏永明.Linux設(shè)備驅(qū)動(dòng)開(kāi)發(fā)詳解[M].北京:中國(guó)電力出版社,2006.

[8]肖笑.基于BCC算法的多機(jī)系統(tǒng)PSS參數(shù)優(yōu)化設(shè)計(jì)[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.

猜你喜歡
設(shè)備系統(tǒng)
諧響應(yīng)分析在設(shè)備減振中的應(yīng)用
Smartflower POP 一體式光伏系統(tǒng)
WJ-700無(wú)人機(jī)系統(tǒng)
ZC系列無(wú)人機(jī)遙感系統(tǒng)
基于PowerPC+FPGA顯示系統(tǒng)
半沸制皂系統(tǒng)(下)
基于VB6.0+Access2010開(kāi)發(fā)的設(shè)備管理信息系統(tǒng)
基于MPU6050簡(jiǎn)單控制設(shè)備
電子制作(2018年11期)2018-08-04 03:26:08
連通與提升系統(tǒng)的最后一塊拼圖 Audiolab 傲立 M-DAC mini
500kV輸變電設(shè)備運(yùn)行維護(hù)探討
主站蜘蛛池模板: 99999久久久久久亚洲| 蜜桃视频一区| 91精品视频在线播放| 欧美日韩中文字幕在线| 欧洲成人在线观看| 亚洲高清中文字幕| 久久这里只精品国产99热8| 在线欧美日韩国产| 91高清在线视频| 色婷婷在线播放| h网址在线观看| 亚洲自偷自拍另类小说| 免费日韩在线视频| 国产电话自拍伊人| 香蕉综合在线视频91| 被公侵犯人妻少妇一区二区三区| 中文无码精品A∨在线观看不卡| 免费日韩在线视频| 亚洲乱伦视频| 久久黄色毛片| 亚洲综合色在线| 精品无码一区二区三区电影| 国产99免费视频| 91久草视频| 亚洲AV人人澡人人双人| 中国一级特黄大片在线观看| 婷婷成人综合| 波多野结衣一区二区三区AV| 激情爆乳一区二区| 夜精品a一区二区三区| 国产激情第一页| 狠狠做深爱婷婷综合一区| 2048国产精品原创综合在线| 国产欧美日韩综合一区在线播放| 一区二区三区国产| 麻豆精品在线| 亚洲欧美综合另类图片小说区| 成人免费黄色小视频| 人妻熟妇日韩AV在线播放| 国产精品视屏| 波多野结衣中文字幕一区| 亚洲高清无在码在线无弹窗| 欧美综合中文字幕久久| 亚洲高清国产拍精品26u| 操国产美女| 欧美a在线视频| 国产综合欧美| 亚洲成a人片77777在线播放| 日韩精品少妇无码受不了| 亚洲人成网线在线播放va| аⅴ资源中文在线天堂| 免费久久一级欧美特大黄| 欧美国产菊爆免费观看| 女人毛片a级大学毛片免费| 国产一级小视频| 五月婷婷亚洲综合| 亚洲欧美日韩高清综合678| 日韩欧美91| 国产女人在线观看| 亚洲永久视频| 青草娱乐极品免费视频| 视频国产精品丝袜第一页| 国产日韩久久久久无码精品| 国产精品美女网站| 伊人久久青草青青综合| 成人精品午夜福利在线播放| 欧美一级色视频| 欧美色99| 女高中生自慰污污网站| 亚洲欧美成aⅴ人在线观看 | 色综合a怡红院怡红院首页| 欧美成a人片在线观看| 欧美亚洲欧美| 91精品啪在线观看国产60岁| 天堂网国产| 欧美日韩亚洲综合在线观看| 永久免费av网站可以直接看的 | 亚洲欧洲日产国产无码AV| 久久久91人妻无码精品蜜桃HD| 97se亚洲综合在线韩国专区福利| 日韩少妇激情一区二区| 亚洲色图欧美一区|