一、使用背景

公司产品需要用到ad采样芯片,由于采样路数较多且分布比较分散,检测的是电平值,变化率较慢,所以想选择分辨率高、体积小、最好是iic接口的芯片。因为个人比较喜欢德州仪器这个公司,所以就先去TI的官网上查询了一番。一番查询,发现了ads1015芯片还是比较适合的,12位的分辨率,能有4路输入,iic接口。所以下载了该芯片的datasheet,仔细阅读一看,发现居然有更多惊喜!!这款芯片内置震荡源,内置参考电压源,而且内置PGA(可编程增益控制器),也就是说,在检测电平较小的情况下,通过调节PGA单元,可以适当将信号放大,这样以增加检测精度。去淘宝简单查询了价格,一片大概15元左右,心中一喜,就这么愉快地决定了。

二、调试过程

芯片回来后,第一时间拿到手里,芯片很小,引脚也很密。焊上板子后,就开始调试了。通过datasheet可知,这个芯片用的是标准的iic接口。我是用单片机GPIO模拟的iic口,去读写芯片。iic通信,首先要弄清楚器件的地址,ads1015设定地址的方式很巧妙。ads1015有一个专门的addr引脚,这个引脚可以分别和VDD、GND、SDA、SCL相连,分别可以得到4个不同的器件地址(详见datasheet)。地址确定后,就要开始初步调试,尝试读取芯片内部某个可读寄存器的值,看看读出的值是否和datasheet内部写的一致。

一开始iic的时序不对,浪费了一点时间。确定好iic时序正确后,尝试读取ads1015内部的寄存器。ads1015内部寄存器数量只有4个,分别是8位的pointer寄存器,用于指明要写的寄存器位置,16位的配置寄存器,16位的转换寄存器(用于存放转换结果),至于这些寄存器每一位的作用,详见datasheet(http://www.ti.com.cn/product/cn/ads1015)。

这里有个需要注意的地方,也是我调试花费最多的地方,就是,存放转换数据的寄存器有16位,而转换结果是12位的,而且是带有符号位的,是以二进制补码的形式读取的。数据寄存器的高12位是有效的,低四位不做数据用。问题就在这,datasheet里说明,系统上电之后自动复位,数据寄存器全部清零,置‘0’,在图表里,D0~D3的空格里填写的都是‘0’。见下图:

问题就出在这!这是说明这低四位,在任意时候读取出来都是0吗?这个文档里没有明确说明,但是按照描述的样子应该是的。所以,一开始我一直按照这一假设进行调试,因为,只要我读取这个寄存器,读到的最后四位都是零,就表明我的程序已经能够访问这个芯片了。但是,每次读取,后四位都不是0,这是为什么?我百思不得其解。没办法,拿来示波器,直接看波形!!

示波器看出,我读取ads1015,它确实有输出了,但是波形上看,最后四位并不是全是0,也不全是1,而且每次还不太一样。就在困惑之际,我想除了这个数据寄存器之外,还有其他可读的寄存器,比如配置寄存器config寄存器,接着我配置了几次不同的值进去,然后再读取这个寄存器,用示波器看ads1015输出的波形是与我配置进芯片的数据是一致的!!

得到这个结果,我踏实了许多,这说明我写的模拟iic通信协议是正确的,而且已经能够访问到芯片内部,那么既然文档没有明确说,低四位一定是0,那么有可能是不定的吧,但是不定的话,为什么不在对应的位置上打个“X”呢?直接写‘0’,给人感觉就是固定的。不管了,把读出数据转化成int型,然后通电加电压信号上去,看读出的值会不会跟着变化吧。

结果看到取出高12位后,发现器件输出的值就是对应的ad转换后的值,当然这里有个主意的地方,寄存器里存储的数据是二进制补码的形式,包含一位符号位,所以,在读取之后,直接在程序里将值赋给一个int型的变量,那么不用做转换,这个变量直接就是正确的数值了,直接可以参与数学运算等。

所以,这次调试最重要的是读取数据手册的重要性,特别是这类功能强大,模式多的芯片,偶然发现这个芯片在安卓源代码里有有专门的一份驱动,可见这个芯片并不是很冷门的,是一款很典型很强大的adc芯片。

最后希望这篇日志,对其他正在调试ads1015的朋友有帮助!

德州仪器的12位采样芯片ads1015调试相关推荐

  1. Quad Industries、Agfa等公司合作推出塑料12位RFID标签和带有丝印印刷电路的读出

    Quad Industries.Agfa.imec和TNO宣布展出一款塑料12位RFID标签和带有丝印印刷电路的读出系统.该系统集成了一个屏幕印刷天线和印制触摸用户界面,可实现在曲面上读取.该公司报告 ...

  2. 今年芯片行业最大收购案:亚德诺209亿美元收购美信,对抗行业老大德州仪器...

    边策 发自 凹非寺 量子位 报道 | 公众号 QbitAI 当AI.5G芯片成为行业热议话题时,另一块芯片战场正在开展一场吞并战. 今天,全球第二大模拟芯片厂商亚德诺半导体(Analog Device ...

  3. 主流芯片解决方案Ambarella的高清网络摄像机、德州仪器和控制海思

    (本文由四川艾普作为数码科技有限公司 苏斌.范清华 收集) 高清网络视频监控发展到今天.正的高清时代.诸多有实力的高清摄像机厂家的产品线也逐渐完好起来,高清网络视频监控的配套产品有更加丰富和成熟.与此 ...

  4. 芯片破壁者(十六):德州仪器的“罗生门”

    半导体领域最具"罗生门"特质的,应该要属德州仪器了. 自从淡出手机芯片市场之后,德州仪器的名号逐渐变得鲜为大众所知,但其实我们每一次打电话.上网.拍照等活动背后,都可能在与其制造的 ...

  5. 12位的ADC,16通道,2*8通道的输入多路选择器,两个采样保持器

    转https://zhidao.baidu.com/question/340306474.html 大致意思如下(芯片型号不一定正确,如有巧合纯属偶然): 16个模拟信号输入(接口) -> AD ...

  6. 一群中国芯片技术小球的奋斗故事系列:“中科融合的‘AI-3D芯片’追赶美国德州仪器DLP技术之产业和技术初探-part II”

    引子 人可能会爱上人工智能(AI: Artificial Intelligence)吗? 来自电影"HER"的剧照,主人公与AI相爱的故事 2013年,电影"HER&qu ...

  7. 【国产虚拟仪器】4 通道3.2GSPS(或者配置成2 通道6.4GSPS)采样率的12 位AD 采集FMC+子卡模块

    板卡概述 FMC_XM134 是一款4 通道3.2GSPS(或者配置成2 通道6.4GSPS)采样率的12 位AD 采集FMC+子卡模块,该板卡为FMC+标准,符合VITA57.4 规范,可以作为一个 ...

  8. 德州仪器TI芯片实时监控自动抢购

    跟大家分享一下怎么处理大量需求:实时监控德州仪器商品库存说到这里不得不提一下,德州仪器是世界第一大数字信号处理器制造商,半导体业务占整个公司的85%. 客户是做芯片炒货,他们基本上都是德州TI去下单. ...

  9. 德州仪器TI芯片自动下单抢购监控软件技术分析

    2011年4月5日,德州仪器(TI)和美国国家半导体(NS)宣布签署合并协议,TI将以25美元/股.总额约65亿美元的现金价格,收购国家半导体.本次收购将使业界共同致力于解决客户模拟问题的两个领导者实 ...

最新文章

  1. NIO详解(十一):线程间通信管道Pipe
  2. 64 oracle client,64bit oracle and oracle client.
  3. 0 重新学习Ubuntu -- 这一段没怎么学习
  4. 三分钟学会.NET Core Jwt 策略授权认证
  5. 51nod-猴猴吃香蕉【dp】
  6. elementui更改el-table表头背景颜色和字体颜色
  7. java中集合(List)的嵌套分配值、移除等操作
  8. React Native按钮详解|Touchable系列组件使用详解
  9. Redis集群Windows
  10. Halcon PDF文档(hdevelop_users_guide)学习总结之三——关于变量窗口的小知识
  11. 【语音识别】基于matlab GUI语音识别信号灯图像模拟控制(带面板)【含Matlab源码 757期】
  12. 微信公众号互助、开白群,小白报团取暖
  13. 大学计算机应用基础教学设计,大学计算机应用基础电子教案设计.doc
  14. go微服务调用报错too many colons in address
  15. HCNP——DR和BDR的概念
  16. JavaScript复习笔记(三)数组及数组API
  17. 体寒是不是天生的 体寒四个基本常识须知
  18. 保险行业防范网络犯罪新思路
  19. 冒烟测试回归测试UATSIT
  20. java 工作流 jbpm,J2EE工作流管理系统jBPM详解(一)(4)

热门文章

  1. T02_unity制作直升机起飞降落 c#
  2. css选择器有哪些?各种选择器优先级大小顺序
  3. 善用Bash history 命令
  4. MT4单线MACD指标的能量柱颜色的优化
  5. openni linux arm,OpenNI2 Arm-Linux下的安装配置
  6. [语音识别] 10 端到端语音识别
  7. imagick的简单使用
  8. 重庆计算机设计学校排名,重庆最新的计算机学校排名-涪陵创新学校方方面面做到你满意...
  9. 如何在unity中使用龙骨动画
  10. 调用 SSPI 失败,请参见内部异常。接收到的消息异常,或格式不正确。