Firefly开源社区

ADC驱动

81

积分

0

威望

0

贡献

技术小白

积分
81
发表于 2015-7-23 14:57:27     
求各位大侠指导,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上给的计算公式有问题吗?
回复

使用道具 举报

2580

积分

56

威望

46

贡献

社区版主

Rank: 7Rank: 7Rank: 7

积分
2580

优秀版主论坛元老

发表于 2015-7-23 16:28:12     
wiki上给的计算公式没有问题

用了这个公式计算出来的有问题吗?
回复

使用道具 举报

81

积分

0

威望

0

贡献

技术小白

积分
81
发表于 2015-7-23 16:37:33     
计算出来的不对,不知道是 不是我驱动有问题,我贴下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左右,根据那个公式算出来的数值不对?
回复

使用道具 举报

2580

积分

56

威望

46

贡献

社区版主

Rank: 7Rank: 7Rank: 7

积分
2580

优秀版主论坛元老

发表于 2015-7-24 14:22:23     
注意给的AD电压不能超过参考电压
回复

使用道具 举报

23

积分

0

威望

0

贡献

技术小白

积分
23
发表于 2015-10-14 11:17:42     
xyzhou 发表于 2015-7-23 16:37
计算出来的不对,不知道是 不是我驱动有问题,我贴下probe函数里面的代码
struct iio_channel *chan;
int ...

你好 读出来一直是1023 是什么问题?还有参考电压可以更改吗?最大参考电压是多少?
回复

使用道具 举报

23

积分

0

威望

0

贡献

技术小白

积分
23
发表于 2015-10-14 11:18:16     
回复

使用道具 举报

23

积分

0

威望

0

贡献

技术小白

积分
23
发表于 2015-10-14 11:19:26     
zhansb 发表于 2015-7-24 14:22
注意给的AD电压不能超过参考电压

你好 读出来一直是1023 是什么问题?还有参考电压可以更改吗?最大参考电压是多少?
回复

使用道具 举报

2580

积分

56

威望

46

贡献

社区版主

Rank: 7Rank: 7Rank: 7

积分
2580

优秀版主论坛元老

发表于 2015-10-15 08:45:02     
参考电压是1.8,硬件连接决定的。
度出来是1023,需要去查一下实际到adc引脚的电压
回复

使用道具 举报

76

积分

0

威望

0

贡献

技术小白

积分
76
发表于 2016-8-22 17:15:48     
3.3v应该没有问题。
回复

使用道具 举报

*滑块验证:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

友情链接 : 爱板网 电子发烧友论坛 云汉电子社区 粤ICP备14022046号-2
快速回复 返回顶部 返回列表