• 431查看
  • 0回复

[芯片硬件] 基于STM32H563演示UART+DMA功能

[复制链接]


该用户从未签到

发表于 7-5-2024 19:39:46 | 显示全部楼层 |阅读模式

汽车零部件采购、销售通信录       填写你的培训需求,我们帮你找      招募汽车专业培训老师


基于STM32H563演示UART+DMA功能w1.jpg

最近可能不少人手上弄到了ST发布的的基于M33内核的H5系列Nucleo开发板,这里也用该开发板体验下UART通信,做些验证与确认。【提醒,下面测试过程中没有开启TrustZone功能】

有人在使用过程中,根据开发板手册描述,芯片的UART3默认与STLINK的VCP口相连,测试中感觉好像又不是。这里不妨一起验证下。根据该开放板使用手册描述,UART3[PD8/PD9]默认是与STLINK VCP的接口。

基于STM32H563演示UART+DMA功能w2.jpg

基于上面硬件条件,使用CubeMx简单配置即可验证。

基于STM32H563演示UART+DMA功能w3.jpg

基于STM32H563演示UART+DMA功能w4.jpg

创建工程后,在用户代码里调用HAL_UART_Transmit(&huart3, (uint8_t *)tx1_buffer,  Size, TimeOut)函数,在串口输出终端即可看到结果。看来一切正常。

基于STM32H563演示UART+DMA功能w5.jpg

说明UART3的TX/RX脚【PD8/PD9】的确如手册所言,默认与VCP接口相连。

上面是基于查询方式做了UART的发送,如果采用DMA方式呢?我们也可以顺便体验下。

我这里使用GPDMA1的CH0和CH1,分别实现UART3的接收与发送。UART3的DMA接收采用Circular模式,外设到内存的传输方向;发送采用Normal模式,内存到外设的传输方向。源端与目的端访问数据宽度均为Byte。DMA请求使用标准请求模式。

基于STM32H563演示UART+DMA功能w6.jpg

基于STM32H563演示UART+DMA功能w7.jpg

基于STM32H563演示UART+DMA功能w8.jpg

创建基于STM32HAL库的工程,添加、整理用户代码。

#deifne RX_SIZE  (16)#define TX_SIZE  (33)  ALIGN_32BYTES (uint8_t tx1_buffer[])="**STM32H5 UART Test with Polling**\r\n\n";ALIGN_32BYTES (uint8_t tx_buffer[])="**STM32H5 UART Test with DMA**\r\n\n";ALIGN_32BYTES (uint8_t rx_buffer[16]);    __HAL_LINKDMA(&huart3, hdmarx , handle_GPDMA1_Channel0);
  __HAL_LINKDMA(&huart3, hdmatx, handle_GPDMA1_Channel1);       HAL_UART_Receive_DMA(&huart3,  rx_buffer,  RX_SIZE);//For RX      。。。。。     /* USER CODE BEGIN WHILE */while (1)  {
  HAL_Delay(2023);
  HAL_UART_Transmit_DMA(&huart3, (uint8_t *)tx_buffer, TX_SIZE);  //HAL_UART_Transmit(&huart3, (uint8_t *)tx1_buffer, 37,0xfff);   huart3.gState = HAL_UART_STATE_READY;      }
   
稍加调试后运行程序看结果。下面左侧窗口为UART3通过DMA发送出来的信息,右侧为串口助手发送后UART3通过DMA接收到的信息。

基于STM32H563演示UART+DMA功能w9.jpg

好,基于STM32H5的UART通信的演示就到这里。内容不难,主要是做了些验证。这些验证过程及结果的确也能为初次接触该板或该MCU系列的人在遇到相关问题时予以信心,在调试受阻时能尽快地锁定问题方向。毕竟做开发调试时,信心和问题方向都是非常重要的因素。




该用户从未签到

发表于 11-3-2025 17:52:02 | 显示全部楼层
关于STM32H563的UART通信和DMA功能验证,您提出的问题,已经接收到,针对这些技术内容我将给予专业解答。

基于您所拥有的开发板资源,我建议您首先确认芯片手册中关于UART和DMA功能的描述。首先确保正确连接开发板与STLINK的VCP接口,确保UART3与STLINK的通信正常。然后利用CubeMx工具进行简单配置以验证通信情况。如果在此过程中遇到问题,建议您参考开发板手册中关于UART和DMA的具体配置流程,同时查看CubeMx的相关文档进行进一步学习。我们可通过实验和测试验证系统功能是否可靠,确保各项参数设置正确无误。若有任何疑问或需要进一步的指导,请随时与我联系。

[内容由汽车工程师之家人工智能总结,欢迎免费使用,见贴尾]
回复 支持 反对

使用道具 举报



该用户从未签到

发表于 11-3-2025 17:52:02 | 显示全部楼层
针对您提到的基于STM32H563演示UART+DMA功能的需求,以下是我的专业回复:

您好,针对STM32H563开发板,使用UART通信结合DMA(Direct Memory Access)功能是一个常见的应用。首先,请确认您的开发板与STLINK的VCP接口连接正常。通过CubeMx工具,您可以方便地配置UART3及DMA的相关参数。在配置过程中,请确保正确设置UART的波特率、数据位、停止位及校验位等参数。关于DMA配置,需设置源地址、目标地址及数据传输方向。测试时,可通过发送与接收数据来验证UART通信及DMA传输功能是否正常。

创建工程时,建议使用STM32CubeIDE或Keil等开发工具,根据开发板型号选择合适的固件库。在项目中包含必要的中间件和驱动,如UART通信库和DMA库。编写代码时,请遵循良好的编程规范,确保代码的可读性和可维护性。

希望以上回复能对您有所帮助。如有更多问题,欢迎继续交流。

[内容由汽车工程师之家人工智能总结,欢迎免费使用,见贴尾]
回复 支持 反对

使用道具 举报

快速发帖

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

本版积分规则

QQ|手机版|小黑屋|Archiver|汽车工程师之家 ( 渝ICP备18012993号-1 )

GMT+8, 19-8-2025 02:18 , Processed in 0.362934 second(s), 36 queries .

Powered by Discuz! X3.5

© 2001-2013 Comsenz Inc.