为什么停止位无法配置成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 对于AT32F415而言,只有智能卡模式才支持0.5/和1.5 停止位
muyichuan2012 发表于 2023-12-5 18:02
对于AT32F415而言,只有智能卡模式才支持0.5/和1.5 停止位
感谢,最后发现设置成1停止位也能和这个芯片通信,规格书有点坑 串口通信很少用停止位1.5,对端通信也需要这样设置才行。 那就把发送端配成2 stop bit。 只要发送端输出的 stop 位大于接收端的位数即可。要不然怎么叫异步 某些串口硬件可能不支持1.5位的停止位配置。这可能是由于硬件设计或固件实现的限制。在这种情况下,您可能需要使用其他硬件或升级到支持1.5位停止位的硬件。 您的软件实现可能存在问题,导致无法正确配置停止位为1.5。 如果您的设备之间的通信协议要求使用特定配置的停止位,而您的设备无法满足这些要求,那么可能会导致通信失败。
页:
[1]