电子说
AD程序是模仿别人已有的程序的,在这基础上修改,结果调试了有一个星期左右,怎么调也调试不出来,最后在老师的点拨下,找到了原因,一方面是调试的方法不对,另一方面是对datasheet的理解不够。具体有几个方面:
一.调试方法不对,我是自己写了程序,然后把自己的程序往人家那里改,写的很乱,如果出了错误,那么不好找,可能是多个错误,不好检查。
二.调试没有一个条理性,应该学会分析,写程序的时候应该先分析软件的错误,如果软件没错误,再分析硬件的错误,而我调试的时候感觉很乱,没有一个正确的顺序。
三.最终我找到了是哪个函数出了错误,却怎么也调不出来,还是对datasheet的理解不够,就是当SCL处于高电平的时候,SDA是有效的,哪个在前,哪个在后,时序乱了,时序没有对好,导致读不出来数据。
错误一:
Right:void slave_NOACK(void)
{
SDA = 1; //
SCL = 1; // 这个顺序是有讲究的,如果SCL在前的话,那么这条时序前的SDA也是有效的,如果前面的SDA是低电平,会导致一个跳变。
delayNOP();
SDA = 0;
SCL = 0;
}
Wrong:void slave_noack()
{
SCL=1;
SDA=1;
delayNop();
SDA=0;
SCL=0;
}
错误二:IIC总线初始化没加,如果不加,导致可能IIC可能正在处于工作状态,AD的时序也会被打乱。
Right:iic_init(); //I2C总线初始化
PCF8591_ADC(0x04);
if(systemerror == 1) //有错误,重新来
{
iic_init(); //I2C总线初始化
PCF8591_ADC(0x04);
}
void iic_init()
{
SCL=0;
iic_Stop();
}
下面是关于AD转换设计中的基本问题整理,总共有82条,比较长,睡觉前有催眠功效!
1.如何选择高速模数转换之前的信号调理器件;如何解决多路模数转换的同步问题?
ADC之前的信号调理,最根本的原则就是信号调理引起的噪声和误差要在ADC的1个LSB之内。根据这个目的,可以需要选择指标合适的运放。至于多路ADC同步的问题,一般在高速ADC的数据手册中都会有一章来介绍多片同步问题,你可以看一下里面的介绍。
2.在挑选ADC时如何确定内部噪声这个参数?
一般ADC都有信噪比SNR或者信纳比SINAD这个参数,SINAD=6.02*有效位数+1.76,您可以根据这个公式来确定您选择的ADC能否符合您的要求.
3.如何对流水线结构ADC进行校准?需要校准哪些参数?
一般来讲,ADC的offset和gain error会比较容易校准。只要外接0V和full scale进行采样,然后得到校准系数。另外,如果需要作温度补偿的话,一般需要加一个温度传感器,然后利用查表的方式来补偿。
4.对ADC和DAC周围的布线有哪些建议?
ADC和DAC属于模拟数字混合型器件,在布局布线时最重要的是要注意地分割,即模拟地和数字地的处理问题。对于高采样率的器件,建议使用一块地。而低采样率的器件,建议模拟数字地分开,最后在芯片下方连接在一起。
其他的布局布线规范与其他器件的是一样的。
对于具体的器件,一般会有评估板的Layout图可供参考。
5.模数转换器的精度与噪声系数之间有什么必然的联系吗?
低速模数转换器的精度用峰峰值分辨率,有效值分辨率来表示。在ADI一些Sigma-delta ADC的芯片资料里都会列出不同情况下的有效值分辨率指标。高速模数转换器的精度可用SNR,SNOB来表示,这些指标也可在资料中找到。
但一般ADC的指标中不会有噪声系数(NF)的指标。
6.如果采用了外部模拟切换开关,那么这个开关总是存在一些电阻的,必然引起一些误差,那么我想问一下有没有什么办法能减少这些误差,分别描述一下用硬件的方法与用软件的方法。
你可以选择电阻很小的开关比如ADG14**系列。如果是开关是做通道切换的,在后级加一个运放跟随就可以了。如果是做量程切换,只能选择电阻很小的开关,同时注意开关的平坦度和温度漂移参数,如果系统精度要求很高,那就只能做软件校正或者选择可编程放大器如AD8250/1/3等。
7.将AD7710的输入端与自身的地短接后,再读取数据时,其AD转换值跳动比较大,通过说明当中的几种校准方式,都没有解决?频率已经在25Hz上了。不知如何解决?
请确认电源和基准的稳定性,在频率为25Hz,增益为1的条件下,看数据手测上Table II可知其有效值分辨率为21.5bit,那么其实际的峰峰值分辨率为21.5-2.7=18.8bit,也就是说如果有5bit码在跳就是正常的。
8.请问ADC的输入和传感器相连,如何将传感器输出信号本身的干扰排除?
如果传感器输出是共模干扰,需要加仪表运放如AD8221/0等滤除。如果是差模干扰,加滤波器就可以滤除。
9.我要设计一个16路的数据采集系统,每路的采样率为100K,16BIT,请问一下,我要采用什么样的AD芯片,另外,AD转换器的输入通道比较少,要选择什么样的外部多路模拟切换开关?另,对模拟切换开关的选择有什么要求,要关注哪些参数。
我们没有16bit和16通道的ADC,您可以选择用两片AD7689,16bit 8通道。或者选择16:1的ADG1206.要注意导通电阻,注入电荷,导通时间等。
10.一个12位的高速模数转换器能不能降低以及如何降低到8位来使用,因我们的系统精度只需要8位,高了反而有害。
你在读取数据的时候,只需要读8bit即可。
11.有一些ADC集成有抗混叠滤波器,请问有什么好处?
一般抗混叠滤波器指的是ADC前端的滤波器,而sigma-delta ADC内部会集成一些陷波器,来实现工频50Hz和60Hz陷波,总的好处就是ADC有更好的抗噪声性能。
12.请问怎样才能降低相邻通道相互间的干扰?
在布局布线时可以考虑在相邻通道间加地屏蔽。
13.想设计高精度校准仪表,如直流电压输出(毫伏级),能不能推荐几款芯片?请问怎样消除伴随的量化噪声?如何保证ADC的精度,AD转换的满量程即是电源电压,对于单电源供电,零点的确定和量程都与电源电压有关,如果电源电压波动势必导致转换的误差,电路中如何解决,特别对小信号的采集.请问什么是DAC的输出静态误差?怎样提高数模转换器中电阻或者电流源单元的匹配程度?在给ADC供电时,数字地与模拟地之间是否需要串接小电感?
1)ADI的运放,仪放产品种类很多,最好把详细的指标要求列出来,这样比较容易找。
2)ADC的量化噪声是固有的,没办法消除。
3)ADC的电源对测量精度有直接的影响。所以要选择高精度低噪声的电源信号,且在布线的时候也要注意避免干扰。
4)一般手册里会分别给出zero error,gain error等等,不知道具体问的是哪一个,或者可以举一个具体型号的例子。
5)这应该是DAC内部结构的问题,一般来讲,我们不关心内部电阻或电流源的绝对值,只关心它们之间的比例,现在的工艺可以很好地保证这个。
6)一般来讲,用0欧姆电阻连接就可以了。
14.ADC的内部增益越大,其产生的噪声也越大,专家能说说两者之间的原理是什么?
ADC内部的PGA增益越大,本身PGA的噪声会增加,另外ADC输入噪声被放大的越多。所以ADC内部增益越大,分辨率越小。
15.电源纹波对转换精度的影响?
如果ADC有PSRR这个指标,可以使用这个指标去算电源纹波对ADC的影响。如果没有,一般基准源都有这个指标,你可以使用基准源的PSRR去算对ADC采样的影响。
16.数据转换器在布线长度、通信串扰和匹配电阻等方面是如何设计的?
高速ADC会考虑这些问题。尤其对于LVDS接口的ADC,尽量保证一对信号的布线等长等距,放置端接电阻。这方面的布局布线最好是参考评估板来做。
17.ADI产品高速数模转换最大速度能达到多少?采样频率大了是不是稳定性会下降?
我们的DAC的最大速度能达到2.5GHZ,它是AD9739电流输出型的,这不会影响到稳定性。
18.ADC的标称的位数很高,但是实际中末尾的几位会被内部噪声而淹没,我在挑选ADC时如何确定内部噪声这个参数?
对于高精度的ADC,一般来讲都会给出一个有效分辨率的参数,也就是器件可以达到不跳码的位数。另外在设计中还有考虑电源,参考电压的噪声,以及ADC前端调理电路引入的噪声。需要把这些噪声控制在ADC的1个LSB之内。
19.评估ADC的时候,因为评估SNR,比较困难,所以我一般会考虑评估在接地时候的跳码程度来比较两种同类ADC的差异,这种评估方法科学吗?有没有更科学的方法?有没有具体的文档?
实际上对于高速ADC来说,应该是加一个高精度的基准信号,而后用ADC采样,再做FFT分析来评估SNR。而对于高精度的ADC来说才是您用的办法,可以参考我们的应用笔记AN-835。
20.如何理解压摆率这个指标?为什么要对电压变化率做限制?
举个简单的例子,如果压摆率不够,那么就是实际的输出跟不上输入信号的变化,这样对信号的处理就会有失真。
21.开关电源的纹波对12位以上的ADC的影响有多大?是否需要为ADC部分单独处理电源纹波?
高精度的ADC,比如16位及以上的ADC,不建议使用开关电源来供电。
22.请问使用高功效开关稳压器替换传统的LDO稳压器电源对高速模数转换器有没有负面影响?对产品寿命有何影响?
在高速ADC场合,一般对电源的纹波和噪声有较高的要求。开关电源效率比较高,但是有较大的纹波和噪声,会对系统的精度有影响。而高速场合对SNR,SFDR要求比较高,所以选择LDO会比较好。
23.关于运算放大器的阻抗匹配在设计中,需要如何注意?
只有在高速的情况下才需要考虑阻抗匹配。
24.电源精度会导致ADC的精度提不上去吗?
有可能。具体要看你ADC的位数和PSRR这个参数。如果位数很低如10bit,你用再低噪声的电源也只能是10bit精度。但是16bit系统,你如果使用噪声很大的电源,会使得系统精度不能达到16bit。
25.AD前抗射频干扰滤波器一般应当达到什么样的性能指标呢,比如截至频率,滚降 ?
这取决于您的实际应用,当然理想情况下是截至频率等于有效的输入信号,而滚降特性是无限陡峭,但实际上没有这样的滤波器,且越接近理想情况,成本会越高,要折衷考虑。
26.如何抑制输入"毛刺"?
加滤波器抑制,或者是对采样结果做数字滤波。
27.有什么好的建议,使用软件来提高ADC的精度与位数?
请注意参考和电源的质量,同时还需要注意layout来防止噪声引入。
28.请问对于ECG信号的AD转换需要有多大的分辨率?可以推荐几款型号吗?
取决于ECG的信号链。如果信号链中为AC隔离,这样信号可以被放大很大,比如放大1000倍,这样ADC的选取12位~16位。如果信号链为DC隔离,这样信号不能被放大很多,一般增益为10,这样ADC的位数就得选的大些,18位~24位。
ECG产品会有相应的标准,即ECG产品最小能分辨多小的信号,ADC的选取与此也有关。
29.我设计的一个基于FPGA的DDS系统中使用的芯片是AD9777,请问在电流足够的情况下,系统电源设计中是否可以将DA芯片与FPGA芯片共用3.3V数字电源,以达到简化电源设计的目的?
可以 。
30.随着数字视频信号应用的越来越普及,数模转换器在视频方面会不会无用武之地,乃至被淘汰?
数模转换器是不会被淘汰的,因为最终都是要将数字信号转会人们能所识别的模拟信号。
31.恶劣环境下(高温下),ADC的供电电源怎么设计?一般DC-DC很难达到+85摄氏度,ADI是否有相关的参考设计?
选择合适的器件,DC-DC能工作在85度,关键是你选择合适的器件和合适的设计,使得系统的温升在其标定的范围,如加风扇或者散热片,多个器件并联提高电源效率等。
32.我在使用ADuC841的A/D时,采集的数据偶尔会时零,为什么?如何解决?
这种情况要用示波器监测输入信号,看输入端是否真的发生跳变了,如果没有请仔细检查ADUC841的数据读取程序。
33.请问把一个直流信号加到转换器输入端时,怎样确定输出端应该出现的数码数目?
一般来讲,根据计算公式,Vin/Vref=code/2^N. N为ADC的位数,Vin为输入电压,Vref为参考电压。如果是有负电压,需要考虑输出码字的类型,比如二进制补码等等。绝大多数ADC的数据手册中都会给出一个图来说明这个问题。
34.AD7710使用时,噪音过高。如何使用说明书当中的校准?在布线过程当中如何做比较合适?
建议参考芯片的评估板来做Layout设计。
35.请问怎样尽量减小系统噪音对ADC的影响?
尽量减少输入噪音(可以差分输入的ADC),减小电源噪音。设计合适的滤波器等。
36.如何确定温度对基准的影响以及多最终转换精度的影响 ?
基准芯片资料中会有相关温度对基准影响的温度系数指标,一般为几个ppm/°C。
一般ADC芯片资料没有参考电压随温度变化对ADC性能影响的测试参数。
37.如何实现对高速ADC的THD测试?
实际中是加一个高精度的基准源,而后用ADC采样,再做FFT分析,具体请见AN-835上面的介绍。
38.有什么办法可以减少开关电源的噪声对ADC的影响?
加入LC滤波,合理的layout如模拟地数字地分开。如果还不行,只能加低噪声的LDO。
39.如果ADC的传递函数线形度比较差,如何进行校准,有没有通过验证比较科学的方法?是否可以举例说明?
一般情况下都是做线性校正的,如果校正后还不能满足要求,那建议采用分段校正的方法。
40.相对于单端,差分有很多优势,但是还是有很多单端的ADC,差分模式有什么弱点吗?
和单端的输入相比,外围的电路相对复杂一些。
41.请问在高速数据采集系统设计中,我们怎样来确定采样率和存储器带宽?
采样率由待处理信号的频率决定。存储器带宽由采样率和处理器能力来决定。
42.请问AD前抗射频干扰滤波器一般应当达到什么样的性能指标 ?
这取决于您的应用,理想情况下就是只让有效带宽内的信号通过,但滤波器设计很难达到理想情况,所以要折衷考虑。
43.如果对视频信号进行数模/模数转换该如何选择转换器,它的关键性规格是哪几个方面呢 ?
主要是要看您所需要转换的视频信号格式,需不需要做色彩空间转换。是普通的并口接口还是HDMI的接口。
44.ADC的输出延时主要受什么因素的影响?
这是由ADC的内部参数决定的,具体要看不同型号的数据手册。
45.请问如何减小截断误差和增益误差?
对一个特定的ADC来说,它的Offset误差和Gain误差基本是一定的。但是Offset误差和Gain误差是可以通过软件校正消除的。
46.采集的数据中总是有错误的代码,有何种方法能够消除此错误代码?
要先确定错误代码是ADC输出错误还是MCU读取错误。如果是前者,那得看系统的设计是否合理,布局布线是否合理。
47.开关电源的地是否需要和ADC的模拟地分开吗 ?
ADC的模拟地通过一点接入开关电源输出滤波电容的地会减小电源纹波对ADC的影响。
48.PSRR指标指什么?
指的是电源电压抑制比。
49.最近我鉴定一只双电源ADC。 我将待测转换器的输入端接地, 并 且在LED 指示灯上观察其输出的数码。 令我非常惊奇的是为什么我所观察到的输出数码范围不是我所期望的一个数码?
导致这个问题的原因有很多种:输入信号源的范围,参考电压源的值,噪音的影响等等。
50.ADC的量化噪声为什么没办法消除?
因为采样不是理想,而是无限逼近的概念。
51.实际应用中INL、DNL那个指标对用户更有意义?
这两个指标都比较重要。
52.模拟地与数字地最后的连接方式应该是怎么样的?
尽量将模拟地和数字地分开,为了避免相互的干扰。但是在高速的ADC应用中,数字和模拟要求共地。
53.我现在需要安装节省空间的数据转换器,认为串行式转换器比较适合。为了选择和使用这种转换器,请问我需要了解些什么?
串行接口的ADC一般转换速度比较低,在10M以下,但是封装,读取会比较方便。你可以先看看你需要的位数,以低于10M的速度能不能满足你的要求。另外关键是MCU和ADC的接口,是使用模拟的SPI还是MCU的标准SPI接口。
54.对ad的时钟信号有什么要求?需不需要做一些温度、抖动方面的补偿?
不需要做补偿。ADC中内部已经做了相关的补偿。
55.对于单板结构,板子上有多个比如9片ADC的话,本讲座是建议ADC跨接模拟地和数字地?是否意味着要多点接地?
ADC需要接在系统的模拟部分。
56.什么时候用FPBW,什么时候用小信号BW,数据手册并没有把所有情况告诉我们。
FPBW与芯片的Slew Rate有关,当要把信号放大时,如果Slew Rate跟不上,输出信号就会失真。FPBW = SlewRate/2piVp,Vp为输出信号的电压。
57.请教专家,在采用R、C隔离时,若R较大会影响后面的ADC,若C较大会影响相位,具体设计时应该如何选择呢?
可以考虑在RC滤波后加一级运放做buffer.
58.数据转换器中最常见的错误主要有哪些?如何避免
ADC转换会受到Noise的影响,如果ADC转换的结果与理论值大概相等,那么可以通过在同一个输入电压上读多次转换结果,将转换结果平均来得到更为准确的值。
59.我们要的带宽为100hz,结果用的是带宽为1khz的放大器,如何有效解决抗干扰问题?
一般来讲,ADC前端需要加一个滤波,滤掉把有用带宽以外的噪声。
60.影响ADC的重要参数有哪些?如何在pcb设计中避免?
考虑ADC前端的抗混叠滤波器的设计,阻抗匹配,输入输出的阻抗。
61.在高速模数转换时,是不是不能以芯片内部的参考电压为准,都需要外部参考,有没有可能芯片内部参考电压也达到一般外部参考那么稳定?
使用内部参考电压,由于参考电压在ADC转换时会sink/source电流,这会影响ADC的电源电压,进而影响ADC的SNR。一般系统精度要求很高的场合常使用外部参考。
62.目前ADI公司的ADC芯片中,分辨率高于14bit,最高速率能达到多少?双通道,分辨率高于14bit,最高速率能达到多少?
14bit的ADC最高为150MSPS。
63.传递函数不连续(DNL不连续)会导致什么问题?如果应用中遇到这个问题,我应该如何处理?使用软件补偿吗?如果不连续,为什么芯片不能从硬件角度去做补偿?
DNL不连续会导致丢码,这个问题没有办法在外部做补偿,这是ADC本身 的特性。ADI的ADC都是保证没有丢码的问题存在的。
64.开关电源对数据转换出错的影响有多大?开关电源的频率建议多高最为合理?
你可以加LDO或者LC滤波器减小电源纹波和噪声。一般ADC的PSRR会比较高,位数低的ADC如10bit对电源要求不高,但高位数的ADC如16bit对开关电源要求比较高。开关电源频率选择和功率,效率有关。普通的开关频率一般选择为100KHz-300KHz。
65.从信噪比角度来看,要实现多路AD,是采用单个多路AD的芯片实现?还是用多个个单路的AD实现好?
采用多个ADC芯片效果会更好。因为单芯片多通道的芯片,通道之间会有干扰。
66.怎样判断转换错误是干扰信号引起的还是转换本身引起的?
对于高频的要用高精度的基准源,高精度的可以将输入端短路来测试ADC本身上的噪声特性。
67.为了降低高频干扰,开关稳压器后面使用LDO是否有好处?
会有好处。你可以选择低噪声的LDO。
68.那种类型的A/D在进行布线的时候,要特别的注意电磁干扰的抑制?有什么好的建议?
一般来讲ADC不需要考虑这个,而是在电源端考虑电磁干扰抑制。如果用到高速的数字器件或者时钟的话,可以考虑加一个屏蔽罩。
69.陷波器和抗混叠滤波器有什么不同?
陷波器就是将某一频率下的干扰做足够的衰减,可以理解为带阻滤波器,而抗混叠滤波器可以理解为低通滤波器。
70.噪声混叠是否会导致ADC的SNR下降?
混叠是由于采样率<2倍的信号频率是产生的,这是会使得滤波器的设计变得困难,从而噪声的滤除变得困难,SNR也会受到影响。
71.由LDO向ADC供电改为使用开关电源向ADC供电时,对EMC性能的影响?
这要看你开关电源的EMC处理情况,如果开关电源EMC/I处理不好,系统就有EMI/C问题。由LDO向ADC供电改为使用开关电源向ADC供电可能会影响ADC的精度。
72.如果测量的是很低频率的模拟信号(小于10Hz),直接单端测量和将信号转换成差分信号后驱动ADC相比,哪种方式测量精度会更高?
你可以直接单端测量就可以。
73.脉冲模式的A/D时序控制复杂吗?是A/D内部实现的吗?
对于用户端来说,都是用CPU控制ADC的通信接口,这并不复杂。
74.为了消除噪声干扰,如何才能尽量减少AC环路 ?
布局布线的时候要尽量考虑信号线的回流路径,使得回路面积尽量小。
75.现在想做一个项目用到16位的高速ADC,但是前端模拟信号本身的噪声比较大,会浪费掉3~4位的精度,为此你们觉得选择16位的ADC有必要吗?
如果输入信号本身的噪声只要12位,而且无法通过处理来降低噪声,那么就不要使用16bit的ADC。
76.一般ADC封装上都有很多模拟电源引脚,比如AD7656就有8个AVcc,在设计PCB时,如何把他们连接到电源上?
最好是有一层电源平面,就近将AVCC接到电源上,注意电容的分布。新设计建议使用AD7656-1,与AD7656相比,-1电源引脚上需要的电容较少。
77.专家是否能推荐几款低温漂的Rail-to-Rail的高精度运算放大器呢?
AD8628、AD8638
78.现在的系统中很多都是单一的开关电源供电,那么对于系统中ADC、DAC的数字电源、模拟电源、数字地、模拟地,要如何处理?
数字电源可以通过一个磁珠后从模拟电源引出。如果允许,尽量使用分离的电源芯片为模拟和数字电源供电。
79.有些ADC会在时钟输入端加入高频抖动源,这样做能够提升adc的有效位数么?
可以用单电源供电,但要注意AD620的Reference需要接到0.5的电源电压处。
80.请问采样时如何才能避免信号的丢失?
只能通过提高采样率或滤波。
81.如何区分干扰是从前端进去的?还是从电源进去的?
对于高精度的应用,可以把输入端短路来测输出,如果干扰依然不变,就应该是电源和参考等引起的。
82.高速ADC和低速ADC在干扰的处理上有什么不同吗?
相同的是加入去藕电容来消除干扰。layout可能有些不同,高速ADC一般采样地平面,就近接地,低速一般是数字地模拟地分开,单地接地。
全部0条评论
快来发表一下你的评论吧 !