新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > 基于ARM-Linux的MAX1303接口與驅動程序設計

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

作者: 時間:2016-10-10 來源:網絡 收藏

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

本文引用地址:http://www.butianyuan.cn/article/201610/306026.htm

b.JPG


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

3 Linux下設備設計
設備是應用程序和硬件之間的橋梁,它為應用程序屏蔽硬件細節(jié),并將硬件封裝成一個文件的形式。當應用程序需要操作硬件時,只需操作硬件相對應的設備文件即可。Linux對設備的分類有許多種,常見的分類是將設備分成3種:字符設備、塊設備、網絡設備。這三類設備對應3種設備文件。不同設備的開發(fā)模式以及與內核的也不相同。MAX1303屬于字符設備,本文將分析Linux2.6.29內核下MAX 1303的字符設備驅動設計方法。
設備驅動程序與應用程序不同,應用程序從main函數開始執(zhí)行,而驅動程序在被安裝時,則是從module_init宏指定的函數處開始執(zhí)行。module_init宏指定的函數被稱為模塊加載函數,它可以看成是驅動程序的入口。它通常完成地址映射,向內核注冊并初始化cdev結構,創(chuàng)建設備文件等工作。模塊加載函數的程序流程圖如圖3所示。

c.JPG


與模塊加載函數對應的,有一個模塊卸載函數,此函數由module_exit宏指定,它在驅動模塊被卸載時執(zhí)行。它主要完成的工作包括:銷毀設備文件;注銷設備所對應的cdev結構;釋放內存;注銷設備號。
Struct cdev在內核內部被用來表示設備,這是一個非常重要的數據結構。它內部有一個成員結構structfile_operations,用于連接設備編號和驅動程序的操作。這個數據結構包含一組函數指針,這一組函數的實現是設計驅動程序的重點和難點。這一組函數有很多,但根據項目需求,本系統(tǒng)只實現open,write,read,release 4個函數。



評論


相關推薦

技術專區(qū)

關閉