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

[复制链接]
1617|7
 楼主| sy695970322 发表于 2023-12-5 13:53 | 显示全部楼层 |阅读模式
    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 停止位
2506656ef50c3712b.png
 楼主| 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 | 显示全部楼层
如果您的设备之间的通信协议要求使用特定配置的停止位,而您的设备无法满足这些要求,那么可能会导致通信失败。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

4

主题

18

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部