ARM Linux ADC 驅動(查詢方式)

2021-07-03 07:11:33 字數 2145 閱讀 1358

主機系統:ubuntu 11.04

核心版本:linux kernel 2.6.39

硬體平台:fl2440

開發板系統:linux kernel 2.6.28

下面是用cpu輪尋的方式來判斷ad轉換完成的

#include #include #include #include /*建立裝置節點*/

#include #include /*延時函式*/

#include #include #include #include #define adc_major 102

#define adc_name "my_adc"

#define success 0

static int adc_open(struct inode *,struct file *);

static int adc_release(struct inode *,struct file *);

static int __init adc_init(void);

static int __exit adc_exit(void);

static ssize_t adc_read(struct file *,char *,size_t,loff_t *);

volatile unsigned long adc_con;

unsigned long adc_dat0;

//#define adc_con (unsigned long)ioremap(0x58000000,4)

//#define adc_dat0 (volatile unsigned long)ioremap(0x5800000c,4)

struct clk *adc_clk;

struct file_operations adc_ops =

;static int __init adc_init(void)

adc_con=(unsigned long)ioremap(0x58000000,4);

adc_dat0=(volatile unsigned long)ioremap(0x58000000+s3c2410_adcdat0,4);

if(adc_con&adc_dat0==0)

printk("initialized.../n");

return success;

handle:

unregister_chrdev(adc_major,adc_name);

return -1;

}static int adc_open(struct inode * inode,struct file * file) //開啟裝置函式

static int adc_release(struct inode * inode,struct file * file) //關閉裝置函式

static ssize_t adc_read(struct file *file,

char * buffer,

size_t length,

loff_t * offset)//裝置讀取函式

static int __exit adc_exit(void) //驅動解除安裝函式

module_init(adc_init);

module_exit(adc_exit);

module_license("gpl");

其中控制暫存器的第15未標明ad轉換是否完成,當ad完成轉換時,控制暫存器自動置一,但是由於資料存在延遲,當第15位置一的時候讀出的資料並不穩定,需要在其後加個延遲的函式,在核心態使用的延遲函式包含標頭檔案./linux/delay.h

mdelay(int x);延時x毫秒

udelay(int x);延時x微秒

ndelay(int x);延時x納秒

#include #include #include #define adc_device	"/dev/my_adc"

int main()

for(;;)

close(ret);

return 0;

}

測試結果:

arm linux ADC驅動(中斷方式)

硬體平台 fl2440 核心版本 2.6.28 主機平台 ubuntu 11.04 核心版本 2.6.39 這個驅動寫了好久,因為原來的linux核心編譯的時候將觸控螢幕驅動編譯進核心了,而觸控螢幕驅動裡的adc中斷在註冊的時候型別選擇的是 irqf sample random,不是共享型別,所以,...

驅動的安裝和查詢

1 dos介面下查詢驅動 輸入 sc query drivename 安裝驅動命令 sc create fuwuming binpath type kernel net start fuwuming fuwuming 服務名 例如 某金沒有起來是不是驅動導致 filelock沒有安裝 sc dele...

查詢驅動檔案ko Linux驅動程式學習一

最近在看 linux裝置驅動程式 裡面提到需要準備乙個核心源 樹。在本人電腦上 usr src裡面檢視到好幾個版本的linux版本,這些其實就是編譯好的核心源 也就是核心源 樹。二 配置linux 核心 配置核心的方法很多,主要有如下幾種 1.makemenuconfig 基於ncurse庫編制的圖...