[无线通信] cc2540的串口通讯实在不敢恭维啊

[复制链接]
7458|16
 楼主| e08610318 发表于 2015-1-30 10:51 | 显示全部楼层 |阅读模式
用的cc2540 hal层的UART,实在是不好用啊,最基本的通信功能,却让我如此纠结,自调试它的串口以来,就没有很好的解决。
上截图:


这个是我的串口输出调试信息。看,CRC校验失败了。
总是会有那么点几率,部分字节发过来是乱的,要么就是多发了几个字节,要么就是少发了几个字节。

你说,自己写UART驱动嘛,也可以,发一个字节等待该字节发送完成,但是捏。。。你发的数据多了,你的OSAL任务占用系统时间多了,蓝牙就死掉了。
吐槽下,有没有大神可以给我一些提示。
我现在只能在应用上做兼容。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
taoshiyi 发表于 2015-1-30 10:54 | 显示全部楼层
dreamfantcy 发表于 2015-1-31 14:40 来自手机 | 显示全部楼层
这个协议栈给的串口驱动本来就有问题
罗菜鸟 发表于 2015-3-13 01:06 | 显示全部楼层
用DMA没有?
罗菜鸟 发表于 2015-3-13 01:06 | 显示全部楼层
dreamfantcy 发表于 2015-1-31 14:40
这个协议栈给的串口驱动本来就有问题

我在CC2530上面的串口就做得很好。
dreamfantcy 发表于 2015-4-4 14:34 | 显示全部楼层
罗菜鸟 发表于 2015-3-13 01:06
我在CC2530上面的串口就做得很好。

嗯,2530那个好多了
bjx880514 发表于 2015-4-8 12:40 | 显示全部楼层
请问您蓝牙协议栈怎么编写的 我毫无头绪 求指教 方便的话+qq 534631913
 楼主| e08610318 发表于 2015-4-8 13:47 | 显示全部楼层
bjx880514 发表于 2015-4-8 12:40
请问您蓝牙协议栈怎么编写的 我毫无头绪 求指教 方便的话+qq 534631913

cc2540的开发和蓝牙协议栈的编写又是另外一码事的,俺不会
 楼主| e08610318 发表于 2015-4-8 14:50 | 显示全部楼层
罗菜鸟 发表于 2015-3-13 01:06
我在CC2530上面的串口就做得很好。

cc2530没搞过 没经验
罗菜鸟 发表于 2015-4-18 23:35 | 显示全部楼层
e08610318 发表于 2015-4-8 14:50
cc2530没搞过 没经验

两个串口都是一样的,你串口是哪一层出了问题?有没有用协议栈自带的hal_uart?
 楼主| e08610318 发表于 2015-4-20 09:28 | 显示全部楼层
罗菜鸟 发表于 2015-4-18 23:35
两个串口都是一样的,你串口是哪一层出了问题?有没有用协议栈自带的hal_uart? ...

用了,hal_uart api + dma,还是会小概率出问题,但是都被应用层冗余掉了,用还能用
罗菜鸟 发表于 2015-4-22 17:50 | 显示全部楼层
e08610318 发表于 2015-4-20 09:28
用了,hal_uart api + dma,还是会小概率出问题,但是都被应用层冗余掉了,用还能用 ...

参考CC2530 ZNP的例程,用消息队列来保存要发送的串口流,然后再串口DMA空的时候在把消息队列压入DMA
 楼主| e08610318 发表于 2015-4-27 09:19 | 显示全部楼层
罗菜鸟 发表于 2015-4-22 17:50
参考CC2530 ZNP的例程,用消息队列来保存要发送的串口流,然后再串口DMA空的时候在把消息队列压入DMA ...

嗯,我就是这么做的。一般都是这么做的
caijin 发表于 2015-5-15 17:24 | 显示全部楼层
我用DMA
sldlfkiii 发表于 2015-5-20 11:38 | 显示全部楼层
总有大神会过来讲解。先占一席之位,坐等
楼亮亮 发表于 2015-6-29 17:00 来自手机 | 显示全部楼层
确实很有问题,lz可以周期性判断缓冲中是否有数据,然后重新初始化dma
 楼主| e08610318 发表于 2015-6-29 17:43 | 显示全部楼层
本帖最后由 e08610318 于 2015-6-29 17:50 编辑
楼亮亮 发表于 2015-6-29 17:00
确实很有问题,lz可以周期性判断缓冲中是否有数据,然后重新初始化dma

查过了,HAL自带的缓冲有限,如果应用层塞了太多的数据,就出问题了,开始是自己应用层这块判断做的不太好,导致发错概率较大。楼上有人说过了,等HAL的自带缓冲空了再装数据,另外就是能用DMA就用DMA,用中断的话问题比较大,另外建议应用层做做补发机制。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:你可能不知道今天所做的事情会对未来有多大的干预能力!

67

主题

310

帖子

12

粉丝
快速回复 在线客服 返回列表 返回顶部