1917|6

166

帖子

1

TA的资源

一粒金砂(高级)

楼主
 

【NUCLEO-U083RC】2.低功耗串口(LPUART)的使用 [复制链接]

本帖最后由 电子烂人 于 2024-4-28 20:37 编辑

1.引言

    LPUART(Low power universal asynchronous receiver transmitter),即低功耗通用异步收发器,是STM32超低功耗单片机中的一个串行通信接口。LPUART能够在有限的功耗下实现双向UART通信,并支持多种功能和特性。作为STM32超低功耗单片机的利器,能够在低功耗模式下运行,同时保留了大多数传统UART的功能。

    值得注意的是,LPUART支持硬件FIFO和DMA。

    废话不多说,实战见分晓。

2.环境配置

    环境为STM32cuebIDE,版本1.15.0;

    在IOC中使能LPUART1,配置为异步模式,不使能RS232和RS485。波特率就用最基本的115200,数据位8BIT(1头+7数据)

 

 

    相比UART,LPUART还有一个特殊的地方在于它的时钟,是单独配置的

    LP的时钟树在时钟部分的右下角,不容易察觉到,这一个小细节也是在看LP相关资料时候偶尔看到的。
LP时钟树

    可以由SYSCLK\PCLK\LSE等时钟配置LPUART和lptime,这一点还是蛮不错的,不过UI所在的位置比较偏,可能大多数时候都不容易看到吧。

    配置完成后,生成代码

3.修改代码部分

    配置好代码后先检查LPUART部分代码的配置:

static void MX_LPUART1_UART_Init(void)
{

  hlpuart1.Instance = LPUART1;
  hlpuart1.Init.BaudRate = 115200;
  hlpuart1.Init.WordLength = UART_WORDLENGTH_8B;
  hlpuart1.Init.StopBits = UART_STOPBITS_1;
  hlpuart1.Init.Parity = UART_PARITY_NONE;
  hlpuart1.Init.Mode = UART_MODE_TX_RX;
  hlpuart1.Init.HwFlowCtl = UART_HWCONTROL_NONE;
  hlpuart1.Init.OneBitSampling = UART_ONE_BIT_SAMPLE_DISABLE;
  hlpuart1.AdvancedInit.AdvFeatureInit = UART_ADVFEATURE_NO_INIT;
  hlpuart1.FifoMode = UART_FIFOMODE_DISABLE;
  if (HAL_UART_Init(&hlpuart1) != HAL_OK)
  {
    Error_Handler();
  }
  if (HAL_UARTEx_SetTxFifoThreshold(&hlpuart1, UART_TXFIFO_THRESHOLD_1_8) != HAL_OK)
  {
    Error_Handler();
  }
  if (HAL_UARTEx_SetRxFifoThreshold(&hlpuart1, UART_RXFIFO_THRESHOLD_1_8) != HAL_OK)
  {
    Error_Handler();
  }
  if (HAL_UARTEx_DisableFifoMode(&hlpuart1) != HAL_OK)
  {
    Error_Handler();
  }


}

编辑一段要发送的文字:

/* USER CODE BEGIN PV */
uint8_t RxBuffer[5];
/* USER CODE END PV */

在主函数中使能LPUART(若配置好代码会有)。

LPUART 的HAL 语法与uart相同,可以直接套用UART的代码。

int main(void)
{

  SystemClock_Config();
  MX_GPIO_Init();
  MX_LPUART1_UART_Init();
  while (1)
  {
    if(HAL_UART_receive(&hlpuart1, (uint8_t*)RxBuffer,5,100 )
	   HAL_UART_Transmit(&hlpuart1, (uint8_t*)RxBuffer,5,100 );
  }
}//为保证简介
删去了官方的注释区域

4.观察现象

  

WeChat_20240428203755

 

 

 

补充内容 (2024-5-2 13:25): 主函数循环那里改动了一下,源代码有误: while (1) { if(HAL_UART_Receive(&hlpuart1,(uint8_t*)RxBuffer,5,100 )==HAL_OK) HAL_UART_Transmit(&hlpuart1, (uint8_t*)RxBuffer,5,100 ); }
此帖出自stm32/stm8论坛

最新回复

LPUART通信的引脚电压水平如何     详情 回复 发表于 2024-5-1 08:59
点赞 关注
个人签名

没用比没有强

 

回复
举报

7003

帖子

11

TA的资源

版主

沙发
 

电流待机情况怎么样?可以低到什么样的水平呀。

此帖出自stm32/stm8论坛

点评

电流计还没到手,等过两天试试LP和普通uart的功耗  详情 回复 发表于 2024-4-29 09:03
 
 

回复

166

帖子

1

TA的资源

一粒金砂(高级)

板凳
 
lugl4313820 发表于 2024-4-29 08:57 电流待机情况怎么样?可以低到什么样的水平呀。

电流计还没到手,等过两天试试LP和普通uart的功耗

此帖出自stm32/stm8论坛

点评

大佬不会入手功率计了吧?我测试了好几种状态,不知道是我的电流表的问题还是真实情况,好象没有手册中的这么好。  详情 回复 发表于 2024-4-29 09:59
 
个人签名

没用比没有强

 

回复

7003

帖子

11

TA的资源

版主

4
 
电子烂人 发表于 2024-4-29 09:03 电流计还没到手,等过两天试试LP和普通uart的功耗

大佬不会入手功率计了吧?我测试了好几种状态,不知道是我的电流表的问题还是真实情况,好象没有手册中的这么好。

此帖出自stm32/stm8论坛

点评

功率计是买不起的 这个问题我也注意到了,手册里好像是在电池供电的低功耗模式下,不知道是不是这个原因?  详情 回复 发表于 2024-4-29 11:35
 
 
 

回复

166

帖子

1

TA的资源

一粒金砂(高级)

5
 
lugl4313820 发表于 2024-4-29 09:59 大佬不会入手功率计了吧?我测试了好几种状态,不知道是我的电流表的问题还是真实情况,好象没有手册中的 ...

功率计是买不起的

这个问题我也注意到了,手册里好像是在电池供电的低功耗模式下,不知道是不是这个原因?

此帖出自stm32/stm8论坛
 
个人签名

没用比没有强

 
 

回复

6523

帖子

9

TA的资源

版主

6
 

LPUART通信的引脚电压水平如何  

此帖出自stm32/stm8论坛
 
个人签名

在爱好的道路上不断前进,在生活的迷雾中播撒光引

 
 

回复

166

帖子

1

TA的资源

一粒金砂(高级)

7
 
应管理大大的要求附上源代码和图片: 【NUCLEO-U083RC】2.低功耗串口(LPUART)的使用.zip (11.43 MB, 下载次数: 5)
此帖出自stm32/stm8论坛
 
个人签名

没用比没有强

 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/8 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表