微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 手机设计讨论 > MTK手机平台交流 > mtk6572平台,上层读uart通信得到的数据会分段,大家知道原因吗?

mtk6572平台,上层读uart通信得到的数据会分段,大家知道原因吗?

时间:10-02 整理:3721RD 点击:
       我们在6572平台利用UART2来通信来传输数据,对应的文件是 /dev/ttyMT1,上层先用jni打开 ttyMT1,再进行读写操作,配置的BANDRATE 是 57600,现在发现上层apk 在阻塞read的时候,数据被分包了,比如说底层的一个IC的tx向UART2 一次传输的数据是 “Nov 30 2015,14:21:11” ,到java层 InputStream read 的时候,Log打出来的是两段数据,先来是 “Nov 30 2015,” ,再来一段 “14:21:11” ,而不是 整个长度过来的,这样会影响上层apk解析数据。通过示波器实测tx线上的波形,数据是连续的波形,不知为何上层apk会分段。大家有何支招?谢谢!

我们做实验还发现,在debug版本下,通过在mtk_uart_rx_chars的1188行加打印语句printk("data_byte is %d,rx is %d ",data_byte,port->icount.rx);,之后再做实验时,从串口读出来的数据99%都不会分包,比如底层每隔两秒循环每次发26个英文字母,MKT接收测试十分钟左右都没有分包,上层收到的都是完整的,推测printk起了延时作用;没加打印之前,基本上每次都会分包。但是编译USER版本的量产软件,由于printk不再起作用,数据还是会分包。请问下是否能在user版本下能让这句printk起作用?或者起到类似UART延时的处理方法

是这样的,貌似哪个平台的串口都是这样,你可以直接把数据都读出来,然后放进一个buffer做数据分析就行,一次接不完就接两次

是的,当前我们确实是在上层做了延时,把读到的数据放在一起再做处理,因为不确定什么时候才是接收完。但是我们碰到这种情况:底层IC的TX发给MTK的既有数据信息,又有应答信息,如果每次发送的完整包被分段了,就有可能上层收到数据信息和应答信息混淆在一起的包,上层无法处理。请问这种情况如何处理好?多谢!

应该设计个协议,包头+长度+内容+包尾;最后解包数据内容

也是种解决思路,两边的发送和接收都统一起来

上一篇:屏幕显示有问题
下一篇:4+4,4+8

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top