打印
[无线通信]

cc2540的串口通讯实在不敢恭维啊

[复制链接]
6872|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没有?

使用特权

评论回复
5
罗菜鸟| | 2015-3-13 01:06 | 只看该作者
dreamfantcy 发表于 2015-1-31 14:40
这个协议栈给的串口驱动本来就有问题

我在CC2530上面的串口就做得很好。

使用特权

评论回复
6
dreamfantcy| | 2015-4-4 14:34 | 只看该作者
罗菜鸟 发表于 2015-3-13 01:06
我在CC2530上面的串口就做得很好。

嗯,2530那个好多了

使用特权

评论回复
7
bjx880514| | 2015-4-8 12:40 | 只看该作者
请问您蓝牙协议栈怎么编写的 我毫无头绪 求指教 方便的话+qq 534631913

使用特权

评论回复
8
e08610318|  楼主 | 2015-4-8 13:47 | 只看该作者
bjx880514 发表于 2015-4-8 12:40
请问您蓝牙协议栈怎么编写的 我毫无头绪 求指教 方便的话+qq 534631913

cc2540的开发和蓝牙协议栈的编写又是另外一码事的,俺不会

使用特权

评论回复
9
e08610318|  楼主 | 2015-4-8 14:50 | 只看该作者
罗菜鸟 发表于 2015-3-13 01:06
我在CC2530上面的串口就做得很好。

cc2530没搞过 没经验

使用特权

评论回复
10
罗菜鸟| | 2015-4-18 23:35 | 只看该作者
e08610318 发表于 2015-4-8 14:50
cc2530没搞过 没经验

两个串口都是一样的,你串口是哪一层出了问题?有没有用协议栈自带的hal_uart?

使用特权

评论回复
11
e08610318|  楼主 | 2015-4-20 09:28 | 只看该作者
罗菜鸟 发表于 2015-4-18 23:35
两个串口都是一样的,你串口是哪一层出了问题?有没有用协议栈自带的hal_uart? ...

用了,hal_uart api + dma,还是会小概率出问题,但是都被应用层冗余掉了,用还能用

使用特权

评论回复
12
罗菜鸟| | 2015-4-22 17:50 | 只看该作者
e08610318 发表于 2015-4-20 09:28
用了,hal_uart api + dma,还是会小概率出问题,但是都被应用层冗余掉了,用还能用 ...

参考CC2530 ZNP的例程,用消息队列来保存要发送的串口流,然后再串口DMA空的时候在把消息队列压入DMA

使用特权

评论回复
13
e08610318|  楼主 | 2015-4-27 09:19 | 只看该作者
罗菜鸟 发表于 2015-4-22 17:50
参考CC2530 ZNP的例程,用消息队列来保存要发送的串口流,然后再串口DMA空的时候在把消息队列压入DMA ...

嗯,我就是这么做的。一般都是这么做的

使用特权

评论回复
14
caijin| | 2015-5-15 17:24 | 只看该作者
我用DMA

使用特权

评论回复
15
sldlfkiii| | 2015-5-20 11:38 | 只看该作者
总有大神会过来讲解。先占一席之位,坐等

使用特权

评论回复
16
楼亮亮| | 2015-6-29 17:00 | 只看该作者
确实很有问题,lz可以周期性判断缓冲中是否有数据,然后重新初始化dma

使用特权

评论回复
17
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

粉丝