1)分辨率
2)转换速率
3)量化误差
4)非线性度
5)偏移误差
6)输入电压范围
ADC:并行ADC(flash型),逐次逼近型(SAR型),流水线型(Pipeline 型),插值结构和折叠插值雀耐型、
A/D转换器的选择
1)A/D转换器的位数
2)确定A/D转换器的转换速率
3)确定工作电压和基准电压
4)确定模拟输入信号
使用注意事项
1)A/D转换器的启动一般需要外部控制启动转换信号,一般由CPU提供。启动转换信号分脉冲控制启动和电平控制启动。
2)电流突然增大。加强电源稳压滤波,
3)电源端串一个100~200欧姆的限流电阻
高精度低频A/D转换器——-ADS7813,
适合直流或低速信号处理
ADS1212
高精度,宽动态范围特性
高精度音频A/D转换器—纳岁并——ADS8505
高精度及采样频率范围
高速A/D转换器———ADS805、ADS5423
高速高精度
PCB布局,输入信号走线尽量远离干扰源和噪声,干扰源和噪声源主要包括输出信号和时钟信号;时钟输入端也要保护,避免噪声和干扰导致时钟沿的抖动。为减少由输出数据瞬时转换产生的高频噪声,处理输出数据走线,减小输出负载电容。注意散热处理,芯片底部有金属镀层,将金属镀层连接到地,并在周围多打一些过孔和地平面相连。
D/A转换器
分类
1)电阻串型DAC 2)乘法型ADC
4)电流引导型DAC
性能指标
1)分辨率 2)转换速率 3)输出电压
选型
1)确定所需DAC类型
2)确定所需的分辨率和建立时间
3)选择并设计DAC的模拟输出端
4)选择并设计DAC的参考电压输入端
5)选择并设计高速DAC的时钟
6)DAC的数据输入
常用DAC
高精度D/A转换芯片——TLV5616
高速D/A转换器———DAC90X
高速D/A,时钟信号频率一般很高,布线洞迹时应让时钟信号传输线尽量短,必要时可以采用屏蔽线传输,以降低时钟干扰。
DDS集成芯片,性能优于FPGA内设计的频率合成单元。
AD9845芯片输出是由内部集成的D/A芯片输出,且为电流输出,使用要接入负载电阻进行I/V转换,并需要对输出的正弦波进行低通滤波,以除输出信号中夹杂的主要为时钟噪声的高频噪声。电源和地之间的去耦电容,数字地和模拟地的单点供地,大面积接地等措施,以避免引入噪声。
电压控制增益(VCA)芯片,适用频率范围宽,增益平坦度高。适用于宽带,可增益范围大,增益设置准确。一般VAC芯片增益控制电压为直流电平。选低速高精度D/A芯片,并靠近VAC芯片的增益控制电压输入管脚处增加去耦电容组,以减少交流信号对输入波形的影响,提高信号信噪比。
...
VAC824
AD8367 dB线性的电压控制增益放大器
用于射频范围内的宽带增益可调放大器。
开关电容滤波器芯片LTC1086
有源滤波器芯片
MAX297低范围滤波
我不是神人,但我希望可以帮你解决问题,呵呵……首先,我有个小问题,你要求算的是2+4+8+……+100,是不是2的1次方,2次方,3次方?如果是,那应该是2+4+8+16+32+64,怎么有还加100呢?或者你笔误,应该是2—100之间的偶数相加呢?
好,下面来解决你的问题:
1.用ADS1.2运行你的加法程序,要注意一点就是ADS不能直链接运行C遍出来的程序,要用汇编代码启动。下面是启动代码startup.s文件(我空间有关于这个代码的分析,你可以去看看):
IMPORT |Image$$RO$$Limit|
IMPORT |Image$$RW$$Base|
IMPORT |Image$$ZI$$Base|
IMPORT |Image$$ZI$$Limit|
IMPORT Main 声明C程序中的Main()函数
AREA Start,CODE,READONLY 声明代码段Start
ENTRY标识程序入口
CODE32声明32位ARM指令
Reset LDR SP,=0x40003F00
初始化C程序的运行环境
LDR R0,=|Image$$RO$$Limit|
LDR R1,=|Image$$RW$$Base|
LDR R3,=|Image$$ZI$$Base|
CMP R0,R1
BEQ LOOP1
LOOP0 CMP R1,R3
LDRCC R2,[R0],#4
STRCC R2,[R1],#4
BCC LOOP0
LOOP1 LDR R1,=|Image$$ZI$$Limit|
MOV R2,#0
LOOP2 CMP R3,R1
STRCC R2,[R3],#4
BCC LOOP2
B Main 跳转到C程序代判差码Main()函数
END
2. 启动代码写好后,再编写C代码,运行你的程序(按你的意思算)
#define uint8 unsigned char //这两个宏定义是ADS里面防止数据溢迹冲好出带的
#define uint32 unsigned int
#define N 100
uint32 sum
// 使用加法运算来计算2+4+8+……+N的值。
void Main(void)
{ uint32 i
sum = 0
for(i=0i<=Ni=i*2)
{ sum += i
}
while(1)
}
3. 这两个程序合在一起才是是完整的ADS实现程序,希望可以解决你的困惑。姿铅
祝你进步!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)