工具/软件:
标题 :DEVICE_DELAY_US()产生的延迟比 TMS320F28388D 上预期的延迟更长
说明 :
我正在处理的 TMS320F28388D 从 2838x 系列开始。 我观察到了DEVICE_DELAY_US()宏的作用 不会产生准确的延迟 。
配置:
-
频率 :TMS320F28388D
-
磁芯 :CPU1(CPU2 已禁用)
-
外部振荡器 (XTAL) :25MHz
#define DEVICE_OSCSRC_FREQ 25000000U -
系统时钟 :200MHz
#define DEVICE_SYSCLK_FREQ 200000000U
问题:
使用DEVICE_DELAY_US(x)宏时:
#define DEVICE_DELAY_US(x) SysCtl_delay(((((long double)(x)) / (1000000.0L / \
(long double)DEVICE_SYSCLK_FREQ)) - 9.0L) / 5.0L)
我观察到以下不正确的延迟:
-
DEVICE_DELAY_US(100)可~Δ Q 174µs -
DEVICE_DELAY_US(1000000)(1 秒)可~μ s 1.57 秒
这里显示延迟为 高估了~57% 。
问题:
-
对于上述设置、此宏定义是否不正确?
-
如何正确计算 200MHz
SysCtl_delay()SYSCLK 下的延迟计数? -
这可能是由内部错误的假设引起的
SysCtl_delay()(例如,每个循环有多少个周期)?提前感谢您的支持。