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++;
}
}
-----------------本文作者“智御電子”,期待與電子愛好者交流學習。----------------