====
硬體描述:
s3c2440有乙個10-bit的cmos adc 模數轉換器,支援8個模擬通道輸入,10位的解析度,最高速度可達500ksps(500 千次/每秒)。
從圖中可知:模擬adc,包含了2部分功能,一部分是觸屏功能,另一部分就是普通adc功能,分別可以產生int_tc和int_adc 兩個中斷。8個ain模擬輸入(a[3:0],ym,yp,xm,xp)通過乙個8路模擬開關mux進行通道片選。 adc模組共有20個暫存器。對於普通adc轉換,使用adccon 和 adcdat0即可完成控制。adccon用於控制設定,adcdat0儲存了轉換結果。
驅動程式adc_dev.ko:
#include #include #include #include #include #include #include #include #include #include #include #include #include #define device_name "adc_dev"
struct adc_dev ;
static struct adc_dev adc_dev;
static void __iomem *adc_reg_base;
static struct clk *adc_clk;
#define adccon (*(volatile unsigned long *)(adc_reg_base + s3c2410_adccon))
#define adcdat0 (*(volatile unsigned long *)(adc_reg_base + s3c2410_adcdat0))
#define start_adc(ch,pres) adccon = (0x01 | 0x01<<14 | ch<<3 | pres<<6)
static ssize_t adc_read(struct file *fp, char __user *buf, size_t count, loff_t *ppos)
static int adc_open(struct inode *in, struct file *fp)
static irqreturn_t adc_done_handler(int irq, void *dev_id)
static struct file_operations dev_fops = ;
static struct miscdevice misc = ;
static int __init dev_init(void)
clk_enable(adc_clk); //開啟adc 時鐘,系統開機時預設是關閉的
ret = request_irq(irq_adc,adc_done_handler,irqf_shared,device_name,&adc_dev); //分配中斷線
if (ret)
ret = misc_register(&misc); //註冊裝置
return ret;
}static void __exit dev_exit(void)
module_init(dev_init);
module_exit(dev_exit);
module_license("gpl");
module_author("itspy");
module_description("adc driver test");
應用程式adc_test:
#include #include #include #include #include int main(void)
printf("adc_test result:\n");
for (i= 0; i< 5; i++)
else
} close(fd);
return 0;
}
測試結果:
[root@wsn /]# ./adc_test
adc_test result:
adc value = 740 (2.38 v)
adc value = 744 (2.40 v)
adc value = 744 (2.40 v)
adc value = 744 (2.40 v)
求教 s3c2440問題
趙老師您好,我把您的程式新增到我的程式中去了,下面是主要 1 main函式 int main void a a b rgpbdat liushui delay 20 liushui liushui 0xffe 2 pwm初始化 void pwm init void 3 定時器中斷 static vo...
s3c2440系統時鐘
1 flck hclk和pclk的關係 一般來說,mcu的主時鐘源主要是外部晶振或外部時鐘,而用的最多的是外部晶振。在正確情況下,系統內所使用的時鐘都是外部時鐘源經過一定的處理得到的。由於外部時鐘源的頻率一般不能滿足系統所需要的高頻條件,所以往往需要pll 鎖相環 進行倍頻處理。在s3c2440中,...
s3c2440儲存控制
nandflash和norflash都是flash的一種,都是散存,都是磁碟儲存介子,但是nandflash一般比較大,而norflash都比較小,並且norflash比較貴,並且norflash寫的速度比較慢,但讀的速度比較快 而nandflash讀的速度比較慢,寫的速度比較快。nor flash...