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.
尊敬的专家:
我在工作中根据 TI 示例对 ADC 模块进行编程。
以下是主要设置:
ADC_setPrescaler(ADCD_BASE, ADC_CLK_DIV_4_0); ADC_setMode(ADCD_BASE, ADC_RESOLUTION_12BIT, ADC_MODE_SINGLE_ENDED); ADC_setInterruptPulseMode(ADCD_BASE, ADC_PULSE_END_OF_CONV); ADC_enableConverter(ADCD_BASE); DEVICE_DELAY_US(1000); ADC_setupSOC(ADCD_BASE, ADC_SOC_NUMBER0, ADC_TRIGGER_SW_ONLY, ADC_SOC_NUMBER0, 15);
考虑到 VREFH=3V 和 VREFL=0V、 等于1.4989V 的直流电压在等于2044的数字代码中进行转换。
根据计算、正确的代码为2046。
请注意、器件校准是通过 TI 函数 ADC_setMode 进行的。
我在对 ADC 进行编程时是否执行了错误?
提前感谢您。
此致、
贝尼托
您好 Benito、
您能否检查您是否正确配置了 ADC 的基准电压? 请检查 SET_VREF ()是否配置正确。
此外、您能否提供提供提供给引脚的电压范围? ADC 转换结果取决于基准信号和将被转换的输入信号的精度。 结果仅关闭2个代码。 因此、我认为这是由于这些信号的准确性。
此致、
Meghavi
尊敬的 Meghavi Tank:
感谢您的支持。
您能否检查是否正确配置了 ADC 的基准电压? 请检查 SET_VREF()是否配置正确。
这个函数在哪里? 我 在 C2000Ware_3_04_00_00中找不到它。
F2802x 优先使用了一个类似函数(ADC_setVREF)、但 f2838x 缺少这个函数...
此外,您能否提供该引脚的电压范围? ADC 转换结果取决于基准信号和将被转换的输入信号的精度。 结果仅关闭2个代码。 因此、我认为这是因为这些信号的准确性
我 对应用于我的 F8388x 的 VREFHI 和 VREFLO 进行了实验测量。 实际值为3.0011V、而不是标称值 3V。
考虑到 VREFH=3V 和 VREFL=0V、 等于1.4989V 的直流电压在等于2044的数字代码中进行转换。
根据计算、正确的代码为2046。
[/报价]通过使用 VREFH=3.0011重复此计算、应在2045.7 (因此、约为2046)中转换直流电压...代码中的 ADC 结果为2044...
因此、 基准信号的精度 非常高、而微小的差异(0.0011V)不能证明2个代码的差异...
此致、
贝尼托
您好 Benito、
抱歉,请忽略 ADC_setVREF ()函数。 它不用于 f2838x 器件。
您能否提供3V 基准电压和1.49V 直流电压信号的图形? 我想检查这些信号的精度。 此外、转换结果会受到所用模拟输入通道的阻抗的影响。 引脚上的任何电阻和电容都将影响采样保持时间设置、该设置足以对 ADC 的内部采样电容器进行充电。 有关此主题的更多信息、请参阅《技术参考手册》第15.13.2节(选择和采集窗口持续时间)。
此致、
Meghavi
尊敬的 Meghavi:
感谢您的建议。
我使用高精度万用表测量了直流电压(1.4989V 和3.0011V)。
引脚上的任何电阻和电容都将影响采样和保持时间设置,该设置足以为 ADC 的内部采样电容器充电
我评估的采样时间必须高于70us。 实际上、我将 ACQ 分频器设置为20、而不是 TI 示例中报告的15。
ADC_setupSOC(ADCD_BASE, ADC_SOC_NUMBER0, ADC_TRIGGER_SW_ONLY, ADC_SOC_NUMBER0, 20);
不过、ADC 结果(2044)不会改变、
贝尼托
您好 Benito、
您能否尝试检查1.4989V 以外的其他输入电压、并告诉我结果?
此致、
Meghavi