器件型号: TMS320F28P650DH
工具/软件:
您好、
是否可以在不复位 SDFM 模块的情况下动态更改 OSR?
谢谢
Geoffrey
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.
器件型号: TMS320F28P650DH
工具/软件:
您好、
是否可以在不复位 SDFM 模块的情况下动态更改 OSR?
谢谢
Geoffrey
您好、
我在 F28P65 LaunchPad 上完成了测试、并未连接到 SD_DATA 输入。 在 FIFO ISR 中、我 每 10 个样本重新配置一次 OSR 和 SDFM_setFilterOverSamplingRatio。 这是我在测试后进入内存的内容:

在 OSR 更改后、我会得到像复位后一样的转换值。
您能否确认我使用了正确的方法、这样便不支持动态 OSR 变化
谢谢
尊敬的 Geoffrey、Gildas:
听起来您的结果正在按预期使用动态 OSR 更新、没有任何明确说明这是不可能的、我建议您评估可能的 OSR 设置、并确保不需要调整其他相关位字段以适应给定的 OSR 值。
我还想确定它们是否是针对每次 OSR 转换而重置和重新配置整个 SDFM 模块的问题(因此 IP 是已知的良好/就绪状态)?
此致、
Zackary Fleenor
您好、Zackary、
我的目标是评估连续 Σ — Δ 滤波、并使用动态 OSR 更新来补偿来自外部基础时钟的 20MHz SD 时钟漂移、因此我需要使用滤波器的所有输出值、在更改 OSR 后具有 2 个不可用的值是不可接受的
我对 AM243x PRU SDFM 进行了相同的测试、正如您在 AM2434 中看到的:SDFM 外设 — 问题-基于 Arm 的微控制器论坛 — 基于 Arm 的微控制器 — TI E2E 支持论坛 该行为更符合我的预期(即使我失速有驱动程序问题)、更改 OSR 不会复位滤波器。
Gildas
您好、Zackary、
在 AM243x 上获得的结果是通过在断点期间手动更改寄存器内的 OSR 值。 我使用 Achala 提供的权变措施完成了相同的测试、不再需要断点、并允许通过 ISR 更新寄存器、现在、我使用 2 个不可用的值也遇到了同样的行为。 我假设 AM243 上的断点不会停止 SDFM。
因此、在 OSR 更新的情况下、F28P65 和 AM243 之间没有更多的差异。
感谢您的帮助、
Gildas
您好、Zackary、
我仍然在考虑动态 OSR 变化、需要进一步说明实际发生的情况。
我的目标是在 ISR 中实现连续滤波并更改 OSR。 考虑到最后一次采样的最后一位与 OSR 的变化、之间可能存在一些 Σ — Δ 输入位。 这几个位发生了什么情况、它们是否包含在新的中间、或者它们是否被兑现、以及在 OSR 更改后新的中间重新启动?
简单(但不现实)的例子,以确保我的问题是明确的:如果我启动 sinc1 与 OSR=32,第一个样本是计算位 1 到 32,第二个样本在位 33 到 64 ,第三个样本在位 65 到 96。 如果我在第三个 ISR 中将 OSR 更改为 16、这需要一些执行时间、当我写入新的 OSR 时、当前输入位可能是 100。 第四个样本是根据位 97 至 112 还是将位 101(OSR 改变后的位)设为 116 计算?
谢谢
Gildas