STM32 uart 单线半双工模式(cube版本)

Posted sc-electronic

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了STM32 uart 单线半双工模式(cube版本)相关的知识,希望对你有一定的参考价值。

STM32 uart 单线半双工模式(cube版本)

1.引言

在某些场合下需要进行三线制串口通信(信号线只有一根),这就要求进行单线半双工的模式进行通信。在这种情况进行数据协议传输的过程中,信号端需要来回切换输入输出模式。或者可以将控制端口的发送和接口进行短接。那针对这种情况,STM32提供了half-duplex功能,只要在软件里面开启这项功能,芯片硬件层内部就会将发送和接收端口进行短接。具体的芯片如何寄存器操作这边不做赘述,可以自己手册usart篇进行查阅。我们下面来看看如何利用cubeMx进行配置。

2.配置关键步骤

本文使用的STM32F0芯片,打开cubeMx在Pinout标签也下的USART1的mode 使能Sigle Wire(Half-Duplex)。如下图所示。
技术分享图片

其他配置跟普通的usart配置一样没有区别。注意这个时候硬件连线的时候需要接在TX端口。

3.软件编写

配置完成生产代码之后,在main函数中利用添加代码进行测试。

每次发送需要使能相应的功能
HAL_HalfDuplex_EnableTransmitter

同理,接收数据前也要使能相应的功能
HAL_HalfDuplex_EnableReceiver(&huart1);


 while (1)
  {
    
  /* USER CODE END WHILE */
    
  /* USER CODE BEGIN 3 */
    static uint8_t test = 6;
    //使能发送功能,每次发送前需要调用此函数
    HAL_HalfDuplex_EnableTransmitter(&huart1);
    HAL_UART_Transmit(&huart1, &test, 1, 2000);
    //使能接收功能。每次接收前需要调用此函数
    HAL_HalfDuplex_EnableReceiver(&huart1);
    HAL_UART_Receive(&huart1, &res, 1, 2000);

    if (res==6)
    {
      test++;
    }
  }

-----------------本文作者“智御电子”,期待与电子爱好者交流学习。----------------




以上是关于STM32 uart 单线半双工模式(cube版本)的主要内容,如果未能解决你的问题,请参考以下文章

求ax-12舵机的驱动程序,stm32的,尤其是那个单线半双工串口怎么配置啊

stm32串口

STM32 cube接收中断数据

stm32 usart的几种通信模式

SPI-SPI单线半双工数据收发应用笔记

STM32F4在半双工/单工模式下停用SPI的正确方法