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

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

[复制链接]
马晓天 发布时间:2024-6-19 15:03
  STM32U0系列微控制器中的ULP(Ultra Low Power)UART接口设计用于在低功耗应用中实现串行通信。
3 b) V4 E- V6 e7 Y) H' a# F; o# H$ Y硬件特性:
0 F: X; i+ F# c- F) `   超低功耗模式支持:ULP UART具备在低功耗模式下保持唤醒源的能力,允许在微控制器处于低功耗状态下依然能够接收数据或触发中断,从而快速唤醒并处理通信事件,有助于降低系统平均功耗。
9 r& u( S% l! v4 `- i电源管理:ULP UART可能集成电源管理特性,如低电压检测、自动电源关断等,有助于在闲置时减少电流消耗。5 ~$ R/ E8 V( Y! `6 u% I
专用低功耗引脚:某些型号的STM32U0可能提供专门针对低功耗优化的UART引脚,这些引脚在待机或睡眠模式下具有更低的漏电流,有助于降低整体系统功耗。
) O# O! N) n. T软件配置:9 I9 A3 k1 h2 ?# X
1 波特率设置:根据实际通信需求选择合适的波特率。ULP UART可能支持较低的波特率选项,有利于在低功耗模式下降低通信时的瞬态电流。
1 `7 [' x: l9 c; i$ P2 数据格式:配置数据位(通常是8位)、停止位(1或2位)、奇偶校验(无、奇校验、偶校验)等参数,确保与通信伙伴的设置一致。
1 E% F5 v0 s3 T* c  a, K8 |3 中断与DMA:
# @# P5 F. S. K0 T+ {& ?/ ~; j' A( F   中断:启用接收/发送中断,允许微控制器在数据准备好或传输完成时被唤醒,而非持续轮询,有助于节能。确保在中断服务程序中快速  处理事件并返回低功耗状态。DMA:如果ULP UART支持,可以使用DMA(Direct Memory Access)进行数据传输,无需CPU干预,进一步降低功耗。尤其在批量数据传输时,DMA可以显著减少CPU唤醒次数。+ c/ ~3 S4 s$ r# J0 q! O5 o
4  低功耗模式切换:在进入低功耗模式前,确保正确配置UART的唤醒源(如空闲检测、接收数据可用等),并在唤醒后恢复正常的UART操作。
+ L0 s& I0 Q- c9 i: ?0 U4 m: c) C* r功耗优化技巧:
9 y& |: P9 T( W2 ^6 d+ {) K: r& U1 禁用未使用的功能:关闭不需要的UART功能(如硬件流控、校验等)以减少不必要的电流消耗。
, _3 _1 t+ Z1 ]/ D( G/ G! Z/ ]
8 l3 N+ C' G3 C2 节电模式:利用ULP UART的节电模式(如果支持),在数据传输间隙降低工作频率或电压,减小功耗。5 F& R. d+ d( A8 Z6 x
3 唤醒阈值调整:某些ULP UART允许设置唤醒阈值,调整阈值可以平衡灵敏度与功耗,避免因噪声引起的误唤醒。! i- B, b& F) y" w: v. t
4 软件定时器:使用精确的软件定时器代替连续轮询,以定期检查UART状态或处理数据,减少CPU活动时间。
3 b$ |; Y3 l0 u5 _* `
* \% e3 M6 v2 z5 K' s" ~0 }初始化:调用HAL_UART_Init()函数,设置UART参数(如波特率、数据格式等)。. z2 u! s1 q9 K5 h
中断配置:开启相关中断(如接收中断),并编写对应的中断服务程序。
( D( G+ g; x( |DMA配置(如果使用):配置DMA通道,关联到UART,并设置传输参数。; c# n1 E! j8 p! t' w( S* v
发送/接收:使用HAL_UART_Transmit()、HAL_UART_Receive()或DMA相关函数进行数据传输。
  ~6 a5 h  |3 W+ o调试与测试:
$ f  x. `  v7 T# G  U' p% U# u 555.jpg " k6 i( H; E- p2 D

( ]% M* D' O9 A: ?
: g" {0 r" {: b# m8 ] MX_LPUART1_UART_Init初始化:4 h5 @6 V$ `) J( J
* [2 O6 D" D4 t/ h6 F6 v3 ]3 B
  1. static void MX_LPUART1_UART_Init(void)
    - G/ _* n4 G( _
  2. {
    8 `; u/ `) A- A; K9 R" t) E
  3. 2 Y6 d, q4 t( ?! K
  4. 6 ]* w9 n4 D2 g- N) G7 X0 y* ~3 H& F
  5.   hlpuart1.Instance = LPUART1;
    $ w; h! ~. H; d; G, D
  6.   hlpuart1.Init.BaudRate = 115200;9 ^$ E: q0 U& a# S# h
  7.   hlpuart1.Init.WordLength = UART_WORDLENGTH_8B;
    , P! r9 z8 u) [+ w" A8 F4 B
  8.   hlpuart1.Init.StopBits = UART_STOPBITS_1;
    7 v2 }; D8 l$ {0 j; A7 ]
  9.   hlpuart1.Init.Parity = UART_PARITY_NONE;
    3 a" Y1 z, j' d6 m
  10.   hlpuart1.Init.Mode = UART_MODE_TX_RX;
    $ ~1 S# ?) I0 D( N
  11.   hlpuart1.Init.HwFlowCtl = UART_HWCONTROL_NONE;, k  G& w/ h9 M
  12.   hlpuart1.Init.OneBitSampling = UART_ONE_BIT_SAMPLE_DISABLE;
    9 r/ G0 g: X  c  I6 k; N9 j) c
  13.   hlpuart1.AdvancedInit.AdvFeatureInit = UART_ADVFEATURE_NO_INIT;
    ( ^1 U; B" D2 W$ z( c
  14.   hlpuart1.FifoMode = UART_FIFOMODE_DISABLE;
    ) u5 G+ ]- G* M: ?8 t; T$ n
  15.   if (HAL_UART_Init(&hlpuart1) != HAL_OK)) {! E; e0 M  E! }' b. f0 J% |! D
  16.   {' a$ H( a6 c0 v/ u# u- P8 \1 J
  17.     Error_Handler();
    7 p2 C* X  }0 e, {/ ^) T
  18.   }
    " X  @$ P! o, `. H7 n* p) E
  19.   if (HAL_UARTEx_SetTxFifoThreshold(&hlpuart1, UART_TXFIFO_THRESHOLD_1_8) != HAL_OK)
    2 i) e; v# S) t8 a6 {
  20.   {
    7 `/ @1 g: \1 E
  21.     Error_Handler();2 C$ f) d% _# }/ ~6 D
  22.   }
    ! _8 b8 u/ O& ]% b% I, }* Q
  23.   if (HAL_UARTEx_SetRxFifoThreshold(&hlpuart1, UART_RXFIFO_THRESHOLD_1_8) != HAL_OK)
    3 i& g, v& k6 v: _& D( ^. ]4 ~7 ]5 X
  24.   {, h6 Y- F- q3 W# Z
  25.     Error_Handler();' I# h, H7 t* j& S5 i, H- f
  26.   }) h& I! U$ }5 {* k- h* i3 @: I& _
  27.   if (HAL_UARTEx_DisableFifoMode(&hlpuart1) != HAL_OK)9 s5 `# B. x+ O% y7 p; m* {- f/ {
  28.   {
    ( G, ^! d+ D" z4 c1 O$ M$ Q
  29.     Error_Handler();" }4 J( i7 l# `$ s
  30.   }/ |& M+ e3 ~, Z
  31.   
    " j" K: k: C: @5 y6 h) o
  32. }
复制代码

% c' _4 v7 I1 A, W, q) H1 ^- p
) L6 R% c+ j% ]
  1. static void MX_LPTIM1_Init(void)
    $ e4 Y! ~7 y. Y$ J* I4 G
  2. {1 o6 B5 s& Z3 a" Z& a
  3. # D' x1 z. i; ~! r' u$ P4 E
  4.   /* USER CODE BEGIN LPTIM1_Init 0 */
    9 \- I# U; a, p3 J
  5. " r# U- ~# G. C0 X3 j* k/ n! C
  6.   /* USER CODE END LPTIM1_Init 0 */- W5 h, w7 c# H: d: f% V; t. @

  7. , x( @( {3 K3 f
  8.   /* USER CODE BEGIN LPTIM1_Init 1 */
    : z" \6 Q& V$ g- h
  9.   X4 U" c) q& [/ Y
  10.   /* USER CODE END LPTIM1_Init 1 */
    + i7 I5 }/ _( t4 A. R) B7 }6 b
  11.   hlptim1.Instance = LPTIM1;, A  n5 _3 W( F2 d
  12.   hlptim1.Init.Clock.Source = LPTIM_CLOCKSOURCE_APBCLOCK_LPOSC;$ c  f1 y# }, q* s0 X2 x
  13.   hlptim1.Init.Clock.Prescaler = LPTIM_PRESCALER_DIV1;8 f& X& }- r: ~) x
  14.   hlptim1.Init.Trigger.Source = LPTIM_TRIGSOURCE_SOFTWARE;/ D. ^2 v- b/ R+ Q  m' Y8 @
  15.   hlptim1.Init.Period = 65535;/ m" I& l3 C3 ?' e
  16.   hlptim1.Init.UpdateMode = LPTIM_UPDATE_IMMEDIATE;
    7 K2 e- N- p. y7 S( @
  17.   hlptim1.Init.CounterSource = LPTIM_COUNTERSOURCE_INTERNAL;
    ; Q  ~2 E$ K0 ?7 |/ \
  18.   hlptim1.Init.Input1Source = LPTIM_INPUT1SOURCE_GPIO;
    1 s1 l& Q1 s6 u% ^$ K$ C! B
  19.   hlptim1.Init.Input2Source = LPTIM_INPUT2SOURCE_GPIO;
    6 t, r5 \. h2 U, w& L; E
  20.   hlptim1.Init.RepetitionCounter = 0;
    ; ~& c: x9 y; E! A
  21.   if (HAL_LPTIM_Init(&hlptim1) != HAL_OK), s) @- X( O6 e/ k" z
  22.   {" t7 s2 Q2 j# |8 J/ [  Z) A
  23.     Error_Handler();' {! R8 e6 K3 N) K9 L8 T' {
  24.   }
    ( [- z9 G$ b8 r( |  Q" c0 N# d
  25.   /* USER CODE BEGIN LPTIM1_Init 2 *// A4 \- u! r7 A& m- _

  26. 8 |* O2 J; H4 y  ?, J/ _
  27.   /* USER CODE END LPTIM1_Init 2 */
    $ B; ]1 ?2 g& T! S1 l8 v

  28. ' O. P* E* D2 U
  29. }
复制代码
5 [! j( e( O1 g8 {

! L+ @2 _- ]0 u! X) ]' c3 [5 v3 L% r0 ]$ t6 X
这里可以选在HAL库 LL库
& |' A+ J- J  A2 V6 I 666.jpg
! x; d! N9 ]9 Z! K" s
# a7 J: s- g% m2 p- B
  1. HAL_UART_Transmit_IT(&hlpuart1, (uint8_t*)aTxBuffer, TXBUFFERSIZE);4 U0 |* b0 `) c4 U4 z' U

  2. : I1 ]0 F% T6 J$ Z
  3.    HAL_Delay(1000);
复制代码

2 e5 z9 d; O# d
( N2 T5 l" |3 @. Y0 A# B4 [" R/ W# M  y
运行如下:
0 d- n; Y4 h2 v9 j; P* C: J 7777.jpg
& ^2 T) X" j) S6 p/ {( E
  T$ i* f0 }) [& Q4 s! F3 n8 G
5 M2 L; g8 p$ T7 n7 j1 i1 v) P+ q# a1 ~
QQ截图20240619150835.jpg
QQ截图20240619150835.jpg
收藏 评论0 发布时间:2024-6-19 15:03

举报

0个回答

所属标签

相似技术帖

官网相关资源

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