我正在使用NHS3152设备通过 DAC 生成三角波形,并使用 ADC 测量该信号。配置如下
使用带有参数 ADCDAC_IO_ANA0_5 的函数 Chip_ADCDAC_SetMuxDAC 在引脚ANA0_5上配置 DAC 输出。
使用 Chip_ADCDAC_SetMuxADC 和参数 ADCDAC_IO_ANA0_3 在引脚ANA0_3上配置 ADC 输入。
一根电缆将 ANA0_5 物理连接到 ANA0_3,以使信号循环。
技术细节:
两个引脚的 IOCON 配置均设置为模拟模式 (IOCON_FUNC_1)。
DAC 在SINGLE_SHOT模式下运行,以在每次写入时更新输出,但切换到CONTINUOUS模式并不能解决问题 - 它只会稍微影响信号质量。
ADC 以连续模式运行,检测阈值设置为1500 (LOW_THRESHOLD)和2000 (HIGH_THRESHOLD)。
代码为三角波形(范围从 DAC_MIN_VALUE 到 DAC_MAX_VALUE)生成查找表 (LUT),并且 16 位计时器定期触发 DAC 更新。
尽管输出上可以清晰地观察到三角信号,但没有触发 ADC 中断,也没有记录 ADC 转换结果。
采取的故障排除步骤:
我已验证 MUX 选择功能(Chip_ADCDAC_SetMuxADC 和 Chip_ADCDAC_SetMuxDAC)使用正确的通道(ADC 为通道 3,DAC 为通道 5),如文档中所述(UM10876 手册第 9.4 章,图 90)。
我确认两个引脚的 IOCON 设置都正确设置为模拟模式(IOCON_FUNC_1),并且连接 ANA0_5 和 ANA0_3 的电缆已正确安装并具有公共接地。
我测试了修改 ADC 中断例程中 ADC 转换就绪标志(ADCDAC_INT_CONVERSION_RDY_ADC)的检查,但这并没有改变行为。
除了信号质量略有变化外,在 SINGLE_SHOT 和 CONTINUOUS 之间更改 DAC 模式对问题没有显著影响。
请求协助:
我希望您能帮助我了解:
考虑到它采用循环调度程序运行,通过模拟多路复用器使用两个不同引脚的当前配置对于 NHS3152 上的共享 ADCDAC 块是正确的。
还有一些其他限制(例如时序或配置序列问题)可能会阻止在此设置中触发 ADC 中断。
其他修改方法(例如以单次模式测试 ADC 或对 ADC 和 DAC 使用相同通道)可以解决该问题。
请参阅附件中用于此配置的完整代码。提前感谢您的帮助和建议。
问候,
托马斯
我想向您更新我所提交的票的情况。主要问题如下:
DAC 产生的三角波形太快。这个快速信号没有给 ADC 足够的时间来正确捕获值。
我错误地使用了中断处理程序的错误名称。它必须命名为ADC_IRQHandler(void)而不是ADCDAC_IRQHandler(void) 。
降低频率(或增加每个周期的样本数)并重命名中断例程后,ADC 开始按预期工作。