STMCU小助手
发布时间:2022-2-12 19:01
|
问题现象 客户在产线批量生产测试 uart 的时候,发现有一部分出现了如 noise detect,framing err 等异常状态进入中断处理 原因分析 从这些出错的原因看起来,比较像是物理层的错误导致,因为如果是应用代码或是代码库的 bug,复现率应该会比较高,而不是大批量量产时出现的个例,所以还是从物理层考虑,因为是个例,所以基本排除 PCB 布线的问题和外围环境干扰的问题,通过和客户工程师沟通,发现 UART 使用的时钟源为 HSI,而客户也没有对 HSI 进行 CALIBRATION。 解决方法 如下寄存器 RCC_CR 中的 HSITRIM 就是对 HSI 时钟进行校准。 当使用 HSI 作为 UART 时钟源是,需要对其进行标定,而标定的方法是使用比较精确的 HSE 或者LSE,方法比较简单,如枚举 HSITRIM[4:0],也就 32 种可能(确切的说是 31 种,默认为 0 不进行调整),然后作为某个 TIMER 的时钟源,和 LSE 作为 TIMER 的时钟源进行比较,找到最近的那个HSITRIM 值写入寄存器即可,实现了对 HSI 时钟的校准。
总结 在出现异常的错误状态时,需要首先考虑的是时钟是否稳定,电源电压是否在合理范围内。 |
经验分享 | USART接收的数据怎么错位啦?
经验分享 | 基于STM32H7 UART 空闲事件及DMA传输示例
经验分享 | STM32G4 UART+TIMER+DMA应用示例
经验分享 | STM32H563 UART+DMA 2D功能演示
经验分享 | 基于STM32H563演示UART+DMA功能
【STM32U3评测】实现双通道串口通信系统
STM32G系列RS485自动收发控制以及自适应波特率实战
【STM32H7S78-DK评测】CoreMark移植和优化--兼记printf重定向实现方法及常见问题
【STM32MP135-DK】裸机移植shell
NUCLEO-U545RE-Q评测】3. 串口基本收发测试
微信公众号
手机版