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

使用 UART IDLE 中断接收不定长数据

[复制链接]
STMCU小助手 发布时间:2022-7-29 16:14
前言 + O+ L& y7 ~, q
在串口通信过程中,我们常常用到接受和发送中断,相信大家都不陌生。这里还有另一个非常有用的中断可能被大家所忽略,即总线空闲状态 IDLE 中断。当一帧数据传输结束之后,总线会维持高电平空闲,此时会触发 MCU 的 IDLE中断。在本文中,将介绍使用该中断来进行不定长串口数据接收的办法。通过该中断,可以省却用于检测数据传输是否完成的判断操作。5 C) w$ D* y+ ]! }8 v8 y

, X/ n! ^4 }% v7 k+ P* l8 S实验环境 / ^. \+ k: v& O' d
•STM32F411RE-NUCLEO! F# i* X  j8 W2 r
•STM32CubeMX
3 k! `' o2 h" E& U/ ~) A4 I: g" X  v2 r4 X% Z: w! v2 z

" J4 \4 T8 V' W  f3 [8 E总线状态分析
3 Z9 E4 m8 O  y下图是发送 0xAA 0x55 的所抓取到的波形。从图中我们可以看到在发送该帧之前和之后,总线时钟处于 IDLE 状态。4 [4 i/ m, H; L) `0 y; p
在该帧中,字节与字节之间,没有 IDLE 状态出现,即不会出现 IDLE 误触发的情况。
+ {3 }' G; u* M9 r4 g! q: S) m4 W6 _9 H$ M4 g$ \! x7 e" r* Z+ \
WZK_Y[DSKQ{%8O31NRD%S.png + _8 M2 e( n. O. `
9 D1 D4 Y2 V8 q  [! A
不定长数据接收
, ~: ]2 o' N$ E8 c5 g6 v  [- R本次制作的工程是基于 HAL 库的。在原生的 HAL 库中,并没有集成 IDLE 中断的处理。所以,在本文我们介绍的方法中,需要修改一些库文件来实现。1 t6 c; r% e5 [/ |" L9 X( u

+ |# H  Q0 a, y0 a使用 STM32CubeMX 生成实验工程
. [8 X' o* ~8 v工程的配置如下图:8 ^) o0 V4 P, h7 v: m1 Y
1. 系统始终配置为 100MHz
9 y3 M8 _4 O7 f# |/ \3 N; T2. 配置 USART2 为 Asynchrones,管脚配置为 PA2,PA3。
" q5 q1 H5 l' n4 `& Y+ n3. USART2 参数:9600Bits/s, 8bits, None,1Stop
4 [: n) o/ @* O3 ^& o8 I8 a" F" A1 T- u' L$ X4 e/ l
P~KJ4AJTL4LV4({X2NUNM.png 4 K# `% z( @- V' ~$ g8 N5 C6 S
0 r2 u& J. h2 s
为了方便打印接收到的相关信息,需要对生成的工程做如下修改来映射 print 函数。; ]0 j1 {( U8 k9 a8 @
main.c-声明
  1. #ifdef __GNUC__; Z. A1 W+ y" a' w; j9 h
  2. /* With GCC, small printf (option LD Linker->Libraries->Small printf* j5 O( M3 g9 S: J: m
  3. set to 'Yes') calls __io_putchar() */$ E2 E. _- k2 a( @( `/ x
  4. #define PUTCHAR_PROTOTYPE int __io_putchar(int ch)) N; J! U% o( K7 |8 j! X
  5. #else
    . J1 T6 f. v2 B: z' t% M
  6. #define PUTCHAR_PROTOTYPE int fputc(int ch, FILE *f)
    8 X  M9 }; k- O- }8 `0 h# u' }: A
  7. #endif /* __GNUC__ */
复制代码

: {: L# s& T2 i6 j+ V1 A9 }4 B
. A& J+ L, |( p完整版请查看:附件

, A4 U4 n0 k) `6 o, p2 G; x. @1 R& _

2 Q8 ^3 |) f( H& k) U& C

LAT0534_UART_IDLE中断使用_接收不定长串口数据.pdf

下载

427.31 KB, 下载次数: 16

赞 收藏 评论0 发布时间:2022-7-29 16:14

举报

0个回答

所属标签

相似技术帖

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