[ADC]TI am4378 ADC采样设置问题(am335x类似)
这段时间在调试AM4378的ADC问题,发现采样到的数据和真实输入波形有所出入,比如输入是1ms的周期,50%占空比的信号,但是采样的数据描点总是偏差较大,数据如下
iio device number being used is
scan_size:
read_size:
ADC value: ADC AVG Value:
read_size:
ADC value: ADC AVG Value:
read_size:
ADC value: ADC AVG Value:
read_size:
ADC value: ADC AVG Value:
read_size:
ADC value: ADC AVG Value:
read_size:
ADC value:
而DTS的设置如下
status = "okay"
adc {
ti, adc-channels = <, , >;
ti, chan-step-opendelay = <0x0 0x0 0x0>;
ti, chan-step-sampledelay = <0xff 0xff 0xff>;
ti, chan-step-avg = < >;
};
采样目标:采样20次,2个周期,也就是2ms, 数据点均匀分布。
问题:在20次基本保持两个周期的情况下,opendelay+sampledelay+other cycles并不符合ADC 24MHz clock的情况,且20次采样并未均匀分布。经过在TI社区咨询发现存在如下问题:
- 如果不打算做采样平均,那么chan-step-avg不应该设置为1,而是0
- ADC计算频率并不是24MHz,而是3MHz
-------------------------------------------------------分界线----------------------------------------------------------------
首先, 从Documentation/devicetree/bindings/input/touchscreen/ti-tsc-adc.txt中可以查到如下信息
- opendelay maximum为0x3FFFF cycles
- sampledelay maximum为0xFF cycles
其次, 从TI的数据手册可以看到如下信息,最快的一次采样,在Sampledelay=1, opendelay=0的情况下,为15cycles
在者,从驱动文件driver/mfd/ti_am335x_tscadc.c中可以看到如下代码段
tscadc->clk_div = clock_rate / ADC_CLK;
ADC_CLK =
tscadc->clk_div会被写入ADC的DIV分频寄存器,也就是说,clock_rate = 24MHz并不是ADC的真实clock, ADC_CLK才是,也就是3MHz 。
基于以上信息,我们就有如下计算:
/3MHz = .33ns ADC clock period --> .33ns * ADC clocks = 5us sample period --> / 5us = 200ksps sampling rate
也就说,最快的ADC采样频率是200ksps,而且是所有通道。也就说1个通道,则采样频率为200ksps; 如果2个通道,则采样频率为100ksps, 以此类推.......
关于chan-step-avg变量
在driver/iio/adc/ti_am335x_adc.c中有如下代码段, 可知AVG默认是0,且当chan-step-avg=0时,寄存器数据为0。 (根据代码段,这里当chan-step-avg=1, 好像写到寄存器的值也是0,不知为什么最终效果确实像做了2个数的平均)
if(adc_dev->step_avg[i])
stepconfig = STEPCONFIG_AVG(ffs(adc_dev->step_avg[i]) - ) | STEPCONFIG_FIFO1;
else
stepconfig = STEPCONFIG_FIFO1;
和如下的Datasheet
所以基于上面的采样目标,有如下设置即可, 因为只采用channel6,(0x11D + 15cycles)*333ns=100us. 也就是2ms内完成20次采样。333ns由上面的ADC clock得出。
status = "okay"
adc {
ti, adc-channels = <>;
ti, chan-step-opendelay = <0x11D>;
ti, chan-step-sampledelay = <0x1>;
ti, chan-step-avg = <>;
};
打印结果如下, 可以看出来已经比较均匀了。
ADC value:
ADC AVG Value:
read_size:
ADC value:
ADC AVG Value:
read_size:
ADC value:
ADC AVG Value:
read_size:
ADC value:
ADC AVG Value:
read_size:
ADC value:
ADC AVG Value:
read_size:
ADC value:
ADC AVG Value:
read_size:
ADC value:
ADC AVG Value:
read_size:
ADC value:
ADC AVG Value:
read_size:
ADC value:
[ADC]TI am4378 ADC采样设置问题(am335x类似)的更多相关文章
- FL Studio采样设置之时间拉伸栏
今天小编将带领大家了解一下FL Studio采样设置页面中的时间拉伸栏知识,该栏目包含了和采样音频的时间拉伸相关的设置.其右边是一个时间伸缩方式下拉列表,里面列出了很多种类的伸缩方式,自动方式是默认的 ...
- stm32的ADC规则组通道采样顺序设置
先看一下固件库手册 再看一下手册上的例子: 有两个通道,,并且顺序如下
- 关于Stm32定时器+ADC+DMA进行AD采样的实现
Stm32的ADC有DMA功能这都毋庸置疑,也是我们用的最多的!然而,如果我们要对一个信号(比如脉搏信号)进行定时采样(也就是隔一段时间,比如说2ms),有三种方法: 1.使用定时器中断每隔一定时间进 ...
- STM32cube库配置双ADC的同步规则采样
http://www.stmcu.org/module/forum/forum.php?mod=viewthread&tid=605203&extra=page%3D&page ...
- STM32 ADC基础与多通道采样
12位ADC是一种逐次逼近型模拟数字数字转换器.它有多达18个通道,可测量16个外部和2个内部信号源.ADC的输入时钟不得超过14MHZ,它是由PCLK2经分频产生.如果被ADC转换的模拟电压低于低阀 ...
- 关于右移和除法的关系 , ADC采集电量 ,ADC采集MIC(麦克风)
//////////////////////////////////////////////////////////////////////////////////////////////////// ...
- TI CC2541的中断优先级设置.
实际看到的中断优先级设置是这样的:
- tween.js是一款可生成平滑动画效果的js动画库。tween.js允许你以平滑的方式修改元素的属性值。它可以通过设置生成各种类似CSS3的动画效果。
简要教程 tween.js是一款可生成平滑动画效果的js动画库.相关的动画库插件还有:snabbt.js 强大的jQuery动画库插件和Tweene-超级强大的jQuery动画代理插件. tween. ...
- android设置多个类似APP其中的一个为默认
05-09 17:01:13.547: I/ActivityManager(3003): START u0 {act=android.intent.action.VIEW cat=[android.i ...
随机推荐
- process credentials(三)
主要内容包括: 1.进程描述符中Realtime Mutex相关数据结构的初始化 2.子进程如何复制父进程的credentials 3.per-task delay accounting的处理 4.子 ...
- CSS3选择器之学习笔记
首先说first-child与last-child,这两个选择器很容易明白,就是父元素下的第一个子元素和最后一个子元素.而nth-child和nth-last-child则是父元素下指定序号的子元素, ...
- CSS艺术字
一.使用canvas自己画 1. 脚本部分 <script type="text/javascript"> function drawText() { var canv ...
- 基于axis1.4的webservice实例
1.准备工作: 概念:SOAP(简单对象访问协议).WSDL(web服务描述语言).XML(可扩展标记语言).axis(阿帕奇可扩展交互系统) (1) 下载axis1.4,将axis1.4中的 ...
- sqlserver数据库18456错误怎么解决?
1.以windows验证模式进入数据库管理器. 2.右击sa,选择属性: 在常规选项卡中,重新填写密码和确认密码(改成个好记的).把强制实施密码策略去掉. 3.点击状态选项卡:勾选授予和启用.然后确定 ...
- 如何在 Mac 上通过 Boot Camp 安装 Windows?
如何在 Mac 上通过 Boot Camp 安装 Windows? The following contents are chosen from the apple website, thanks f ...
- [hihoCoder] 第五十周: 欧拉路·二
题目1 : 欧拉路·二 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 在上一回中小Hi和小Ho控制着主角收集了分散在各个木桥上的道具,这些道具其实是一块一块骨牌. 主角 ...
- 如何设置Linux swap分区
看到不少朋友问linux下swap分区的问题,收集到一篇 不错的文章 ,分享下.什么是Swap?Swap,即交换区,除了安装Linux的时候,有多少人关心过它呢?其实,Swap的调整对Linux服务器 ...
- HTML5学习笔记(二):HTML基础学习之二
表单 表单用来传递用户数据,多用来与后端进行数据交互. 前端: <!DOCTYPE html> <html lang="en"> <head> ...
- 微信JSAPI 公众号支付 H5支付以及APP支付 WEBAPI接口开发测试
统一下单入口 调用该方法入口: public void WxPayAPI() { //string PayPrice ="99.9"; ////订单号 //string Payor ...