Hi, all,
情景:cc2540通过串口(U0, alt2)DMA传输的方式接收外来的数据,然后将接收到的数据,通过蓝牙发送出去。现在问题是,每个数据包20B,都会分成2个数据包发送出去,如附件图片所示。
如图,发送01234567890123456789这20B数据时,蓝牙会将其分2次发送,第一次发送前面几个字节(每次不固定的),数据包后面的为随机码,第二次发送的情况与第一次的类似。
原因是2540用DMA接收串口数据时,将01234567890123456789这20B数据分两次接收了,然后就出现蓝牙发送两次数据包的情况?但是这20B数据不通过蓝牙发送出去,而是通过串口发回到PC,回显正常的。如果PC发送数据给2540的速度太快,回显也会有少量的乱码。
PC(或其他MCU)通过串口发送数据给2540,2540通过DMA接收串口的数据,2540读取接收到的数据,通过蓝牙将数据发送出去,这三者的速度怎样协调呢?
具体的来说,怎样处理串口的回调函数,去读取接收到的数据;怎样调整那些参数,优化串口DMA或者需要注意哪些地方?
谢谢TI专家,各位大神了!