工具/软件:
大家好、我目前正在考虑为我们的项目实现 ADC 设计。
总之、将使用 ADC1-4。 每个 ADC 可能有4-6个通道要转换。 我们要进行过采样:转换所有通道4次、然后获取结果并后处理数据以计算所有转换的平均值。
其他信息:
- PWM 运行@ 40kHz、ADC 转换和控制代码运行频率为20kHz
- PWM0将生成 ADCSOCA 来触发所有 ADC 转换
- 在所有 ADC 过采样结束时、对结果进行处理以计算平均值、然后运行控制代码。 当前 ADC1 EOC5会触发中断 XBAR
似乎有几个解决方案,但都不理想。 TI 是否可以在此处提供最佳方法或提供其他实现方案建议?
###实施#1 (PPB 和中继器):
- 使用将中继器设置为 x4将所有 SOC 设置为触发
- 设置 PPB 以对最小值/最大值进行求和
- 设置 PPC OSINT 以生成 ISR 并运行控制代码
这种方法面临的挑战:
- 每个 ADC 只有4个 PPB。 一些 ADC 具有> 4个 SOC。 考虑到每个 ADC 需要大于4 PPB、这种方法是否可行?
- 仍需要跟踪剩余的 ADC 结果、以便在软件中完成数学均值计算。
###实现#2 (连续 DMA):
- 创建 ADC 结果存储器缓冲区。
- 设置最后一个 EOC 以生成 ADCINT1
- 设置所有 SOC 以进行连续转换
- 设置 DMA 以将所有 ADCRESULT 寄存器从 SOC0-SOCx 复制到最后一个 EOC 上的存储器缓冲区。
- 设置缓冲区填充时 DMA 生成中断。 (即4xSOC 结果) 、然后运行平均处理缓冲区并运行控制代码
这种方法面临的挑战:
- 参与得更多。
- ADC 在缓冲器满后如何停止转换?
- DMA 是否可以将所有 SOC 结果复制到自动递增的偏移量? (此处没有太多 DMA 体验)
- DMA 延迟是否类似于复制结果寄存器的简单 ISR?
- 由于 勘误表 i2355、我们需要多少个 DMA? 4 ADC x 2 = 8?
还有其他建议吗? 我希望在这里获得经验丰富的 AM263开发人员的一些建议。
感谢您的支持。