1、问题背景
配置Uart使用DMA收发数据时,使用逻辑分析仪查看回环波形正常,发送Buffer中可以看到数据,接收Buffer中读取不到数据(数据都是0),且Uart模块MCAL配置没有发现错误。
2、调查分析
将另一个工程的Mcu配置导入到这个工程发现Uart通信正常,但是Can模块发送报文会失败,原来工程MCU给CAN分配的频率是4M,将PLAT时钟通过分频改回4M后,发现CAN发送报文正常了,Uart通信又接收不到数据了。
3、解决办法
请教大佬得知修改CAN时钟频率后,时钟频率修改为60M后,要想让CAN的波特率配置为500K,需要配置以下参数计算得出:②=60M/①/(③中4个数据的和)。
要CAN发送报文的采样点为80%,还需要通过简单计算,修改以下配置,使得前三位数据相加之和除以四位数总和为0.8。
4、BSW配置
将STM0_CLK时钟修改为60M,需要将BSW的EcuCpuClock也修改为60。
这里改成60。
5、疑问
为什么Uart时钟选择的时钟是SlOW,但是修改PLAT时钟频率后Uart好用了?