This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

am335x linux上的ADC驱动问题

Other Parts Discussed in Thread: AM3358

 有找到TI提供的触屏驱动,可以参考来学习ADC驱动,

目的:使用的是AN0 和AN1作为AI输入。读出 AN0 和AN1的值。

(1)时钟设置 (引脚配置)

(2)地址映射

(3)控制寄存器       (配置:TSCADC_CNTRLREG_TSCSSENB)

 for(i=0;i<2;i++)
 {
 tscadc_writel(ts_dev, TSCADC_REG_STEPCONFIG(i),
 TSCADC_STEPCONFIG_AVG_16 | TSCADC_STEPCONFIG_FIFO1|0x11 ); // 允许循环采样??
 tscadc_writel(ts_dev, TSCADC_REG_STEPDELAY(i),
 TSCADC_STEPCONFIG_OPENDLY);
 }
//这步该怎么配置才是正确的呢?? 问题一: 上面AN0 和AN1的值都写入了FIFO1吗??

但是查看 了代码发现有很多的疑惑不懂。 

 fifo0count = tscadc_readl(ts_dev, TSCADC_REG_FIFO0CNT);
 fifo1count = tscadc_readl(ts_dev, TSCADC_REG_FIFO1CNT);
 readx1 = tscadc_readl(ts_dev, TSCADC_REG_FIFO0); //FIFO0 和 FIFO1 分别又128 ADC值。
 ready1 = tscadc_readl(ts_dev, TSCADC_REG_FIFO1);
 printk("cnt0=%d,cnt1=%d,FIFO0=%d,FIFO1=%d\n",fifo0count,fifo1count,readx1,ready1); 问题二: 
假如: 我改变AI0 的电压 一种:0V 一种5V。,它的FIFO1值不是应该变化很大。。还是怎样??
打印出来的值,都不知道是什么来的。。
  • 您好,我最近一直在搞AM3358ADC的问题,将你的驱动编写后出现两个问题一个是adc_init()函数中的空指针问题,将adcbaseaddr在init函数中ioremap可以解决,另一个问题 是创建设备节点后调用read函数直接coredump,dmesg查看报non-linefetch(0x1028)错误。请问关于ADC的驱动问题你解决了吗?可否指导一下,谢谢!