基於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...