Topic

FAQ
Login Register
串口第一个字节乱码
Jan 07, 2023 17:14

/

A

/A

多连接SDK版本:telink_b85m_ble_sdk_v4.0.1.2_20211118

例程:b85m_controller


操作步骤如下:

1、增加以下宏定义,初始化串口

#define HCI_TR_EN 1


2、在main函数中增加发送函数



3、上位机接收数据


结论:

经过验证,使用多连接的sdk,将串口波特率为115200,上位机接收到的第一个字节乱码


期望得到的回复

6 replies
potter_tang Jan 09, 2023 07:13
0
/A


我也遇到同样问题


TL_Soyo Jan 09, 2023 15:03
0
/A

你好,

  协议栈的串口使用fifo发送数据,建议按照协议栈的流程发送数据,如果需要直接调用串口发送,推荐使用uart_send_dma函数。

Mongouii [Author] Jan 09, 2023 15:38
0
/A

按照建议,将uart发送API修改为以下代码:


上位机接收结果截图:


结论:

使用dma发送接口进行发送,结果还是没能解决问题。出现问题的是发送数据的首字节,想来应该跟是否fifo发送没多大关系,个人觉得可能是底层的时钟频率错乱导致。

Mongouii [Author] Jan 09, 2023 15:44
0
/A

这里补充一点,测试了好几个波特率,发现只有115200这个波特率会出现这种情况。



TL_Soyo Jan 13, 2023 10:27
0
/A

请使用uart_send_dma函数,而非uart_dma_send函数,可以看到两个函数源码是有一些差异的,可能是导致数据不对的原因。



Mongouii [Author] Jan 13, 2023 11:47
0
/A

uart_send_dma函数也尝试过了,结果是一样的