UART异常错误分析

问题现象
客户在产线批量生产测试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时钟的校准。
总结
在出现异常的错误状态时,需要首先考虑的是时钟是否稳定,电源电压是否在合理范围内。
永不止步步 发表于02-20 09:53 浏览65535次
分享到:

已有0条评论

暂时还没有回复哟,快来抢沙发吧

添加一条新评论

只有登录用户才能评论,请先登录注册哦!

话题作者

永不止步步
金币:67410个|学分:308217个
立即注册
畅学电子网,带你进入电子开发学习世界
专业电子工程技术学习交流社区,加入畅学一起充电加油吧!

x

畅学电子网订阅号