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

【NUCLEO-U083RC评测】ULP uart 定时器测评

[复制链接]
马晓天 发布时间:2024-6-19 15:03
  STM32U0系列微控制器中的ULP(Ultra Low Power)UART接口设计用于在低功耗应用中实现串行通信。
# n# _- N+ O" V# }硬件特性:
7 s: v: U8 P% A# J: t6 R5 B   超低功耗模式支持:ULP UART具备在低功耗模式下保持唤醒源的能力,允许在微控制器处于低功耗状态下依然能够接收数据或触发中断,从而快速唤醒并处理通信事件,有助于降低系统平均功耗。
% M" S& G! |% f) H6 m  M" s9 Y电源管理:ULP UART可能集成电源管理特性,如低电压检测、自动电源关断等,有助于在闲置时减少电流消耗。6 u) e3 z8 X6 O# `. R3 Q# O! R; t, C5 J
专用低功耗引脚:某些型号的STM32U0可能提供专门针对低功耗优化的UART引脚,这些引脚在待机或睡眠模式下具有更低的漏电流,有助于降低整体系统功耗。8 j8 Q  ]- p4 @0 @; r) n, W$ ~
软件配置:& d+ C  P$ h- G  [) e! b, V7 ^
1 波特率设置:根据实际通信需求选择合适的波特率。ULP UART可能支持较低的波特率选项,有利于在低功耗模式下降低通信时的瞬态电流。  E' p9 h; V) F8 U9 L# U8 B2 W
2 数据格式:配置数据位(通常是8位)、停止位(1或2位)、奇偶校验(无、奇校验、偶校验)等参数,确保与通信伙伴的设置一致。
1 K& x/ H, G& P7 [; z' d" _3 中断与DMA:
. L& j4 t1 |' O7 W   中断:启用接收/发送中断,允许微控制器在数据准备好或传输完成时被唤醒,而非持续轮询,有助于节能。确保在中断服务程序中快速  处理事件并返回低功耗状态。DMA:如果ULP UART支持,可以使用DMA(Direct Memory Access)进行数据传输,无需CPU干预,进一步降低功耗。尤其在批量数据传输时,DMA可以显著减少CPU唤醒次数。: y4 d3 p0 i/ I5 }: N$ P
4  低功耗模式切换:在进入低功耗模式前,确保正确配置UART的唤醒源(如空闲检测、接收数据可用等),并在唤醒后恢复正常的UART操作。8 Z! M7 C; B: N7 z
功耗优化技巧:
2 K, V6 K! e) I  g) T; q" f+ Q2 S% n1 禁用未使用的功能:关闭不需要的UART功能(如硬件流控、校验等)以减少不必要的电流消耗。+ q; _/ Z' T! {/ v* k5 A' L

- j5 q! h) ~, @, d- H: t2 节电模式:利用ULP UART的节电模式(如果支持),在数据传输间隙降低工作频率或电压,减小功耗。0 V; M- D' Z8 @$ l2 @) z
3 唤醒阈值调整:某些ULP UART允许设置唤醒阈值,调整阈值可以平衡灵敏度与功耗,避免因噪声引起的误唤醒。9 A. V: B- Z/ y2 \
4 软件定时器:使用精确的软件定时器代替连续轮询,以定期检查UART状态或处理数据,减少CPU活动时间。
; K- |, q7 E$ W) j4 c
) C4 p4 D- l  n1 b  m% `初始化:调用HAL_UART_Init()函数,设置UART参数(如波特率、数据格式等)。* c0 x$ Q+ O4 s3 J% P
中断配置:开启相关中断(如接收中断),并编写对应的中断服务程序。
& R  `1 y" P/ b) e" f% WDMA配置(如果使用):配置DMA通道,关联到UART,并设置传输参数。
, M- u" [3 u. O) c3 N$ B% D发送/接收:使用HAL_UART_Transmit()、HAL_UART_Receive()或DMA相关函数进行数据传输。
7 Q8 |) F0 V' V  t: ^- n3 U调试与测试:1 W8 k. v1 E+ \: T7 y
555.jpg
9 E5 \2 ]' h5 I  F1 g5 I9 D
2 J) r& {) U( s) n( o1 ^9 A: R. @1 g& `9 U9 t5 Z
MX_LPUART1_UART_Init初始化:3 ?6 [' r" S" f
( F7 s! U  R/ O. \: M' G
  1. static void MX_LPUART1_UART_Init(void)% j' U( r) q* z3 {* j
  2. {1 `1 T+ b' e& r7 ^3 p

  3. ' J3 K+ x$ O  F! v- b

  4. ; f5 g2 A+ c+ ~+ n. o, e4 M
  5.   hlpuart1.Instance = LPUART1;1 _! c! s0 S3 v9 s" m
  6.   hlpuart1.Init.BaudRate = 115200;- Q4 J$ p) p5 Z+ q
  7.   hlpuart1.Init.WordLength = UART_WORDLENGTH_8B;. f# `2 J% [" Z9 V
  8.   hlpuart1.Init.StopBits = UART_STOPBITS_1;# d0 x, v" J2 D% t0 x. g0 `/ J; n
  9.   hlpuart1.Init.Parity = UART_PARITY_NONE;
    " m1 q4 C7 v2 _
  10.   hlpuart1.Init.Mode = UART_MODE_TX_RX;
    8 R* H  j5 @( V+ o  [0 }
  11.   hlpuart1.Init.HwFlowCtl = UART_HWCONTROL_NONE;( R, o. R+ V9 f7 I& u* c
  12.   hlpuart1.Init.OneBitSampling = UART_ONE_BIT_SAMPLE_DISABLE;4 R2 ]/ F3 ~' i9 V8 V
  13.   hlpuart1.AdvancedInit.AdvFeatureInit = UART_ADVFEATURE_NO_INIT;
    ! }" @4 [8 F/ `* Z3 U, _) B2 d! x
  14.   hlpuart1.FifoMode = UART_FIFOMODE_DISABLE;
      o6 `/ m: X- P6 h# U1 _3 D' `' ^
  15.   if (HAL_UART_Init(&hlpuart1) != HAL_OK)4 P# D# X7 I9 U. w
  16.   {
    ( I8 u# w& I- F
  17.     Error_Handler();  x: W- H( y& N. N, V& Y/ t
  18.   }) s3 _! x0 G9 h3 s3 k5 B
  19.   if (HAL_UARTEx_SetTxFifoThreshold(&hlpuart1, UART_TXFIFO_THRESHOLD_1_8) != HAL_OK)) d  S! G+ }+ t
  20.   {
    # _# t$ b5 p* S! R5 I" i8 b! E8 \2 r
  21.     Error_Handler();
    1 m4 b; \) y3 h1 w. B
  22.   }, O' ?6 q/ Q! K' P5 f  E
  23.   if (HAL_UARTEx_SetRxFifoThreshold(&hlpuart1, UART_RXFIFO_THRESHOLD_1_8) != HAL_OK)
    ; K+ n: o5 u5 e
  24.   {" d8 L4 Z! V# Q/ _% M' U
  25.     Error_Handler();
    ' F1 j3 K; g+ R' r
  26.   }5 M' [: X' B/ C8 W
  27.   if (HAL_UARTEx_DisableFifoMode(&hlpuart1) != HAL_OK)
    0 [# Z+ e6 T9 z# t7 N
  28.   {
    9 r. W+ y/ P) j" I9 p
  29.     Error_Handler();
      Z6 P6 G& U# i3 X  [$ c  ~
  30.   }9 a* T3 E1 ^& K3 E( F0 k
  31.   - Z0 h; p6 G) @0 O0 O
  32. }
复制代码

) W0 G  U3 g7 y. M- F
7 K6 }. o8 o7 R5 a5 g: ~6 W: p, e
  1. static void MX_LPTIM1_Init(void)
    - _0 X) G  @& t
  2. {; X+ H1 i+ a# B- I' ?8 F' o
  3. ( v/ e- {+ a  i& F( n3 L/ ~9 R# b
  4.   /* USER CODE BEGIN LPTIM1_Init 0 */
    & O  ~0 v# M! _
  5. / A% X; o& l; K  n& Y; D2 b+ ~" \
  6.   /* USER CODE END LPTIM1_Init 0 */
    , s3 ?2 c, ~8 C8 B# p; L8 y

  7. $ m9 B) Z" X0 N! G: c5 }
  8.   /* USER CODE BEGIN LPTIM1_Init 1 */
    + |& I0 x9 x  j6 h

  9. - {6 s! `7 C5 g( q
  10.   /* USER CODE END LPTIM1_Init 1 */
    ) }1 K; ?7 f7 |/ B- N
  11.   hlptim1.Instance = LPTIM1;
    . A" i7 b! Z( J2 x
  12.   hlptim1.Init.Clock.Source = LPTIM_CLOCKSOURCE_APBCLOCK_LPOSC;1 I5 v: Y. j0 U3 \5 T( f
  13.   hlptim1.Init.Clock.Prescaler = LPTIM_PRESCALER_DIV1;* e' W  R, x$ C# v0 H  X7 V
  14.   hlptim1.Init.Trigger.Source = LPTIM_TRIGSOURCE_SOFTWARE;
    . Z8 P. K7 {" c: I/ z4 h
  15.   hlptim1.Init.Period = 65535;& a0 b( i/ n( _/ p+ i0 N  Z
  16.   hlptim1.Init.UpdateMode = LPTIM_UPDATE_IMMEDIATE;
    / }* b5 T" r& t- `
  17.   hlptim1.Init.CounterSource = LPTIM_COUNTERSOURCE_INTERNAL;) b* T  N6 Z" t9 A  s
  18.   hlptim1.Init.Input1Source = LPTIM_INPUT1SOURCE_GPIO;* y- C, y5 t& G9 _2 X( P8 X
  19.   hlptim1.Init.Input2Source = LPTIM_INPUT2SOURCE_GPIO;; M- w& Q) F. I
  20.   hlptim1.Init.RepetitionCounter = 0;# Y" a  w3 t7 w" T! t
  21.   if (HAL_LPTIM_Init(&hlptim1) != HAL_OK)
    5 [; h/ i2 s7 B, ~
  22.   {# ]( z. W. @, ^, u0 e) ~
  23.     Error_Handler();
    " n, N2 Y+ t# `; x( d8 \+ ^
  24.   }
    7 U9 i, W3 ^- {
  25.   /* USER CODE BEGIN LPTIM1_Init 2 */0 R8 {( _) X+ K# K
  26. . U3 N+ g7 s* c9 e9 L
  27.   /* USER CODE END LPTIM1_Init 2 */" d9 g( P3 |2 ?0 ]
  28. $ c$ ~$ N7 x# `: I1 q; `1 |
  29. }
复制代码

6 H! e% P+ W1 K% A- M1 R. C* D+ A& J: i5 G$ f$ ?9 C8 I

5 u' e9 T9 ?, {2 J5 {) h! A+ _/ b这里可以选在HAL库 LL库- j" D5 R7 s% G/ x2 s" \
666.jpg 5 ]. C  \# L: ~% z. L& l  i2 h
3 P9 P' g+ M+ ]/ k+ P/ F
  1. HAL_UART_Transmit_IT(&hlpuart1, (uint8_t*)aTxBuffer, TXBUFFERSIZE);
    4 T( e2 C8 a0 [) p

  2. % {6 x7 i: X6 w- r3 m* X
  3.    HAL_Delay(1000);
复制代码
# W! n; C3 c8 n$ j: l5 O
* G6 l" h' E5 O0 M/ U* w& f
; s. ^1 [7 L7 O3 k5 A4 P% Q+ G
运行如下:( n9 Y2 r, N4 _4 z
7777.jpg
6 Q( B( S  N) I# _+ ?/ X
* x7 {7 @- D6 e4 t3 v3 m# F  B, ?
4 p* k8 ?( d2 G+ F+ ?' v
QQ截图20240619150835.jpg
QQ截图20240619150835.jpg
收藏 评论0 发布时间:2024-6-19 15:03

举报

0个回答

所属标签

相似技术帖

官网相关资源

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