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.
你(们)好
我已经在 具有 controlCARD 的实验套件上运行 C:\ti\c2000\C2000Ware_1_00_06_00\driverlib\f28004x\examples\timer 中提供的 CPU 计时器示例。
在 INT 函数 cpuTimer0ISR 上、引脚 GPIO04被切换、而不是对 INT 计数。
以下是我针对几个预期频率的测试结果:
预期的频率定时器;获得的频率
1 kHz;1 kHz
100 kHz;98-100 kHz
500 kHz;496-502 kHz
1 MHz;0.99-1.01 MHz
1.5 MHz;1.07 MHz
2 MHz;1.07 MHz
4 MHz;768 kHz
配置: 100MHz SYSCLK 频率
#define DEVICE_SETCLOCK_CFG (SYSCTL_OSCSRC_XTAL | SYSCTL_IMULT (10)| SYSCTL_FMULT_NONE | SYSCTL_SYSDIV (2)| SYSCTL_PLL_ENABLE)
#define DEVICE_SYSCLK_FREQ ((DEVICE_OSCSRC_FREQ * 10 * 1)/2)
#define DEVICE_OSCSRC_FREQ 20000000U
configCPUTimer (CPUTIMER 0_BASE、DEVICE_SYSCLK_FREQ、1000000.0/samplingFreq_Hz)
您能解释一下超过1 MHz 的限制吗?
谢谢
Yann
Yann、您好!
浏览您的数据并进行数学运算、问题如下:
每次 CPU 计时器过期并生成中断时、它都会进入 ISR 例程、在该例程中切换 GPIO 并清除中断、以便在下一次迭代时返回到 ISR 并切换 GPIO、您通过测量该 GPIO 来确认配置的频率。
在较高频率下、即4Mhz、CPU 定时器计数较低、即25与较低频率下的值(即1MHz)为100。 切换 GPIO 和清除中断的开销似乎大于25个周期、因此每次到期时都不会进入 ISR 以进行更高频率的配置、因此 GPIO 切换与配置的 CPU 定时器值不相关。 遗憾的是、在硬件中处理中断和切换 GPIO 的延迟是固定的、无法减少。 因此、使用 CPU 计时器生成精确脉冲时、将限制为较低频率配置。
相反、我们建议您使用 ePWM 来生成更精确的脉冲、而该脉冲不存在此类限制。
请告诉我们、如果您需要有关 ePWM 配置的帮助、您也可以参阅 TRM 以了解更多详细信息。
此致、
Nirav