【7840】uart单线模式

最近在学杰发7840串口,学习了一下串口单线模式

串口单线模式(半双工)用的比较少,一般很少有人用,我理解这个模式的好处就是减少一个线。只用一个TX就可以当发送又可以当接收。

串口单线半双工在这里插入图片描述
主要库函数就2个:
UART_SetSingleWire:使能单线模式
UART_SetTxDir:设置TX方向,可以设置为输入和输出

    uint8_t i = 0;
    status_t status;
    
    UART_SetTxDir(UART1, UART_TX_PIN_DIR_OUTPUT);  /* tx output */
    
    for(i = 0; i < UART_DATA_LEN; i++)
    {
        g_sendData[i] = 0x55 + i;
    }
    status = UART_DRV_SendDataPolling(1, g_sendData, UART_DATA_LEN);   /*发送数据*/
    OSIF_TimeDelay(1);
    if(status == STATUS_SUCCESS)
    {
        UART_SetTxDir(UART1, UART_TX_PIN_DIR_INPUT);  /* tx input */
        status = UART_DRV_ReceiveDataPolling(1,g_receiveData,UART_DATA_LEN);/*接收数据*/
        __nop();
    }
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
STM32的UART支持单线半双工模式,这种模式下只需要一根线来实现收发数据,通常被称为单线通信模式或者单总线通信模式。在这种模式下,数据的收发是通过方向控制来实现的。STM32的HAL库提供了相应的API来实现单线半双工模式,以下是相关的代码示例: 1. 初始化UART 在MXCube中,需要将UART的Mode设置为Half-Duplex,然后生成代码,即可使用HAL_UART_Init函数来初始化UART。如下所示: ``` huart1.Instance = USART1; huart1.Init.BaudRate = 115200; huart1.Init.WordLength = UART_WORDLENGTH_8B; huart1.Init.StopBits = UART_STOPBITS_1; huart1.Init.Parity = UART_PARITY_NONE; huart1.Init.Mode = UART_MODE_TX_RX; // Half-Duplex Mode huart1.Init.HwFlowCtl = UART_HWCONTROL_NONE; huart1.Init.OverSampling = UART_OVERSAMPLING_16; if (HAL_UART_Init(&huart1) != HAL_OK) { Error_Handler(); } ``` 2. 发送数据 在单线半双工模式下,发送数据需要先将发送方向置为输出模式,然后发送数据完毕后再将方向置为输入模式。以下是一个发送数据的示例: ``` HAL_GPIO_WritePin(GPIOA, GPIO_PIN_2, GPIO_PIN_RESET); // Set TX direction HAL_UART_Transmit(&huart1, (uint8_t *)"Hello World!", 12, 1000); HAL_GPIO_WritePin(GPIOA, GPIO_PIN_2, GPIO_PIN_SET); // Set RX direction ``` 3. 接收数据 在单线半双工模式下,接收数据需要先将接收方向置为输入模式,然后等待数据接收完毕后再将方向置为输出模式。以下是一个接收数据的示例: ``` HAL_GPIO_WritePin(GPIOA, GPIO_PIN_2, GPIO_PIN_SET); // Set RX direction uint8_t rx_data[10]; HAL_UART_Receive(&huart1, rx_data, 10, 1000); HAL_GPIO_WritePin(GPIOA, GPIO_PIN_2, GPIO_PIN_RESET); // Set TX direction ``` 需要注意的是,单线半双工模式下需要手动控制发送/接收方向,因此需要外部电路来控制方向线的状态。在示例代码中,我们使用了GPIOA的第2个引脚来控制方向线的状态。具体的电路设计需要根据实际需求来进行。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值