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

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

[复制链接]
马晓天 发布时间:2024-6-19 15:03
  STM32U0系列微控制器中的ULP(Ultra Low Power)UART接口设计用于在低功耗应用中实现串行通信。- i' _0 R7 n  [" s5 W
硬件特性:
3 R8 A% V! ?( }+ ]+ i+ X8 _) T   超低功耗模式支持:ULP UART具备在低功耗模式下保持唤醒源的能力,允许在微控制器处于低功耗状态下依然能够接收数据或触发中断,从而快速唤醒并处理通信事件,有助于降低系统平均功耗。, Z0 C: F. A6 ^# G5 i+ {
电源管理:ULP UART可能集成电源管理特性,如低电压检测、自动电源关断等,有助于在闲置时减少电流消耗。
/ [3 _% @2 I9 x& s- x专用低功耗引脚:某些型号的STM32U0可能提供专门针对低功耗优化的UART引脚,这些引脚在待机或睡眠模式下具有更低的漏电流,有助于降低整体系统功耗。
+ B' k  t! S8 x+ s3 f% n' Z4 a软件配置:" N: {6 K8 g  U$ ^- \* G
1 波特率设置:根据实际通信需求选择合适的波特率。ULP UART可能支持较低的波特率选项,有利于在低功耗模式下降低通信时的瞬态电流。
5 U# y; a. m; g* U9 E- U# Q2 数据格式:配置数据位(通常是8位)、停止位(1或2位)、奇偶校验(无、奇校验、偶校验)等参数,确保与通信伙伴的设置一致。
9 `% n+ k+ c2 `2 ~. P3 中断与DMA:
( @- N& Q* A: T5 u1 U  n   中断:启用接收/发送中断,允许微控制器在数据准备好或传输完成时被唤醒,而非持续轮询,有助于节能。确保在中断服务程序中快速  处理事件并返回低功耗状态。DMA:如果ULP UART支持,可以使用DMA(Direct Memory Access)进行数据传输,无需CPU干预,进一步降低功耗。尤其在批量数据传输时,DMA可以显著减少CPU唤醒次数。
' v# n/ r2 N! L+ q* Y; {/ l' _  h, y. m4  低功耗模式切换:在进入低功耗模式前,确保正确配置UART的唤醒源(如空闲检测、接收数据可用等),并在唤醒后恢复正常的UART操作。
" F# R4 r* U5 \7 P7 P功耗优化技巧:
& K4 S5 l  t1 y& u- ?1 禁用未使用的功能:关闭不需要的UART功能(如硬件流控、校验等)以减少不必要的电流消耗。. C8 s. R  x8 l3 y# u  G8 G8 d: I) X
4 a2 x* c; Y+ N, |
2 节电模式:利用ULP UART的节电模式(如果支持),在数据传输间隙降低工作频率或电压,减小功耗。3 ]# Q: ?+ U( B" ?
3 唤醒阈值调整:某些ULP UART允许设置唤醒阈值,调整阈值可以平衡灵敏度与功耗,避免因噪声引起的误唤醒。
( U' A$ l9 n( t; Z6 G! M0 P4 软件定时器:使用精确的软件定时器代替连续轮询,以定期检查UART状态或处理数据,减少CPU活动时间。
& Y; v: s1 l& U" R, W3 X' s
+ R' q" ~9 S4 @" l4 Z! L: T初始化:调用HAL_UART_Init()函数,设置UART参数(如波特率、数据格式等)。2 P, [% ?; p9 _3 z
中断配置:开启相关中断(如接收中断),并编写对应的中断服务程序。1 @; |8 ]9 q% ?' @" \
DMA配置(如果使用):配置DMA通道,关联到UART,并设置传输参数。6 t; O2 B1 B3 Z4 D
发送/接收:使用HAL_UART_Transmit()、HAL_UART_Receive()或DMA相关函数进行数据传输。
" F. w& y- e) \. O! n+ l调试与测试:
% ^+ L5 k$ u8 t8 ~( W& S9 _+ x 555.jpg
) u# M6 a8 S, W/ N$ M0 F' h9 X
& Q' o7 U5 M4 ]$ @! A, y  z3 I/ k* h0 _, `8 c
MX_LPUART1_UART_Init初始化:0 b6 l- E6 g5 Y0 x
6 ~8 V- \) N9 G- e* P3 |, f2 U
  1. static void MX_LPUART1_UART_Init(void)$ C7 T% @% J5 `
  2. {
    % k& a3 x) r! L; e7 g$ B
  3. 3 K) |3 |3 t6 n

  4. 1 E) K" _4 S$ [) H
  5.   hlpuart1.Instance = LPUART1;. S1 q6 L; D) B/ `; A: n5 |9 p; |' H8 n
  6.   hlpuart1.Init.BaudRate = 115200;
    : e* f: X$ m2 Q2 k9 a- C9 n6 U
  7.   hlpuart1.Init.WordLength = UART_WORDLENGTH_8B;0 |) Y/ }& e5 E9 g
  8.   hlpuart1.Init.StopBits = UART_STOPBITS_1;# k+ Q! D& m5 x
  9.   hlpuart1.Init.Parity = UART_PARITY_NONE;
    2 j& d0 C* }  \" i! Q# |
  10.   hlpuart1.Init.Mode = UART_MODE_TX_RX;
    4 }, X7 [) ^4 R
  11.   hlpuart1.Init.HwFlowCtl = UART_HWCONTROL_NONE;: z- J+ t- v, A( J7 l9 Q8 r2 J8 `1 ~
  12.   hlpuart1.Init.OneBitSampling = UART_ONE_BIT_SAMPLE_DISABLE;
    4 _  o% e  [# g) g
  13.   hlpuart1.AdvancedInit.AdvFeatureInit = UART_ADVFEATURE_NO_INIT;
    2 X( o9 q5 S0 j2 Y* Z1 b
  14.   hlpuart1.FifoMode = UART_FIFOMODE_DISABLE;* @0 x* y* i' E
  15.   if (HAL_UART_Init(&hlpuart1) != HAL_OK): ^0 A# H8 Q1 a7 e
  16.   {
    ' r5 |3 M* i, n  Z! L
  17.     Error_Handler();
    ) `5 t. @  H& v- A$ F0 R# B
  18.   }5 H$ e! b) m2 K% V. N5 ~% W& s
  19.   if (HAL_UARTEx_SetTxFifoThreshold(&hlpuart1, UART_TXFIFO_THRESHOLD_1_8) != HAL_OK)! Z, O9 ~, F3 ]* B
  20.   {; S3 P/ |% d! |9 T
  21.     Error_Handler();2 _7 e0 a. u' K3 f3 n
  22.   }
    . V- g2 d; b/ ^' c3 L$ y
  23.   if (HAL_UARTEx_SetRxFifoThreshold(&hlpuart1, UART_RXFIFO_THRESHOLD_1_8) != HAL_OK)2 d9 O4 F: l) d1 L
  24.   {: g- K) i1 u4 Q% M
  25.     Error_Handler();6 Y4 I/ U+ u* ?9 p
  26.   }
    3 A- k2 P9 p. j5 T
  27.   if (HAL_UARTEx_DisableFifoMode(&hlpuart1) != HAL_OK)' S; h7 n- b( M' \1 t1 z
  28.   {
    ! y6 j# r( g; ?5 E
  29.     Error_Handler();+ u/ t$ b# R" ]' B! r! g
  30.   }' T. Y& f8 s+ d. v  E3 q+ r7 b5 g
  31.   5 h6 L0 _& U  I, S0 r" A
  32. }
复制代码
" z  q7 L. B' {; n+ U
" O' h7 t, D  E' o# g
  1. static void MX_LPTIM1_Init(void)
    0 u& F% R* U2 P9 K. p, c
  2. {
    5 J1 e2 B5 H7 p3 Y1 \( ~

  3. 7 m4 _3 g. Z) |' `# P) Z6 T) R2 z
  4.   /* USER CODE BEGIN LPTIM1_Init 0 */* Z# T, u& K( l" H. Y, N8 d

  5. ( D2 D/ J3 W3 R
  6.   /* USER CODE END LPTIM1_Init 0 */
    8 d1 H1 E$ e) {1 ^

  7.   X! G3 l% G& {7 \) E# Q) Y
  8.   /* USER CODE BEGIN LPTIM1_Init 1 */  ~* e! V: J$ b9 F/ \9 S

  9. 1 j3 I# f* B& s4 o  V5 c7 }! C
  10.   /* USER CODE END LPTIM1_Init 1 */. W) y) ~+ D& T! j
  11.   hlptim1.Instance = LPTIM1;8 A) a# H: c9 G0 c# n9 A$ M& ?+ C& _+ Z
  12.   hlptim1.Init.Clock.Source = LPTIM_CLOCKSOURCE_APBCLOCK_LPOSC;0 Z4 ^7 A2 K6 U2 s% \2 q
  13.   hlptim1.Init.Clock.Prescaler = LPTIM_PRESCALER_DIV1;  u4 B/ ^6 j  s  B. H1 `8 K+ U8 d7 `2 n; Y
  14.   hlptim1.Init.Trigger.Source = LPTIM_TRIGSOURCE_SOFTWARE;( F, i9 T0 o2 j! I; E. x
  15.   hlptim1.Init.Period = 65535;0 L% F. m! |4 _* d6 O- t, P- d
  16.   hlptim1.Init.UpdateMode = LPTIM_UPDATE_IMMEDIATE;7 C0 L5 f! L+ y: a) z
  17.   hlptim1.Init.CounterSource = LPTIM_COUNTERSOURCE_INTERNAL;
    7 A( H& D, b5 }* @4 l0 [6 G1 r9 W
  18.   hlptim1.Init.Input1Source = LPTIM_INPUT1SOURCE_GPIO;
    # X7 Z; U2 I8 D( D; R
  19.   hlptim1.Init.Input2Source = LPTIM_INPUT2SOURCE_GPIO;2 I' j5 j1 d; s8 O* B3 x
  20.   hlptim1.Init.RepetitionCounter = 0;2 i- _) h' q9 B# w/ N8 D8 X  H
  21.   if (HAL_LPTIM_Init(&hlptim1) != HAL_OK)
    : f* n2 F5 x* @! p' x
  22.   {
      o4 k" ]* t; Y6 K; j
  23.     Error_Handler();
    + q8 V. [8 q- G
  24.   }
    8 }8 l* |7 u# x; c. F
  25.   /* USER CODE BEGIN LPTIM1_Init 2 */
    # J( {5 ~5 {6 k/ Y
  26. % L( X  T) t& B6 F
  27.   /* USER CODE END LPTIM1_Init 2 */+ c, S; i. K/ ]
  28. / O1 u; n6 Y* Y2 c3 r
  29. }
复制代码

* w; \- [. B$ e( U- |5 U7 b3 j
' h4 l5 U( \3 O, V! b
" ~! T2 w6 R* _# W1 E% h这里可以选在HAL库 LL库
$ m6 d: n+ T5 N$ U1 ^" B+ m3 ]' b 666.jpg & v; c" f$ y5 b# f0 w* H4 t
+ \3 G% u" m7 w& i* S, v
  1. HAL_UART_Transmit_IT(&hlpuart1, (uint8_t*)aTxBuffer, TXBUFFERSIZE);
    & f/ c9 E* G, q3 ]# x; H
  2. & t+ r- M2 p# Q* k
  3.    HAL_Delay(1000);
复制代码

8 F( s" r' K$ [9 }$ o/ Z- T+ z+ M
8 ~' ^7 X. ^& B0 b0 ^: y7 f& g8 y0 _3 Z5 P3 o7 q% H) p: d
运行如下:
( o/ {# s8 ~9 t 7777.jpg # U7 O8 x1 y! N: T2 }: [

3 j! V( x* A7 v) H) [
6 V. F0 Y  W# e$ B( Q' O4 z
, R6 X5 Y- [& Y# E
QQ截图20240619150835.jpg
QQ截图20240619150835.jpg
赞 收藏 评论0 发布时间:2024-6-19 15:03

举报

0个回答

所属标签

相似技术帖

官网相关资源

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