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

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

[复制链接]
马晓天 发布时间:2024-6-19 15:03
  STM32U0系列微控制器中的ULP(Ultra Low Power)UART接口设计用于在低功耗应用中实现串行通信。
( q# f0 k0 N4 R硬件特性:
/ G' g) `; l  n+ w# Z/ J( Y   超低功耗模式支持:ULP UART具备在低功耗模式下保持唤醒源的能力,允许在微控制器处于低功耗状态下依然能够接收数据或触发中断,从而快速唤醒并处理通信事件,有助于降低系统平均功耗。
/ H5 O! a' w3 @/ `/ M+ H+ X电源管理:ULP UART可能集成电源管理特性,如低电压检测、自动电源关断等,有助于在闲置时减少电流消耗。
: A$ k8 e  s1 R0 I6 G专用低功耗引脚:某些型号的STM32U0可能提供专门针对低功耗优化的UART引脚,这些引脚在待机或睡眠模式下具有更低的漏电流,有助于降低整体系统功耗。
, |$ _1 r, b, ]* K4 D# I软件配置:9 I1 @9 G. y; O) `4 r
1 波特率设置:根据实际通信需求选择合适的波特率。ULP UART可能支持较低的波特率选项,有利于在低功耗模式下降低通信时的瞬态电流。8 t' h8 v  h! m- t
2 数据格式:配置数据位(通常是8位)、停止位(1或2位)、奇偶校验(无、奇校验、偶校验)等参数,确保与通信伙伴的设置一致。+ d5 v" S3 G, J$ r- D  ?
3 中断与DMA:
; n# Z2 _- T1 L7 E+ K2 L8 H   中断:启用接收/发送中断,允许微控制器在数据准备好或传输完成时被唤醒,而非持续轮询,有助于节能。确保在中断服务程序中快速  处理事件并返回低功耗状态。DMA:如果ULP UART支持,可以使用DMA(Direct Memory Access)进行数据传输,无需CPU干预,进一步降低功耗。尤其在批量数据传输时,DMA可以显著减少CPU唤醒次数。9 `: C3 P% c* Y- A: V- p
4  低功耗模式切换:在进入低功耗模式前,确保正确配置UART的唤醒源(如空闲检测、接收数据可用等),并在唤醒后恢复正常的UART操作。1 H8 u8 n  v$ A
功耗优化技巧:
$ j  M" A( f7 p1 禁用未使用的功能:关闭不需要的UART功能(如硬件流控、校验等)以减少不必要的电流消耗。5 I5 e) F- q: l  y
5 K) q6 g; T# S
2 节电模式:利用ULP UART的节电模式(如果支持),在数据传输间隙降低工作频率或电压,减小功耗。
; G1 Z4 e6 {: G4 F3 唤醒阈值调整:某些ULP UART允许设置唤醒阈值,调整阈值可以平衡灵敏度与功耗,避免因噪声引起的误唤醒。
# F# J! I; h* }% G# j9 i4 软件定时器:使用精确的软件定时器代替连续轮询,以定期检查UART状态或处理数据,减少CPU活动时间。1 @2 V! Y; J4 q+ L' W0 D1 z

5 O4 x% @: H1 C6 w6 S5 K) V初始化:调用HAL_UART_Init()函数,设置UART参数(如波特率、数据格式等)。
' ]5 z3 ]) D% f0 g3 x3 V. G% I8 m中断配置:开启相关中断(如接收中断),并编写对应的中断服务程序。
2 Y' B3 _/ h# H1 P9 ~" h1 fDMA配置(如果使用):配置DMA通道,关联到UART,并设置传输参数。
5 S' X7 J, ?0 t8 V发送/接收:使用HAL_UART_Transmit()、HAL_UART_Receive()或DMA相关函数进行数据传输。
4 q3 D3 G3 B- s/ s2 ~3 i+ e调试与测试:2 n) b0 t( }* n8 W  U" M% W7 y
555.jpg
* h' T0 x3 H4 P- {& Y( ?, R, k
8 h( O  F" I) z5 t' {2 @6 ~) S9 B
MX_LPUART1_UART_Init初始化:" l5 V% I0 E# ~

0 q  q1 A' z" Z4 R3 v
  1. static void MX_LPUART1_UART_Init(void)
    7 k- X0 y  v: m
  2. {& k. |- x7 Z: {2 Z$ V

  3. ) U& X3 N% h. q) k: @

  4. 0 P8 U7 X+ j" ^! R
  5.   hlpuart1.Instance = LPUART1;
    3 T. c" `7 n' f" g5 Q1 @' e( w. d
  6.   hlpuart1.Init.BaudRate = 115200;0 K% i) g5 Z" A1 o+ }/ m
  7.   hlpuart1.Init.WordLength = UART_WORDLENGTH_8B;
    - M! v  s+ }# X* ^" }, q
  8.   hlpuart1.Init.StopBits = UART_STOPBITS_1;
    : h% P) H) E9 R. ?. x  F2 r5 t
  9.   hlpuart1.Init.Parity = UART_PARITY_NONE;' [- o" S: K2 ]: s, J7 E# i" a" L
  10.   hlpuart1.Init.Mode = UART_MODE_TX_RX;0 Q$ Q0 t, ]; L8 Z5 J0 [
  11.   hlpuart1.Init.HwFlowCtl = UART_HWCONTROL_NONE;8 ]- w8 Z5 w+ z: ^5 @
  12.   hlpuart1.Init.OneBitSampling = UART_ONE_BIT_SAMPLE_DISABLE;
    : p1 i% F6 y- K; Z: n3 Y: z
  13.   hlpuart1.AdvancedInit.AdvFeatureInit = UART_ADVFEATURE_NO_INIT;
    3 ^9 {3 ^! z4 z+ t- b  U# r
  14.   hlpuart1.FifoMode = UART_FIFOMODE_DISABLE;
    - p9 J& I# y4 N
  15.   if (HAL_UART_Init(&hlpuart1) != HAL_OK)2 E- S7 T! ?, _) ~) U1 ~
  16.   {
    # T- r( p7 s4 ^4 \' e  G
  17.     Error_Handler();
    0 [, E) ~8 G; P0 _+ q9 u1 \
  18.   }
    " j8 d- u0 x; ]  ^* ]' ~. J! d( y
  19.   if (HAL_UARTEx_SetTxFifoThreshold(&hlpuart1, UART_TXFIFO_THRESHOLD_1_8) != HAL_OK)
    7 S; H4 G2 [- t$ a- U8 u/ n
  20.   {
    1 Q5 }' @8 n, i. ^
  21.     Error_Handler();! X( w2 \4 G/ }" g+ U2 D& ?
  22.   }
    / H1 r* b: s: e. B, x# h: c2 R8 M* e* _
  23.   if (HAL_UARTEx_SetRxFifoThreshold(&hlpuart1, UART_RXFIFO_THRESHOLD_1_8) != HAL_OK)
    - G6 Q0 ]  l! u# j8 y
  24.   {
    % R% ]3 b2 B- |% D9 U) _4 l
  25.     Error_Handler();
    + w( \- d8 v" K; X
  26.   }
    2 M9 ]8 h9 @/ K& k3 @8 U
  27.   if (HAL_UARTEx_DisableFifoMode(&hlpuart1) != HAL_OK)# ~3 S' k- d* |+ `) Q
  28.   {  E4 Q$ S' V! K& o! \
  29.     Error_Handler();
    , C: l' \7 k: D* [2 @
  30.   }
    4 a! G! R' _3 @) C7 ]; N
  31.   
    1 |- `8 K2 Q: C
  32. }
复制代码
7 j5 b: p5 M( C4 V, X
* a( D: y2 o+ K; \
  1. static void MX_LPTIM1_Init(void)
    , b3 F2 j$ r9 X
  2. {2 i* z0 s3 @6 B7 n5 x6 j
  3. 2 M/ U. H5 t/ P: B
  4.   /* USER CODE BEGIN LPTIM1_Init 0 */
    # P. d- z( ]2 C9 d

  5. ; n3 H6 u& A* D+ n0 j( K
  6.   /* USER CODE END LPTIM1_Init 0 */7 H1 `) ?2 d9 {* v2 M
  7. 7 b9 y. Y6 ?3 ]3 i8 G( a
  8.   /* USER CODE BEGIN LPTIM1_Init 1 */. P* N+ B! Z8 Y' j
  9. 6 N, `4 u. `. e3 f
  10.   /* USER CODE END LPTIM1_Init 1 */
    3 F# P0 |1 R# C, X" ]
  11.   hlptim1.Instance = LPTIM1;
    ! K+ y) y8 a$ B7 b) d
  12.   hlptim1.Init.Clock.Source = LPTIM_CLOCKSOURCE_APBCLOCK_LPOSC;
    0 e& i6 [& I( D0 G" a. Y3 x
  13.   hlptim1.Init.Clock.Prescaler = LPTIM_PRESCALER_DIV1;
    9 H( \4 b" X2 K+ g0 ~& @
  14.   hlptim1.Init.Trigger.Source = LPTIM_TRIGSOURCE_SOFTWARE;+ H/ H6 C& L0 {( g% z
  15.   hlptim1.Init.Period = 65535;$ ]' {# q. I& j! q6 \
  16.   hlptim1.Init.UpdateMode = LPTIM_UPDATE_IMMEDIATE;1 T4 L+ R$ e4 W( x
  17.   hlptim1.Init.CounterSource = LPTIM_COUNTERSOURCE_INTERNAL;- o% c0 P# I3 a" q4 D
  18.   hlptim1.Init.Input1Source = LPTIM_INPUT1SOURCE_GPIO;% T  X& a5 e1 J5 p3 U6 P! J
  19.   hlptim1.Init.Input2Source = LPTIM_INPUT2SOURCE_GPIO;
    3 F2 R. y( _# I, [: c0 X
  20.   hlptim1.Init.RepetitionCounter = 0;
    + q* f' V' J& U& W0 O! d/ m& o
  21.   if (HAL_LPTIM_Init(&hlptim1) != HAL_OK). h7 c% B  S1 q5 U# T
  22.   {
    ! e+ s. e& q3 u% _
  23.     Error_Handler();7 S3 j$ M8 E1 Q( ?3 s3 D3 B1 W
  24.   }
    8 V% n. h5 P" c# M, T" g
  25.   /* USER CODE BEGIN LPTIM1_Init 2 */
    , o! j! K; N* R
  26. % t, b2 g, L: j' I, ~
  27.   /* USER CODE END LPTIM1_Init 2 */2 B# `, K1 E; L$ p
  28. " W3 \& ^0 ~) w+ W1 O' Q
  29. }
复制代码
! G! z  Y) j# P; w

/ j: H7 [: e# X! E3 F9 g
) ]2 D4 J. X/ L这里可以选在HAL库 LL库( j4 M  d4 E; w: L2 C4 n# ?
666.jpg : B7 \! c  O# E) g

7 A: G1 F! m- V8 C" B) a
  1. HAL_UART_Transmit_IT(&hlpuart1, (uint8_t*)aTxBuffer, TXBUFFERSIZE);
    2 Q9 T; O8 C' R4 r8 I  p1 s$ q

  2. 2 R' ?; [: x: ^! m! u3 y" `
  3.    HAL_Delay(1000);
复制代码

9 H8 v& U! {, P: q
+ Y# q$ y; U0 f8 l# P/ y: B( z$ [) E1 g
运行如下:8 Q3 }$ y% v- D, f4 T3 [; W. \/ j
7777.jpg $ O2 W3 R9 F3 f% a' R* U" i- f
7 t. }. E; H1 o) l6 Z# ^

/ c& p5 M$ c5 \& C0 C$ \# E) O6 Z/ O! @3 X9 l
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 手机版