调试记录:时钟总线配置问题
有两台设备,主芯片都是用的STM32。都使用了TIM2进行数据通讯,其中一台设备的PCLK1配置为HCLK,另一台设备的配置为1/2HCLK。在测试过程中发现通讯不稳定,总会丢数据。于是查了一下数据手册,发现是总线时钟配置引起的。
解决方法如下:
图1:STM32F101xx medium-density access line block diagram
图1中可以看到TIM2挂载到APB1总线上。
STM32F101xx medium-density access line block diagram.jpg (22.08 KB, 下载次数: 0)
下载附件 保存到相册
STM32F101xx medium-density access line block diagram
2015-4-15 11:10 上传
图2 Clock tree
图2中可以看到TIM2并没有直接使用PCLK1作为实际时钟,而是根据APB1的分频系数时钟进行了调整。
Clock tree.jpg (26.95 KB, 下载次数: 0)
下载附件 保存到相册
Clock tree
2015-4-15 11:10 上传
当设备的PCLK1设置为1/2HCLK时,APB1时钟也是1/2HCLK。由于APB1的分频系数不为1,TIM2的时钟进行了2倍频,实际运行的频率也就是HCLK了。先进行2分频再2倍频理论上运行频率和HCLK一致,但由于硬件时钟结构将这样得到的结果和直接以HCLK频率运行不完全一致,最终导致设备间通讯不稳定。确定原因后,将两台设备的PCLK1都设置为1/2HCLK,可以正常通信。 |