基於S5pc100 處理器的ADC驅動

2021-06-25 15:23:24 字數 1558 閱讀 1966

基於s5pc100 處理器的adc驅動

編寫乙個字元驅動程式獲取adc通道0的電壓值

一、開發環境:

1、 主機:ubuntu 10.10發行版

2目標機:fs_s5pc100平台

3目標機核心版本:2.6.35

4、交叉編譯工具:arm-none-linux-gnueabi-4.5.1

二、驅動編寫的注意步驟:

1) 字元驅動open函式

開啟時鐘

中斷申請

初始化暫存器

初始化等待佇列

struct clk *clk;  

static int myadc_open (struct inode *inode, struct file *file)

/*初始化暫存器*/

adccon = (unsigned int *)ioremap(0xf3000000, 4);

adcmux = (unsigned int *)ioremap(0xf300001c, 4);

adcdat = (unsigned int *)ioremap(0xf300000c, 4);

adcclrint = (unsigned int *)ioremap(0xf3000018, 4);

writel(1<<0 | 1<<14 | 65<<6 | 1<<16, adccon);

writel(0, adcmux);

writel(readl(adcdat) & ~0xfff, adcdat);

/*初始化等待佇列*/

init_waitqueue_head(&rwait);

return 0;

}2)關閉時鐘

static int myadc_release (struct inode *inode, struct file *file)

5)注意事項

由上圖可知,該處理器中,觸控螢幕和adc中斷是共享的,所以保證核心中,沒有註冊觸控螢幕驅動。驗證方法:cat /proc/interrupts,沒有類似「samsung-adc」的內容。

三、測試:

1、編譯應用程式

$ arm-none-linux-gnueabi-gcc test.c –o test

2、拷貝驅動及應用程式到目標板上

$ cp s5pc100_adc.ko test /source/rootfs

3、啟動開發板後載入模組

# insmod s5pc100_adc.ko

4、建立裝置節點

# mknod /dev/adc c 250 0

5、測試

# ./test

調節變阻器,終端會列印如下資訊:

S5PC100看門狗定時器

看門狗定時器 wdt,watch dog timer 是微控制器的乙個組成部分,在微控制器程式的除錯和執行中都有著重要的意義。它的主要功能是在發生軟體故障時,通過使器件復位 如果軟體未將器件清零 將微控制器復位。也可以用於將器件從休眠或空閒模式喚醒。看門狗 watchdog 定時器和pwm定時功能目...

用s5pc100的GPIO模擬IIC

先來看看lm75硬體的上的連線 其中i2c sda0是資料線,i2c scl0是時鐘線,它們分別接到s5pc100的gpd3和gpd4,如下圖所示 在模擬iic的時候,用gpd3引腳傳送資料或讀取資料,用gpd4引腳提供時鐘訊號即可。由於s5pc100的gpd這一組的引腳很多,不好單獨對其中的某乙個...

s5pc100平台串列埠控制器初始化

init gpk0con gpk2con for nfcon nand pin mux ldr r0,0xe03002a0 gpk0con ldr r1,0x22443322 str r1,r0 ldr r0,0xe03002e0 gpk2con ldr r1,0x11133333 str r1,r...