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 团队:
我希望这封电子邮件能让您满意。
我目前在处理 Motorware 项目 Lab05g、遇到了有关 ADC ISR 频率的问题。
我的项目路径如下:C:\ti\motorware\motorware_1_01_00_18\sw\solutions\instaspin_foc\boards\drv8301kit_revD\f28x\f2806xF\projects\ccs\proj_lab05g
我已成功将自定义代码合并到 proj_lab05g 中。 可以在以下位置找到自定义代码的参考示例:C:\ti\c2000\C2000Ware_5_00_00_00\device_support\f2806x\examples\c28\adc_soc
我的自定义代码的 ADC ISR 频率为222kHz。
不过、在使用构建合并代码项目 Lab05g 时 RAM_LINK_F28069F.cmd 中、我注意到 ADC ISR 频率仍然为222kHz。
随后、当我尝试使用构建项目时 F28069F.cmd 用于闪存编程 时、ADC ISR 频率意外降低一半至111kHz。
我正在寻求有关调试这一问题的帮助。 能否就如何解决此差异提供指导?
感谢您关注此问题。
此致、
Ram Singh
您好!
您要使用什么来触发 ADC 转换?
一旦您更改了链接器文件、一切都以半速运行吗?
此致、
Ben Collier
尊敬的 Ben Collier:
ADC 触发源为 PWM
2.是的,每件事情都运行一半的速度。
谢谢
Nitish,
在 lab05顶部、您将看到以下内容:
#ifdef 闪存
#pragma CODE_SECTION (mainISR、"ramfuncs");
#endif
这会将主 ISR (在本实验中看起来与 ADCINT 连接)放入 RAM 中、以便执行速度将处于 CPU 全速、并且代码是针对闪存选项构建的。
这是因为闪存无法在90MHz 的 CPU 满时钟下运行、但在此速度下需要3个等待状态。
当您从 SOC 示例中添加额外代码时、是否创建了新的 ISR 函数/处理程序? 如果是、并且未修改任何其他内容、则 ISR 可能位于闪存与 RAM 中、并且执行速度会更慢。
我不确定这是否解释了您看到的确切内容、您提到 ADC ISR 频率是一半、如果 ADC ISR 中有大量代码、则带宽可能会限制 ADC 本身、即 ISR 不是在下一次 ADC 转换就绪时完成。 您需要自行判断触发 ADC 的频率。
由于两组代码都使用 ePWM 来触发 ADC SOC、我不能想到 ADC SOC 本身将是 RAM 与闪存的一半、这就是我要从上面开始的原因。
此致!
Matthew
Nitish,
闪存寄存器将处于其默认状态、即最大等待状态= 15。 ~、~运行等效于 Δ V 22MHz (正确 WS =3)的 Δ V 5MHz。 代码和数据仍将被正确读取、只是速度要慢得多。
听起来一切都很好、但如果你需要在 ISR 中花费更少的时间、你可以查看我前面提到的关于加载到闪存并从 RAM 运行的内容、以获得真正的90MHz 执行。
此致!
Matthew
您好、Matthew:
感谢您的解释。 您能详细解释一下吗 等待状态 通过一些示例来更好地理解? 我不是很清楚。 请解释一下。
谢谢
Nitish Sharma
尊敬的 Nitish:
Matthew 将于下星期一6月24日前离职、请预计会延迟回复。 对此造成的不便、我深表歉意。
此致、
Delaney
Nitish,
F28069器件上的嵌入式闪存无法在90MHz 的最大 CPU 时钟时间(11.1ns)下运行、但最短存取时间为36ns。 这是器件 DS https://www.ti.com/document-viewer/TMS320F28069M/datasheet#GUID-72E3405E-30D3-401E-B08F-D6978CD6CAEF/TITLE-SPRS698SPRS6982410中指向它的链接
为避免使 C 编译器在代码中插入手动延迟、我们提供了可为每个闪存读取添加等待状态的逻辑、以满足上述最小值 上面的链接还有一个表、其中列出了每个 CPU 时钟的 WS 设置;但如果我们进行一些快速计算、则得到 Flashws =(36ns/11.1ns)-1 = 2.24、并且我们四舍五入到下一个整数、即 WS 设置为"3"。
如果我们将 CPU 频率降低到80MHz、则在同一等式中我们可以看到 WS 设置为"2"、依此类推。
在启动/上电时、器件会将该字段复位为0xF 的最大 WS、以确保无论初始时钟速率如何都满足闪存时序。
请告诉我这是否会清除一切。
此致!
Matthew