中
A
多连接SDK版本:telink_b85m_ble_sdk_v4.0.1.2_20211118
例程:b85m_controller
操作步骤如下:
1、增加以下宏定义,初始化串口
#define HCI_TR_EN 1
2、在main函数中增加发送函数
3、上位机接收数据
结论:
经过验证,使用多连接的sdk,将串口波特率为115200,上位机接收到的第一个字节乱码
期望得到的回复
我也遇到同样问题
你好,
协议栈的串口使用fifo发送数据,建议按照协议栈的流程发送数据,如果需要直接调用串口发送,推荐使用uart_send_dma函数。
按照建议,将uart发送API修改为以下代码:
上位机接收结果截图:
使用dma发送接口进行发送,结果还是没能解决问题。出现问题的是发送数据的首字节,想来应该跟是否fifo发送没多大关系,个人觉得可能是底层的时钟频率错乱导致。
这里补充一点,测试了好几个波特率,发现只有115200这个波特率会出现这种情况。
请使用uart_send_dma函数,而非uart_dma_send函数,可以看到两个函数源码是有一些差异的,可能是导致数据不对的原因。
uart_send_dma函数也尝试过了,结果是一样的
我也遇到同样问题
你好,
协议栈的串口使用fifo发送数据,建议按照协议栈的流程发送数据,如果需要直接调用串口发送,推荐使用uart_send_dma函数。
按照建议,将uart发送API修改为以下代码:
上位机接收结果截图:
结论:
使用dma发送接口进行发送,结果还是没能解决问题。出现问题的是发送数据的首字节,想来应该跟是否fifo发送没多大关系,个人觉得可能是底层的时钟频率错乱导致。
这里补充一点,测试了好几个波特率,发现只有115200这个波特率会出现这种情况。
请使用uart_send_dma函数,而非uart_dma_send函数,可以看到两个函数源码是有一些差异的,可能是导致数据不对的原因。
uart_send_dma函数也尝试过了,结果是一样的