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

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

[复制链接]
STMCU小助手 发布时间:2022-7-29 16:14
前言 - c" L; A1 V8 j9 U9 B( `
在串口通信过程中,我们常常用到接受和发送中断,相信大家都不陌生。这里还有另一个非常有用的中断可能被大家所忽略,即总线空闲状态 IDLE 中断。当一帧数据传输结束之后,总线会维持高电平空闲,此时会触发 MCU 的 IDLE中断。在本文中,将介绍使用该中断来进行不定长串口数据接收的办法。通过该中断,可以省却用于检测数据传输是否完成的判断操作。
' g$ F* C+ m, }" C: F- c, {$ X' a! V
实验环境 + b7 @* `; b4 N7 r$ ~- _
STM32F411RE-NUCLEO
. F- O3 }8 m/ B( A  J1 \: HSTM32CubeMX
8 F& ~9 X2 n6 X. S$ M7 ~, F4 f& `3 V# n; i, _+ o) h
* o' ^" m, U! S, T# W* k9 F
总线状态分析 % m# R* r: W( ^  `- J) B) j
下图是发送 0xAA 0x55 的所抓取到的波形。从图中我们可以看到在发送该帧之前和之后,总线时钟处于 IDLE 状态。
" B1 D: I! y( j! [. Q$ s, R在该帧中,字节与字节之间,没有 IDLE 状态出现,即不会出现 IDLE 误触发的情况。
  {8 g+ u$ \4 R# {
2 C( E8 r! ^1 f) d; _
WZK_Y[DSKQ{%8O31NRD%S.png % \0 ?2 J* P8 d- J+ q

/ ?. f/ X$ _" \$ _不定长数据接收 . f* R9 v: A: o0 C, S
本次制作的工程是基于 HAL 库的。在原生的 HAL 库中,并没有集成 IDLE 中断的处理。所以,在本文我们介绍的方法中,需要修改一些库文件来实现。
2 w* U# h  b. {. R* N
+ V+ [! g& l% O1 b& g使用 STM32CubeMX 生成实验工程
. y! c' {% S) e$ l5 Q! D工程的配置如下图:
+ ?' R6 T( P' X1 a# Y4 m1. 系统始终配置为 100MHz5 ^! g" @& R+ c# `" c
2. 配置 USART2 为 Asynchrones,管脚配置为 PA2,PA3。 4 I  _) X5 f/ p( m0 D; s7 N
3. USART2 参数:9600Bits/s, 8bits, None,1Stop . i* }6 f/ B3 _" O1 T; s& `

) y0 {' K; X- v2 L% P& k# [. T P~KJ4AJTL4LV4({X2NUNM.png + ?; D. H; M( I2 r9 Y2 z

! F6 [4 C+ K2 e+ N# s. a# s  o为了方便打印接收到的相关信息,需要对生成的工程做如下修改来映射 print 函数。) }1 O$ }  i6 W1 S
main.c-声明
  1. #ifdef __GNUC__/ \/ x6 ^7 P/ n; T
  2. /* With GCC, small printf (option LD Linker->Libraries->Small printf: h' J2 P- x* K4 U" ?3 m" v  C4 M
  3. set to 'Yes') calls __io_putchar() */
    % s4 P6 P9 u* i. F
  4. #define PUTCHAR_PROTOTYPE int __io_putchar(int ch)4 u' t/ q& v) Q! N' K9 |% j+ n
  5. #else: v. e9 k( o3 A7 L/ p& P
  6. #define PUTCHAR_PROTOTYPE int fputc(int ch, FILE *f)6 @& t; t, f  V- |  {+ C- m
  7. #endif /* __GNUC__ */
复制代码

& s. Y6 S& |% Q, m. p
! ^0 J& M) v- j4 e( ?: L完整版请查看:附件
) S; n% s. _, z% c% b
- Z0 x, o! e2 H1 O$ J
$ K$ U1 G+ Y3 G* ^

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

下载

427.31 KB, 下载次数: 12

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

举报

0个回答
关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版