S3C6410的ADC驱动问题

IKONE 2010-12-16 04:00:53
在华恒的S3C6410开发板上写查询式ADC驱动,我发现启动AD转换后ADCCON的最高位ECFLG始终为0,按手册中的说,转换结束后应该为1不是吗?我运行这个程序接收的值一直是固定的0x1ff,也不对 貌似AD没有工作 设置如下:
ts_base= ioremap(S3C2410_PA_ADC,0x20);
writel(0x00, ts_base+S3C2410_ADCTSC);
writel( 0x3FC4,ts_base+S3C2410_ADCCON);
struct ADC_DEV adcdev;
copy_from_user(&adcdev, (struct ADC_DEV *)buf, count);
tmp = S3C2410_ADCCON_PRSCEN | PRSCVL(adcdev.prescale) | ADC_INPUT(adcdev.channel);

tmp = readl(ts_base+S3C2410_ADCCON) | 0x01; //start AD converdo
writel( tmp, ts_base+S3C2410_ADCCON);

//do{
//tmp = readl(ts_base+S3C2410_ADCCON);
//}while(!(tmp&S3C2410_ADCCON_ECFLG));

data = (readl(ts_base+S3C2410_ADCDAT0) & 0x3ff);
我没有卸载板子本身自带的触摸屏驱动,我不确定编译内核的哪些选项,就一直没动,不知道是不是这个冲突?
tmp的值设置后一直为0x7f01
...全文
209 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
IKONE 2010-12-20
  • 打赏
  • 举报
回复
现在的问题是ADC转换好像没起作用 标志位一直是0
IKONE 2010-12-20
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 feiyinzilgd 的回复:]

引用楼主 ikone 的回复:
在华恒的S3C6410开发板上写查询式ADC驱动,我发现启动AD转换后ADCCON的最高位ECFLG始终为0,按手册中的说,转换结束后应该为1不是吗?我运行这个程序接收的值一直是固定的0x1ff,也不对 貌似AD没有工作 设置如下:
ts_base= ioremap(S3C2410_PA_ADC,0x20);
writel(0x00, ts_base+S3C……
[/Quote]
不过我现在不考虑触屏 ADC本身无法工作 难道是硬件问题 查查看好了
IKONE 2010-12-20
  • 打赏
  • 举报
回复
tmp = S3C2410_ADCCON_PRSCEN | PRSCVL(adcdev.prescale) | ADC_INPUT(adcdev.channel);
后面掉了一句writel程序中我有写的 现在就是没有开始转换啊
ENABLE_START不清0,ECFLG不置1
谭海燕 2010-12-17
  • 打赏
  • 举报
回复
[Quote=引用楼主 ikone 的回复:]
在华恒的S3C6410开发板上写查询式ADC驱动,我发现启动AD转换后ADCCON的最高位ECFLG始终为0,按手册中的说,转换结束后应该为1不是吗?我运行这个程序接收的值一直是固定的0x1ff,也不对 貌似AD没有工作 设置如下:
ts_base= ioremap(S3C2410_PA_ADC,0x20);
writel(0x00, ts_base+S3C2410_ADCTSC);
wri……
[/Quote]


ADC驱动要处理好ADC电路和触屏冲突问题。
你的代码我没怎么看。

但是以前的驱动是要卸载的。

其中ADC和触屏的冲突问题尤为重要。

很多板子是ADC和触屏使用的同一个转换电路。

导致ADC转换的时候,触屏无法使用。
asmlearn 2010-12-17
  • 打赏
  • 举报
回复
既然AD都不工作,就应该先查查硬件电路对不呀

4,468

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 内核源代码研究区
社区管理员
  • 内核源代码研究区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧