免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1036 | 回复: 0
打印 上一主题 下一主题

ADC Driver [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-10-14 21:21 |只看该作者 |倒序浏览
ADC Driver
使用AIN5进行ADC采样(禁止触摸屏)
驱动程序:    ADC寄存器定义:
#define S3C2410_ADC_BASE         S3C2410_PA_ADC
#define S3C2410_ADCREG(x)       ((x) + S3C24XX_PA_ADC)#define S3C2410_ADCCON          S3C2410_ADCREG(0x00)#define S3C2410_ADCTSC          S3C2410_ADCREG(0x04)#define S3C2410_ADCDLY          S3C2410_ADCREG(0x08)#define S3C2410_ADCDAT0         S3C2410_ADCREG(0x0C)#define S3C2410_ADCDAT1         S3C2410_ADCREG(0x10)#define S3C2410_ADCPDN          S3C2410_ADCREG(0x14)
#define ADCCON          (0x00)#define ADCTSC          (0x04)#define ADCDLY          (0x08)#define ADCDAT0         (0x0C)#define ADCDAT1         (0x10)#define ADCPDN          (0x14)
    ADC的默认时钟尽管是开的,但是为了保险,还是再使能一下:
  temp = __raw_readl(S3C2410_CLKCON)|(1 //printk("CLKCON = 0x%x\n", temp); temp &= ~(S3C2410_CLKCON_IDLE|S3C2410_CLKCON_POWER); __raw_writel(temp, S3C2410_CLKCON); //printk("CLKCON = 0x%x\n", temp);
    ADC初始化:
    S3C2440的移植代码中没有ADC的寄存器详细定义,为了方便,直接使用动态IO映射,使用ioremap函数进行操作:
void __iomem *base = ioremap(S3C2410_ADC_BASE, 0x14);     设置ADC的ADCCON寄存器,设置AD转换参数:
temp = (1 __raw_writel(temp, base + ADCCON);
temp = (0  __raw_writel(temp, base + ADCTSC);
__raw_writel(1, base + ADCDLY);
    读取ADC:
  unsigned int temp, val; void __iomem *base = ioremap(S3C2410_ADC_BASE, 0x14);
temp = __raw_readl(base + ADCCON) | (1 __raw_writel(temp, base + ADCCON ); val = __raw_readl(base + ADCDAT0); while(!(__raw_readl(base + ADCCON) & (1
测试程序:int main(int argc, char *argv[]){ int fd; unsigned char val;
fd=open(DEV_NAME, O_RDWR); if(fd perror("can not open device"); exit(1); }
while(1) { read(fd, &val, 1); printf("adc val = 0x%x\n", val); usleep(300000); }out: close(fd); return 0;}
               
               
               
               

本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u1/51797/showart_2070547.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP