你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

【经验分享】UART 异常错误分析

[复制链接]
STMCU小助手 发布时间:2022-2-12 19:01
问题现象
( ^& [7 m1 u3 y' m, m! a+ \客户在产线批量生产测试 uart 的时候,发现有一部分出现了如 noise detect,framing err 等异常状态进入中断处理: L! q- S' Z( _7 t: Z, K; C1 V
原因分析
" p- N3 H# p3 z2 B从这些出错的原因看起来,比较像是物理层的错误导致,因为如果是应用代码或是代码库的 bug,复现率应该会比较高,而不是大批量量产时出现的个例,所以还是从物理层考虑,因为是个例,所以基本排除 PCB 布线的问题和外围环境干扰的问题,通过和客户工程师沟通,发现 UART 使用的时钟源为 HSI,而客户也没有对 HSI 进行 CALIBRATION。
6 |( \' R3 F( `& f! G0 G+ M: |# ~4 f. O9 S3 d" \4 R( M
解决方法
* }4 C6 |- E; U) a1 T! }如下寄存器 RCC_CR 中的 HSITRIM 就是对 HSI 时钟进行校准。5 E. ]8 \3 r& P2 A. R3 M0 I( w2 [( R& d5 O
当使用 HSI 作为 UART 时钟源是,需要对其进行标定,而标定的方法是使用比较精确的 HSE 或者LSE,方法比较简单,如枚举 HSITRIM[4:0],也就 32 种可能(确切的说是 31 种,默认为 0 不进行调整),然后作为某个 TIMER 的时钟源,和 LSE 作为 TIMER 的时钟源进行比较,找到最近的那个HSITRIM 值写入寄存器即可,实现了对 HSI 时钟的校准。$ p( \9 ^+ N4 h# ]

; x+ ^1 x- f, }9 z AD1{I_BMZYE@MIPRS_HD$F2.png
6 Z/ r9 w% d2 Z3 A# j
6 p* _# B3 e4 e! Y/ ^6 l, d" D' T# V
总结
  y# y' r2 Y5 f, z% S在出现异常的错误状态时,需要首先考虑的是时钟是否稳定,电源电压是否在合理范围内。2 U! W9 }! q. U

/ y4 \4 w0 S3 d1 ^" Y- W
赞 收藏 评论0 发布时间:2022-2-12 19:01

举报

0个回答

所属标签

相似技术帖

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
人形机器人运动控制、感知与智能配电
半导体创新技术与应用方向
EE架构与软件定义汽车
12V/48V 汽车智能配电(SPD)
区域控制单元(ZCU)与分区架构
关注我们
st-img 微信公众号
st-img 手机版