德州仪器的12位采样芯片ads1015调试
来源:互联网 发布:linux shell exit 1 编辑:程序博客网 时间:2024/05/01 19:32
一、使用背景
公司产品需要用到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调试
- SE4750 二维软解码在德州仪器Omap3平台的调试
- HX8357-C LCD 驱动IC在德州仪器平台的调试
- 关于AD芯片采样时序的说明
- 谈德州仪器(TI) MSP430 基于16位单片机的生态系列
- 德州仪器澄清:我们没说要退出移动芯片行业
- 德州仪器将为Arduino开源项目提供ARM芯片
- ADS1015驱动程序
- ADC采样芯片ADS7822使用方法
- MP3中音频采样和音频采样频率和位速的说明
- 音频采样和音频采样频率和位速的说明
- 音频采样和音频采样频率和位速的说明
- ARM7系列LPC2214芯片的调试报告
- stm32f207的外部ADC/内部温度传感芯片的多通道ADC采样配置说明
- 德州仪器的bug也碰到了
- 德州仪器TI CC2640R2F器件的命名规则
- 【DSP开发】回马枪要你命 德州仪器发布最强ARM芯片Keystone II
- 转接口IC ADV7280:CVBS转MIPI芯片 10位、4倍过采样 标清电视视频解码器,支持去隔行
- 【Apache Avro】quick start快速开始,示例教程
- 《编程珠玑》之位运算知识
- JS格式化日期
- 从资源加载Cimage
- MinGW安装和使用
- 德州仪器的12位采样芯片ads1015调试
- 无法将类型为“System.Web.UI.LiteralControl”的对象强制转换为类型“System.Web.UI.WebControls.Text
- Bluestacks --比谷歌安卓自带的模拟器快N倍的模拟器
- android gradle 自动动态构建多平台的包
- 我是如何快速学习android开发的
- android 剪贴板 ClipboardManager
- GNU C中不为人知的特色:__attribute__机制
- Android 12小时制式/24小时制式的表示方式
- JS获取本月第一天和最后一天