全志科技
登录
直播中
陈文博
8年用户
994经验值
擅长:测量仪表
私信
关注
[问答]
LRADC应该如何设计按键的分压值呢
开启该帖子的消息推送
按键
输入电压
接口
不少朋友在使用LRADC可能会有以下几种疑问:
LRADC允许输入电压是多少?
支持检测最大/小的电压是多少?
LRADC最小能检测多大的电压变化?
LRADC的误差有多少?
LRADC应该如何设计按键的分压值?最多能接入多少个按键?
回帖
(1)
王玉洁
2021-12-29 12:01:48
LRADC详解
1、LRADC正常工作需要输入的电压是1.8V。但是,最大不能超过1.8V。
2、LRADC最大能检测的电压值是1.35V。所以即使输入的是1.8V,LRADC读出来的还是1.35V。最小能检测的电压是0V,即直接下拉接地。
(LRADC最大能检测的电压值每款芯片可能不一样,有的芯片是1.2V,详情查看user manual)
3、LRADC的分辨率为6bit,即64个数。当最大检测电压为1.35V时,每一档电压为1350/64=21.1mV,即为LRADC最小能检测电压变化范围。
4、分辨率为6bit,精度是为4bit,理论误差为±84mV。但是经过硬件中的误差纠正后,精度可为5bit,即理论误差为±42mV(这个是理论误差,实际误差要比理论的要小,经过测试最大为±30mV左右的误差)。
5、由于这个误差的存在,在将LRADC用作按键的时候需要注意,尽量把两个按键之间的电压间隔设计大一点,这里推荐最小间隔为**“120mV”**,并且不超过1.2V。(因为当电压超过1.266V后,可认为1.266V~1.35V之间的电压是不准确的。)因此,最大可以设计120mV/240mV/…1200mV等10个档位。
不过,一般在公版上都是设置5个按键档位,硬件设计可参考下图:
LRADC拓展
LRADC精度比较低,一般不推荐用其作为普通ADC使用的。那么,除了作为按键使用的话,还可以用作什么用途呢?
这里还推荐一种使用方式,许多客户可能需要在同个板子上使用多种方案,不同方案只有可能有些模块是不一样的,但是固件又只能出一种。这时候,就可以使用LRADC达到区分方案,从而加载不同dts适配各个方案的目的。
首先,可以在硬件中,不同的方案设置不同电阻上/下拉连接到LRADC,使得不同方案输入到LRADC的电压值不一样。比如说,方案A直接10k电阻上拉到1.8V,方案B通过10k电阻下拉到0V。那么,只需要在uboot里调用lradc读电压接口,再稍做判断即可知道当前硬件是属于什么方案,然后再加载不同dts。
lradc读电压接口代码,在uboot里的路径为:u-boot-2018/board/sunxi/sunxi_lradc_vol.c
首先是调用lradc_data_init()对LRADC进行一个初始化,然后再调用lradc_read_data(u32 reg_base)读取实际的电压值,详情使用方法可以参考下方的sunxi_read_lradc_vol(void)函数。
需要注意的是:
LRADC默认的采样频率要500Hz,即2ms采样一样,而电压data寄存器需要采样8次才能更新一次电压,所以一共需要至少16ms才能准确读取真实的电压。
因此,在调用LRADC初始化后至少30ms后,才能调用用lradc_read_data去读取电压。
LRADC详解
1、LRADC正常工作需要输入的电压是1.8V。但是,最大不能超过1.8V。
2、LRADC最大能检测的电压值是1.35V。所以即使输入的是1.8V,LRADC读出来的还是1.35V。最小能检测的电压是0V,即直接下拉接地。
(LRADC最大能检测的电压值每款芯片可能不一样,有的芯片是1.2V,详情查看user manual)
3、LRADC的分辨率为6bit,即64个数。当最大检测电压为1.35V时,每一档电压为1350/64=21.1mV,即为LRADC最小能检测电压变化范围。
4、分辨率为6bit,精度是为4bit,理论误差为±84mV。但是经过硬件中的误差纠正后,精度可为5bit,即理论误差为±42mV(这个是理论误差,实际误差要比理论的要小,经过测试最大为±30mV左右的误差)。
5、由于这个误差的存在,在将LRADC用作按键的时候需要注意,尽量把两个按键之间的电压间隔设计大一点,这里推荐最小间隔为**“120mV”**,并且不超过1.2V。(因为当电压超过1.266V后,可认为1.266V~1.35V之间的电压是不准确的。)因此,最大可以设计120mV/240mV/…1200mV等10个档位。
不过,一般在公版上都是设置5个按键档位,硬件设计可参考下图:
LRADC拓展
LRADC精度比较低,一般不推荐用其作为普通ADC使用的。那么,除了作为按键使用的话,还可以用作什么用途呢?
这里还推荐一种使用方式,许多客户可能需要在同个板子上使用多种方案,不同方案只有可能有些模块是不一样的,但是固件又只能出一种。这时候,就可以使用LRADC达到区分方案,从而加载不同dts适配各个方案的目的。
首先,可以在硬件中,不同的方案设置不同电阻上/下拉连接到LRADC,使得不同方案输入到LRADC的电压值不一样。比如说,方案A直接10k电阻上拉到1.8V,方案B通过10k电阻下拉到0V。那么,只需要在uboot里调用lradc读电压接口,再稍做判断即可知道当前硬件是属于什么方案,然后再加载不同dts。
lradc读电压接口代码,在uboot里的路径为:u-boot-2018/board/sunxi/sunxi_lradc_vol.c
首先是调用lradc_data_init()对LRADC进行一个初始化,然后再调用lradc_read_data(u32 reg_base)读取实际的电压值,详情使用方法可以参考下方的sunxi_read_lradc_vol(void)函数。
需要注意的是:
LRADC默认的采样频率要500Hz,即2ms采样一样,而电压data寄存器需要采样8次才能更新一次电压,所以一共需要至少16ms才能准确读取真实的电压。
因此,在调用LRADC初始化后至少30ms后,才能调用用lradc_read_data去读取电压。
举报
更多回帖
rotate(-90deg);
回复
相关问答
按键
输入电压
接口
方波发生器单电源供电,
分
压
法制造虚地,如何分析得到近似的基准
值
2024-06-30
3158
stm32F0芯片通过ad采样
压
值
ad
值
不正常
2018-10-17
3680
阻容
分
压
器的原理是什么?
2020-03-11
2909
请问想用AD管脚检测
按键
。初步设想是通过检测该管脚的中断然后检测AD,电路是不是采用电阻
分
压
2017-05-24
2698
电阻
分
压
取电压
值
出问题,不知道问题出在哪?
2016-08-01
5853
我何时使用电压调节器与
分
压
器?
2018-08-27
2993
STM32F405测电阻
分
压
不准确
2019-11-12
3084
ADE7758有效
值
寄存器数值计算公式?
2018-11-27
2671
请问AD7606如何通过电阻
分
压
扩大测量范围?
2023-12-06
299
用比例法测大电阻加AD8221后电阻
分
压
改变不成比例
应该
怎么调整
2019-01-11
3352
发帖
登录/注册
20万+
工程师都在用,
免费
PCB检查工具
无需安装、支持浏览器和手机在线查看、实时共享
查看
点击登录
登录更多精彩功能!
首页
论坛版块
小组
免费开发板试用
ebook
直播
搜索
登录
×
20
完善资料,
赚取积分