sy695970322 发表于 2023-12-5 13:53

为什么停止位无法配置成1.5,直接卡死在发送,无法和BL0939通信

    usart_init(UART5, 4800, USART_DATA_8BITS, USART_STOP_1_5_BIT);
    usart_parity_selection_config(UART5,USART_PARITY_NONE);
    usart_hardware_flow_control_set (UART5, USART_HARDWARE_FLOW_NONE);
    usart_transmitter_enable(UART5, TRUE);
    usart_receiver_enable(UART5, TRUE);

void usart5_send(uint8_t *ptemp, uint16_t len)   //发送函数
{
    for(u16 i=0; i<len; i++)
    {
      while(usart_flag_get(UART5, USART_TDBE_FLAG) == RESET);
      usart_data_transmit(UART5,*ptemp++);
      while(usart_flag_get(UART5, USART_TDC_FLAG) == RESET);
    }
}
和BL0939计量芯片通信,这个停止位设置成1.5或0.5就卡死在发生函数里面,设置成1和2可以发送,但是BL0939需要的是4800bps,N,8,1.5

muyichuan2012 发表于 2023-12-5 18:02

对于AT32F415而言,只有智能卡模式才支持0.5/和1.5 停止位

sy695970322 发表于 2023-12-6 08:29

muyichuan2012 发表于 2023-12-5 18:02
对于AT32F415而言,只有智能卡模式才支持0.5/和1.5 停止位

感谢,最后发现设置成1停止位也能和这个芯片通信,规格书有点坑

caigang13 发表于 2023-12-6 10:47

串口通信很少用停止位1.5,对端通信也需要这样设置才行。

xch 发表于 2023-12-6 12:11

那就把发送端配成2 stop bit。 只要发送端输出的 stop 位大于接收端的位数即可。要不然怎么叫异步

powerantone 发表于 2023-12-8 10:54

某些串口硬件可能不支持1.5位的停止位配置。这可能是由于硬件设计或固件实现的限制。在这种情况下,您可能需要使用其他硬件或升级到支持1.5位停止位的硬件。

stormwind123 发表于 2023-12-8 10:54

您的软件实现可能存在问题,导致无法正确配置停止位为1.5。

classroom 发表于 2023-12-8 10:54

如果您的设备之间的通信协议要求使用特定配置的停止位,而您的设备无法满足这些要求,那么可能会导致通信失败。
页: [1]
查看完整版本: 为什么停止位无法配置成1.5,直接卡死在发送,无法和BL0939通信