主题中讨论的其他器件:、 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.
佩德罗