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

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

[复制链接]
马晓天 发布时间:2024-6-19 15:03
  STM32U0系列微控制器中的ULP(Ultra Low Power)UART接口设计用于在低功耗应用中实现串行通信。
' B# D) s- Q5 f! y0 C" w: n硬件特性:
4 w1 e; a/ _1 E   超低功耗模式支持:ULP UART具备在低功耗模式下保持唤醒源的能力,允许在微控制器处于低功耗状态下依然能够接收数据或触发中断,从而快速唤醒并处理通信事件,有助于降低系统平均功耗。
7 A" E# I) [2 W5 O# ^& A' x0 Z* ]电源管理:ULP UART可能集成电源管理特性,如低电压检测、自动电源关断等,有助于在闲置时减少电流消耗。6 E2 N, V$ h0 S* g7 F! n* j
专用低功耗引脚:某些型号的STM32U0可能提供专门针对低功耗优化的UART引脚,这些引脚在待机或睡眠模式下具有更低的漏电流,有助于降低整体系统功耗。
( v* _+ ]3 C8 f  V/ j' l0 T1 J/ e软件配置:* ?7 B+ D  [% ^1 ^" r% @
1 波特率设置:根据实际通信需求选择合适的波特率。ULP UART可能支持较低的波特率选项,有利于在低功耗模式下降低通信时的瞬态电流。# k' ]* ~' i& w% [! D7 U
2 数据格式:配置数据位(通常是8位)、停止位(1或2位)、奇偶校验(无、奇校验、偶校验)等参数,确保与通信伙伴的设置一致。8 G: ~% c. q* r8 c4 o
3 中断与DMA:
$ Y+ p: O0 m7 Y  J; ~   中断:启用接收/发送中断,允许微控制器在数据准备好或传输完成时被唤醒,而非持续轮询,有助于节能。确保在中断服务程序中快速  处理事件并返回低功耗状态。DMA:如果ULP UART支持,可以使用DMA(Direct Memory Access)进行数据传输,无需CPU干预,进一步降低功耗。尤其在批量数据传输时,DMA可以显著减少CPU唤醒次数。" }7 |- K) f7 J8 d# z- C( u* J: |& h
4  低功耗模式切换:在进入低功耗模式前,确保正确配置UART的唤醒源(如空闲检测、接收数据可用等),并在唤醒后恢复正常的UART操作。
  T9 o0 S6 d7 Z7 S% G功耗优化技巧:
3 S( t, i, h/ G1 h5 t1 禁用未使用的功能:关闭不需要的UART功能(如硬件流控、校验等)以减少不必要的电流消耗。, ~3 Z( a3 P0 Z5 i( e( e

$ i* E) S0 ^8 a1 S1 C" C2 节电模式:利用ULP UART的节电模式(如果支持),在数据传输间隙降低工作频率或电压,减小功耗。# b. [$ }0 c& \2 s' Z
3 唤醒阈值调整:某些ULP UART允许设置唤醒阈值,调整阈值可以平衡灵敏度与功耗,避免因噪声引起的误唤醒。" n7 G$ b0 S8 w0 f% C
4 软件定时器:使用精确的软件定时器代替连续轮询,以定期检查UART状态或处理数据,减少CPU活动时间。' r% N' G: Q1 R. b0 l& N5 z  j

8 E6 h( \; k+ t" L* K! P+ \$ d初始化:调用HAL_UART_Init()函数,设置UART参数(如波特率、数据格式等)。4 y  u" z$ j8 i
中断配置:开启相关中断(如接收中断),并编写对应的中断服务程序。. T1 L* C4 X2 h1 T
DMA配置(如果使用):配置DMA通道,关联到UART,并设置传输参数。
1 V8 \: g6 k7 ~2 @! \" i$ t, T发送/接收:使用HAL_UART_Transmit()、HAL_UART_Receive()或DMA相关函数进行数据传输。; T: |  X: s/ B  }% d0 ~3 q
调试与测试:
5 Y9 r4 I/ }- X+ `$ A 555.jpg , o, I5 Z; V/ |" ^' V+ l

' Z8 [/ F! k. W, i% T& V0 r. _/ o8 i  T9 `. u
MX_LPUART1_UART_Init初始化:
7 u* g6 p+ b7 a) f, i/ \+ M4 x$ K" Q
1 D9 F$ V, A/ F& D: J( c" R) f
  1. static void MX_LPUART1_UART_Init(void)/ L+ k, j# e: y0 u& x
  2. {, ^* z% y" C6 z2 t/ u

  3. " v% }' \; r# h$ W7 |
  4. 6 j$ t  ]7 ]+ T9 [- S
  5.   hlpuart1.Instance = LPUART1;
    * V0 E! i0 W6 [. C8 E8 B& |
  6.   hlpuart1.Init.BaudRate = 115200;
    - Z# v9 r  b1 y/ j9 Z
  7.   hlpuart1.Init.WordLength = UART_WORDLENGTH_8B;
    8 t* o/ j9 H( S1 t( j$ x
  8.   hlpuart1.Init.StopBits = UART_STOPBITS_1;: D+ p. \+ o3 P; P! k
  9.   hlpuart1.Init.Parity = UART_PARITY_NONE;& Y9 }- H5 R& s* i
  10.   hlpuart1.Init.Mode = UART_MODE_TX_RX;7 m8 @0 c3 @: A3 a! c& u! q
  11.   hlpuart1.Init.HwFlowCtl = UART_HWCONTROL_NONE;$ _6 [5 ^  V4 {7 e9 T
  12.   hlpuart1.Init.OneBitSampling = UART_ONE_BIT_SAMPLE_DISABLE;5 s" j! Z0 y' f8 X( ^4 h
  13.   hlpuart1.AdvancedInit.AdvFeatureInit = UART_ADVFEATURE_NO_INIT;  m% {8 z- @9 F9 h
  14.   hlpuart1.FifoMode = UART_FIFOMODE_DISABLE;. l+ b5 o" E* U0 ^" @  h) p
  15.   if (HAL_UART_Init(&hlpuart1) != HAL_OK)
    2 w! [7 K  M4 G+ ?  d
  16.   {: h9 S) _3 j. L; m4 _3 w
  17.     Error_Handler();, G0 g9 j) C( a# e$ H2 l
  18.   }' K, m: E( k6 B: p* _* n
  19.   if (HAL_UARTEx_SetTxFifoThreshold(&hlpuart1, UART_TXFIFO_THRESHOLD_1_8) != HAL_OK)$ X& R: S. F" {3 j% X3 w
  20.   {
    $ z* G5 {6 r+ ], c! ~/ v7 h
  21.     Error_Handler();
    ; V# [7 R' w" M. G0 O" k9 E
  22.   }
    " q7 F( k5 J9 x
  23.   if (HAL_UARTEx_SetRxFifoThreshold(&hlpuart1, UART_RXFIFO_THRESHOLD_1_8) != HAL_OK)
    ; Q9 H/ J4 I1 Y+ ~1 e
  24.   {
    5 x% [7 C& ]$ j
  25.     Error_Handler();& W8 R( L4 y8 o" L) ^0 Q6 [
  26.   }
    ; |2 M7 }- ?# d* z; p# N# m
  27.   if (HAL_UARTEx_DisableFifoMode(&hlpuart1) != HAL_OK)7 u3 t' j- Y( e$ B) G: i/ J
  28.   {7 M: I, `& F, K5 ?+ u
  29.     Error_Handler();7 {! {5 y! o/ g5 a: c
  30.   }2 r7 |3 u3 F0 Y! u% g. c
  31.   
    - Q/ x5 @% A9 W& Y" B" Q) [4 Q
  32. }
复制代码
3 [. B4 `, S- p( L- \

! ?' M. O( t; p5 ]1 L5 n) C
  1. static void MX_LPTIM1_Init(void)& N& x4 f" L  g. d9 w
  2. {
    7 ]3 f$ v# Q; n5 k  F' t; T
  3. 2 V' j7 a; F/ Z( a  @  P; ^
  4.   /* USER CODE BEGIN LPTIM1_Init 0 */. G8 p  p" W) D$ E# ~9 B6 z
  5. , l+ L0 w8 c# E# K+ \$ q; G+ z
  6.   /* USER CODE END LPTIM1_Init 0 */
    - H5 p- i4 V% c4 Z4 Q9 ]

  7. 9 B7 ^2 e6 l+ ?- X8 }5 e/ H
  8.   /* USER CODE BEGIN LPTIM1_Init 1 */- F+ `0 d3 t' u7 q
  9. 6 R6 L7 c5 U% R! J
  10.   /* USER CODE END LPTIM1_Init 1 */8 L7 h( w3 i% k/ N; j% {: W7 k
  11.   hlptim1.Instance = LPTIM1;
    ; M  V4 |/ Z+ x; k
  12.   hlptim1.Init.Clock.Source = LPTIM_CLOCKSOURCE_APBCLOCK_LPOSC;
    " k$ Y' k0 X# {* L! M. d) D0 e
  13.   hlptim1.Init.Clock.Prescaler = LPTIM_PRESCALER_DIV1;8 d4 |7 R2 F5 g' z1 r9 K
  14.   hlptim1.Init.Trigger.Source = LPTIM_TRIGSOURCE_SOFTWARE;9 N% x+ f8 P  A6 \/ g- j  e
  15.   hlptim1.Init.Period = 65535;
    # q+ x, I4 M2 }- h
  16.   hlptim1.Init.UpdateMode = LPTIM_UPDATE_IMMEDIATE;
    ; Q7 J4 c- s$ T2 H
  17.   hlptim1.Init.CounterSource = LPTIM_COUNTERSOURCE_INTERNAL;
    - o! n0 c2 _& ~) G( t7 l1 A
  18.   hlptim1.Init.Input1Source = LPTIM_INPUT1SOURCE_GPIO;
    0 [& n1 @3 `9 r/ h0 Y
  19.   hlptim1.Init.Input2Source = LPTIM_INPUT2SOURCE_GPIO;  P. h! J/ D  F+ ]' g, E
  20.   hlptim1.Init.RepetitionCounter = 0;
    4 w! G$ T5 |: ~  ]2 p3 ?/ a/ k
  21.   if (HAL_LPTIM_Init(&hlptim1) != HAL_OK)
    6 G/ y8 B1 k/ z  y( Y
  22.   {
    1 M" F3 B5 B* w4 q
  23.     Error_Handler();* e9 u6 y8 ]' r4 O3 a
  24.   }2 @, i* ~& `1 o' a; A% _
  25.   /* USER CODE BEGIN LPTIM1_Init 2 */& N2 R$ q/ l' S. j
  26. - {3 ?3 L; C3 B& t5 m# s5 c
  27.   /* USER CODE END LPTIM1_Init 2 */
    , j  x1 I" v( X% P1 a" l
  28. # h3 q7 P# @& |9 ^, }8 p: l3 o
  29. }
复制代码

$ P3 ^( h0 F; u* v# E2 ^" t  R& s2 v4 ~& a6 M
6 H  e/ @% C- m, t6 ]1 ]
这里可以选在HAL库 LL库
$ U/ N% ?1 a. @! C, Y) ? 666.jpg . L& I! |" z/ f  b% m2 @( e

* u' J! R. E4 R! g* Y
  1. HAL_UART_Transmit_IT(&hlpuart1, (uint8_t*)aTxBuffer, TXBUFFERSIZE);
    * s$ U4 }* Y( S/ C
  2. + U  d" Y* h; ?# T9 n% [) ~8 L
  3.    HAL_Delay(1000);
复制代码

% H5 w( e0 q5 X* p9 c' g  i3 h) g
$ q: E# X9 D2 U6 z# n) @+ i/ ~
" m. U4 X- x: {  \4 E; A运行如下:
3 s+ P- A$ x- n/ P 7777.jpg * m. i0 S& H1 c4 G, L4 Q, Z
9 y; L4 E4 b( ?! O. W+ s1 Y0 M

; N6 [+ Q! z$ f2 K1 S  ?9 }- I. \  [- M8 i. r; h. Y9 U! v; O9 b
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 手机版