搜索
bottom↓
回复: 20

TI 254x 蓝牙协议栈 串口通讯效率低的要死

[复制链接]

出0入0汤圆

发表于 2016-8-19 13:43:33 | 显示全部楼层 |阅读模式
大家有用过TI协议栈里的串口吗?
协议栈中的串口0,是封装成NPI来用的,使用这个封装好的函数,来接收串口数据。

他使用的是串口DMA方式,然后协议栈轮训处理,发现DMA所指向的内存处有数据,就提取出来。
但是实际应用中,发送过去的数据(其实是串口的一些指令),这些指令被识别出来的效率:
每秒发送一次指令,指令长度20Byte,发送100条,有10条命令没有被单片机识别出来。。。

我做的操作是,接收到数据之后

  1. static void npi_cb(uint8 port, uint8 event)
  2. {
  3.     (void)port;
  4.     uint8 num=0;
  5.     uint8 buf[CORE_CMD_QUEUE_SIZE];        //Max Len of CMD
  6.    
  7.     num = NPI_RxBufLen();
  8.     if(num < CORE_CMD_QUEUE_SIZE)
  9.     {
  10.         NPI_ReadTransport(buf,num);
  11.         
  12.         for(uint8 i=0;i<num;i++)   
  13.             QueueInput(pCoreCmdQueue,buf[i]);   //存到一个队列,去识别指令
  14.     }
  15. }
复制代码



串口效率这么低,根本没办法使用啊。
从网上看到帖子:
CC2540协议栈高速串口通信解决(UART的DMA方式)

但是他没给出具体怎么处理DMA数据,协议栈里的函数感觉比较复杂。串口+DMA这块。

大家有没有处理过这类的工程,怎么解决的?


我已经试过串口不用他的NPI,使用串口0中断把数据存入队列。但是队列里的数据更是惨不忍睹丢了很多,几乎不能识别任何一条指令。。。













阿莫论坛20周年了!感谢大家的支持与爱护!!

曾经有一段真挚的爱情摆在我的面前,我没有珍惜,现在想起来,还好我没有珍惜……

出0入0汤圆

发表于 2016-8-19 16:00:06 | 显示全部楼层
正在学习cc541,同感

出0入0汤圆

发表于 2016-8-19 16:11:00 | 显示全部楼层
Gao_Buer 发表于 2016-8-19 16:00
正在学习cc541,同感

有什么好资料吗

出0入0汤圆

发表于 2016-8-19 17:11:57 | 显示全部楼层
有透传资料吗

出0入54汤圆

发表于 2016-8-19 17:23:45 | 显示全部楼层
51核能跑这样已经不错啦

出0入0汤圆

发表于 2016-8-19 18:53:54 | 显示全部楼层
楼主查看过没有识别的数据内容吗?TI大厂应该不会有这种问题吧?

出0入8汤圆

发表于 2016-8-19 19:30:08 | 显示全部楼层
之前我们公司有一个蓝牙项目外包的,用的2541,感觉还可以啊,程序不是我写的,帮不到楼主

出0入0汤圆

发表于 2016-8-19 21:58:22 | 显示全部楼层
我觉得是楼主的问题啊,再不济也不能效率这么低吧!

出0入0汤圆

发表于 2016-8-19 23:00:54 来自手机 | 显示全部楼层
目前再用2640  npi这个库做的并不好,发1k的包直接就挂,开不开流控都一样。不过lz的串口效率低的离谱,建议检查下代码

出0入0汤圆

发表于 2016-8-19 23:02:16 来自手机 | 显示全部楼层
我现在模拟spp  速度大概18k npi模块不太稳定

出0入0汤圆

 楼主| 发表于 2016-8-22 00:19:01 | 显示全部楼层
改用了串口0中断,降低波特率到9600以后,效果变得还不错

出70入0汤圆

发表于 2016-8-30 22:26:41 | 显示全部楼层
也在弄蓝牙串口项目,但是有一个问题,不知道怎么处理数据的完整性!

出0入0汤圆

 楼主| 发表于 2016-8-30 22:39:22 | 显示全部楼层
liyo2012 发表于 2016-8-30 22:26
也在弄蓝牙串口项目,但是有一个问题,不知道怎么处理数据的完整性!

我已经不用协议栈的NPI那个驱动了。
直接改用了串口0中断方式。

出0入0汤圆

发表于 2016-9-12 09:55:50 | 显示全部楼层
看下程序吧,肯定跟程序有关系了,用的是1.4.1协议栈么?另外串口波特率别设置太高。我试过4K/S,不丢包的。

出0入0汤圆

 楼主| 发表于 2016-9-12 10:23:38 | 显示全部楼层
apolloalfred 发表于 2016-9-12 09:55
看下程序吧,肯定跟程序有关系了,用的是1.4.1协议栈么?另外串口波特率别设置太高。我试过4K/S,不丢包的 ...

嗯,波特率低一些的话,不会丢包。
但是你4K也太低了吧。。。

我1.3.2的协议栈,现在用的中断,9600



出0入0汤圆

发表于 2016-9-12 11:38:18 | 显示全部楼层
WM_CH 发表于 2016-9-12 10:23
嗯,波特率低一些的话,不会丢包。
但是你4K也太低了吧。。。

串口的数据最终是要蓝牙传出去的,官方速度测试结果也就5.7K/S,串口再快也没啥用啊,毕竟51核,跑协议时再处理串口,如果任务多了,肯定蓝牙连接会断的。

出0入0汤圆

发表于 2016-9-12 12:46:00 | 显示全部楼层
楼主,我用2541做透传,1.5K稳定传输,没发现有丢包的

出0入0汤圆

发表于 2016-9-12 15:33:27 | 显示全部楼层
楼主,我是采用的单字节解析的方式处理串口数据的,没有发现你说的问题,可以交流交流

出0入0汤圆

发表于 2016-9-30 15:28:24 | 显示全部楼层
用USB CDC吧,稳定的多。

出0入0汤圆

发表于 2016-10-28 09:37:40 | 显示全部楼层
传输速度要求高的话需要做丢包处理的,要是发送失败就重新发送这包。

出0入0汤圆

发表于 2016-10-28 12:55:53 | 显示全部楼层
调整了整个系统架构,把流控映射到app层,避免丢数据和系统挂掉。另外楼主可以看下,NPI线程的优先级比APP高,如果串口数据过多会阻塞APP,这样数据也发不出去
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-8-25 20:11

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表