Firefly开源社区

标题: ADC驱动 [打印本页]

作者: xyzhou    时间: 2015-7-23 14:57
标题: ADC驱动
求各位大侠指导,wiki上给的ADC计算公式Vref / (2^n-1) = Vresult / raw,跟在kernel ./drivers/power/rk30_factory_adc_battery.c中static int get_ref_voltage(struct rk30_adc_battery_data *bat)函数中的计算方式不同,在kernel中引用的adc的计算方式raw和2^n-1的位置是互换的,想知道是wiki上给的计算公式有问题吗?

作者: zhansb    时间: 2015-7-23 16:28
wiki上给的计算公式没有问题

用了这个公式计算出来的有问题吗?
作者: xyzhou    时间: 2015-7-23 16:37
计算出来的不对,不知道是 不是我驱动有问题,我贴下probe函数里面的代码
struct iio_channel *chan;
int val;
printk("%s:%s\n",__FILE__,__FUNCTION__);
chan = iio_channel_get(&pdev->dev,NULL);
iio_read_channel_raw(chan,&val);
printk("iio read channel is %d%d\n",chan->channel->channel,chan->channel->channel2);
printk("iio read channel raw is %d\n",val);
adc操作如上,ADCIN0悬空的情况下val数值大概是1023,ADCIN0给个3.3v电压的时候val数值大概是520左右,根据那个公式算出来的数值不对?
作者: zhansb    时间: 2015-7-24 14:22
注意给的AD电压不能超过参考电压
作者: shumanzhou    时间: 2015-10-14 11:17
xyzhou 发表于 2015-7-23 16:37
计算出来的不对,不知道是 不是我驱动有问题,我贴下probe函数里面的代码
struct iio_channel *chan;
int ...

你好 读出来一直是1023 是什么问题?还有参考电压可以更改吗?最大参考电压是多少?
作者: shumanzhou    时间: 2015-10-14 11:18
zhansb 发表于 2015-7-24 14:22
注意给的AD电压不能超过参考电压

http://developer.t-firefly.com/f ... 86&fromuid=1495
作者: shumanzhou    时间: 2015-10-14 11:19
zhansb 发表于 2015-7-24 14:22
注意给的AD电压不能超过参考电压

你好 读出来一直是1023 是什么问题?还有参考电压可以更改吗?最大参考电压是多少?
作者: zhansb    时间: 2015-10-15 08:45
参考电压是1.8,硬件连接决定的。
度出来是1023,需要去查一下实际到adc引脚的电压
作者: williamxu    时间: 2016-8-22 17:15
3.3v应该没有问题。




欢迎光临 Firefly开源社区 (https://dev.t-firefly.com/) Powered by Discuz! X3.1