主题中讨论的其他器件: TMDSCNCD28069
最近、我购买并开始使用 TMS320F28069微控制器。 但是、我遇到了 ADC (模数转换器)功能方面的问题、需要帮助。 尽管已按照提供的规范声明了 ADC、但我仍然面临一个持续的问题。 即使在校准 ADC 并应用偏移调整之后、即使没有输入信号、程序初始化时的初始 ADC 值也会保持在1860。 尽管不断更新 ADC 值、但该问题仍然存在。 非常感谢为解决这一问题提供任何指导或支持。
This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
最近、我购买并开始使用 TMS320F28069微控制器。 但是、我遇到了 ADC (模数转换器)功能方面的问题、需要帮助。 尽管已按照提供的规范声明了 ADC、但我仍然面临一个持续的问题。 即使在校准 ADC 并应用偏移调整之后、即使没有输入信号、程序初始化时的初始 ADC 值也会保持在1860。 尽管不断更新 ADC 值、但该问题仍然存在。 非常感谢为解决这一问题提供任何指导或支持。
您好!
我已连接到 SOC14上的 GND、但结果仍然是1860、这显然是错误的。 我不知道如何使 ADC 正确读取0V。 我正在使用计时器中断来获取 ADC 结果、而不是使用 ADC ISR 来获取结果。
除了我的程序之外、我还使用了可用的示例来获取 ADC 传感器 TEMP 结果、此处是结果。 我的室温目前是25摄氏度、而 ADCRESULT0上读取的温度为40摄氏度。
非常感谢、请帮助我。
希厄
Hieu,
有关这些信息、请参阅控制卡用户指南。 其中包括说明、或者您可以从原理图中了解如何完成。
我已经连接到了 SOC14上的 GND 但结果仍然是1860,这显然是错误的。 我不知道如何使 ADC 正确读取0V。 我使用定时器中断来获取 ADC 结果、而不是使用 ADC ISR 来获取结果。
为了确认这一点、您要将由 SOC14转换的 ADC 输入通道 A0连接到 GND? 并且您看到接近1800的值?
此致、
本·科利尔
是的、我要将 ADC 输入通道 A0连接到 GND 并查看值1860。 这是 ADC 的设置代码。 我不知道为什么会这样。 我使用了两个套件:台风 Hil DSP100接口3.1和 Docking_stn USB-EMU 来尝试、但结果是相同的。 我有2个 TMS320f28069芯片、并在同一个代码上尝试使用这两个芯片、以避免由于一个卡损坏而导致错误、但结果是相同的。 我认为我的代码有问题、但我不知道如何修复、因为我只使用了 TMS320F28069
void ConfigureADC(void) { EALLOW; AdcRegs.ADCCTL1.bit.ADCBGPWD = 1; // Power up bandgap reference AdcRegs.ADCCTL1.bit.ADCREFPWD = 1; // Power up reference buffer AdcRegs.ADCCTL1.bit.ADCPWDN = 1; // Power up rest of ADC AdcRegs.ADCCTL1.bit.ADCENABLE = 1; // Enable ADC AdcRegs.ADCCTL1.bit.ADCREFSEL = 0; // Select interal BG AdcRegs.ADCCTL1.bit.VREFLOCONV =1; EDIS; DELAY_US(1000); // Delay for 1ms to allow ADC time to power up EALLOW; AdcRegs.ADCCTL2.bit.CLKDIV2EN = 1; // ADC CLK Div2 enable AdcRegs.ADCCTL2.bit.CLKDIV4EN =0; // ADC CLK Div4 enable AdcRegs.ADCCTL1.bit.INTPULSEPOS = 1; // Set pulse positions to late AdcRegs.ADCCTL2.bit.ADCNONOVERLAP = 1; // eNABLE OVERLAP OF SAMPLE EDIS; } void SetupADC1(void) { // Select the channels to convert and end of conversion flag EALLOW; AdcRegs.ADCSOC14CTL.bit.CHSEL = 0; // SOC14 will convert pin A0 - > HIL AO pin 1 AdcRegs.ADCSOC14CTL.bit.ACQPS = 6; // Sample window is 7 SYSCLK cycles = ACQPS + 1 AdcRegs.ADCSOC14CTL.bit.TRIGSEL = 2; // Trigger on TIMER01 SOCA/C EDIS; EALLOW; AdcRegs.ADCSOC2CTL.bit.CHSEL = 8; // SOC2 will convert pin 8- > HIL AO pin 7 AdcRegs.ADCSOC2CTL.bit.ACQPS = 6; // Sample window is 7 SYSCLK cycles = ACQPS + 1 AdcRegs.ADCSOC2CTL.bit.TRIGSEL = 2; // Trigger on TIMER01 SOCA/C EDIS; } void SetupADC2(void) { // Select the channels to convert and end of conversion flag EALLOW; AdcRegs.ADCSOC3CTL.bit.CHSEL = 13; // SOC4 will convert pin B4 AdcRegs.ADCSOC3CTL.bit.ACQPS = 6; // Sample window is 7 SYSCLK cycles = ACQPS + 1 AdcRegs.ADCSOC3CTL.bit.TRIGSEL = 2; // Trigger on TIMER01 SOCA/C EDIS; }