主题中讨论的其他器件:、 TMS320F28388D
各位下午好!
我使用的是 TMS320F28388D 微控制器和 ADS8686S ADC 转换器。 我正在使用 ADS8686SEVM-PDK
我在编程如何与 ADC 通信时遇到问题、但最终还是能够做到。 我正在异步模式中使用具有微控制器 EMIF 的"并行字节"接口。
成功设置寄存器并读取结果后、我已使用信号发生器将转换器设置为输出转换结果。
在我将要展示的图片中、ADC 的配置如下:
- ADC 范围:+/- 10V
- LPF:15kHz
- SEQEN & BURST:两者都被禁用(手动)ç
- 转换的通道1 (A 和 B)
当直流信号连接到 ADC 时、它似乎工作正常。 这里有一些图片、您可以看到0-10V 信号是如何从中程((2^16)/2)移动至2^16 (我所执行的代码调整 ADC 读数、从而0-32768范围内的代码从-10V 变为0V、从32768-65536范围为0-+10V)。 DAC 的范围为0-3、3V、因此在直流电下、0至+10V 的信号从1、65V 变为3、3V。


直流信号
我遇到的问题是、当我输入一个正弦信号时、因为随着频率的变化、信号的振幅会增加或减少。 我曾尝试使用信号发生器来更改频率和振幅、它们是独立的、因此必须属于 ADC 转换问题。
正如您从以下照片中看到的。 I'am connecting a 15 peak to peak V (每个半周期7、5 peak)。 如您所见、当我以10Hz 的频率输入此值时、振幅为来自 DAC 的2.2V。 不过、如果我将频率增加到20Hz、幅度会降低、而当我将信号频率降低到3Hz 时、幅度会增加。



此外、我测试保持频率恒定并改变振幅、频率不变。 仅考虑与频率对应的振幅。
我真的不知道这件事发生了什么,但这是一个大问题。
我希望你能帮我。
我让你的代码:
GPIO_writePin(CONVST, 1);
GPIO_writePin(CONVST, 0);
tramaA = *punteroCS;
tramaB = *punteroCS;
tramaA=ajustetramaADC(tramaA);
tramaB=ajustetramaADC(tramaB);
signotramaA=tramaA>>15;
signotramaB=tramaB>>15;
if(signotramaA==0){
conversionA=tramaA+32768;
//conversionA = tramaA & 0xFFFF;
}
else{
conversionA=tramaA-32768;
//conversionA = tramaA & 0xFFFF) + 1;
}
if(signotramaB==0){
conversionB=tramaB+32768;
// conversionB = tramaB & 0xFFFF;
}
else{
conversionB=tramaB-32768;
// conversionB = ~(tramaB & 0xFFFF) + 1;
}
*AdcBufPtr1A++ =conversionA;
*AdcBufPtr1B++ = conversionB;
convA_DACA=(conversionA>>4) & 0xFFF;
convB_DACB=(conversionB>>4) & 0xFFF;
DAC_setShadowValue(DACA_BASE, convA_DACA);
DAC_setShadowValue(DACB_BASE, convB_DACB);
我让您看一下 AdsBuf 数组的图形、可以看到这种现象不是来自 DAC、而是来自自转换。
提前感谢您、
Br.
佩德罗


