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

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

[复制链接]
STMCU小助手 发布时间:2022-7-29 16:14
前言
5 [! ?# R% [9 y4 _2 k8 I在串口通信过程中,我们常常用到接受和发送中断,相信大家都不陌生。这里还有另一个非常有用的中断可能被大家所忽略,即总线空闲状态 IDLE 中断。当一帧数据传输结束之后,总线会维持高电平空闲,此时会触发 MCU 的 IDLE中断。在本文中,将介绍使用该中断来进行不定长串口数据接收的办法。通过该中断,可以省却用于检测数据传输是否完成的判断操作。! _( J: H, K! y
+ m# O% O* H' A
实验环境
6 m( R% @  O& {' ^•STM32F411RE-NUCLEO
# s1 K" z- J, j) t•STM32CubeMX0 M; M& S* [% T. X
" ^! |% s3 A9 F5 h
# I0 Z& |8 P. `" V( _4 Y
总线状态分析 # e  Q* O8 q6 C) ?* q* E
下图是发送 0xAA 0x55 的所抓取到的波形。从图中我们可以看到在发送该帧之前和之后,总线时钟处于 IDLE 状态。( y) Q" T4 h# i" D3 i
在该帧中,字节与字节之间,没有 IDLE 状态出现,即不会出现 IDLE 误触发的情况。, W, ^% q$ I& N  y: v) O

' j+ ]; _) z5 \0 _; Q3 G4 |1 \
WZK_Y[DSKQ{%8O31NRD%S.png 5 ?# t, ]  P5 {, a- M2 S% x- J9 ]

: \$ u1 A1 w% K2 S不定长数据接收 9 `( u* Z3 S# Y$ Q, l1 b3 u
本次制作的工程是基于 HAL 库的。在原生的 HAL 库中,并没有集成 IDLE 中断的处理。所以,在本文我们介绍的方法中,需要修改一些库文件来实现。
# E  Y& K4 Q/ P7 Z  a7 F- c7 n0 Q9 _; l5 \1 l
使用 STM32CubeMX 生成实验工程
" I; J( n. H/ C( C工程的配置如下图:& Z$ t" l# P, r1 {1 z$ k
1. 系统始终配置为 100MHz2 R( ]1 z% h; j/ J, D  J! F" T
2. 配置 USART2 为 Asynchrones,管脚配置为 PA2,PA3。
2 ^! K4 U1 n1 ]5 f3. USART2 参数:9600Bits/s, 8bits, None,1Stop
- p% y& f* J" P) E/ q, {) q2 U! W' A0 C4 J) h2 R! D' ]- f
P~KJ4AJTL4LV4({X2NUNM.png
8 y# C2 a! Y: Q5 g& N" |9 _' w% ?( G, x2 O- _/ d) L, ?
为了方便打印接收到的相关信息,需要对生成的工程做如下修改来映射 print 函数。
* M5 @* l: z0 u1 f6 K! _4 kmain.c-声明
  1. #ifdef __GNUC__
    ! C. s# t% L1 B" v% F" t3 Y
  2. /* With GCC, small printf (option LD Linker->Libraries->Small printf
    5 N3 w0 E! ?$ ^2 ]) c! I
  3. set to 'Yes') calls __io_putchar() */
    ( Z+ S3 Z4 H' u  e6 \1 S" c
  4. #define PUTCHAR_PROTOTYPE int __io_putchar(int ch)
    ( N( o8 }/ z, p2 i
  5. #else8 o7 k+ Z# s3 G8 q& W
  6. #define PUTCHAR_PROTOTYPE int fputc(int ch, FILE *f)4 J' V4 P0 N6 R
  7. #endif /* __GNUC__ */
复制代码
' d. J( j! O  Q7 U, x

) B' B8 s; B2 q# U完整版请查看:附件
$ u: D$ B4 b5 q

8 u! r: b8 c- ]$ h, m9 b* e5 U3 ?* |$ D

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 手机版