打印
[AT32F415]

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

[复制链接]
1087|7
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
    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,对端通信也需要这样设置才行。

使用特权

评论回复
5
xch| | 2023-12-6 12:11 | 只看该作者
那就把发送端配成2 stop bit。 只要发送端输出的 stop 位大于接收端的位数即可。要不然怎么叫异步

使用特权

评论回复
6
powerantone| | 2023-12-8 10:54 | 只看该作者
某些串口硬件可能不支持1.5位的停止位配置。这可能是由于硬件设计或固件实现的限制。在这种情况下,您可能需要使用其他硬件或升级到支持1.5位停止位的硬件。

使用特权

评论回复
7
stormwind123| | 2023-12-8 10:54 | 只看该作者
您的软件实现可能存在问题,导致无法正确配置停止位为1.5。

使用特权

评论回复
8
classroom| | 2023-12-8 10:54 | 只看该作者
如果您的设备之间的通信协议要求使用特定配置的停止位,而您的设备无法满足这些要求,那么可能会导致通信失败。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

3

主题

13

帖子

1

粉丝