原创 【博客大赛】CC2541串口通信遇到的一个小问题

2015-9-21 16:03 3853 23 25 分类: MCU/ 嵌入式 文集: CC254x蓝牙BLE4.0协议栈学习笔记

最近的一个项目,是用TICC2541做了个基于蓝牙的数据采集系统。

 

系统简单描述下就是传感器采样数据,通过UARTCC2541通信,CC2541将接收到的数据通过蓝牙发送到PC端。CC2541接收的数据是通过缓冲的方式,当接收满20个数据时,将这20个数据统一通过蓝牙发送到PC端。

 

要实现的功能很简单。蓝牙部分的设计、调试似乎也都挺顺利。但是当把传感器与蓝牙部分连上后,发现PC端的曲线含有大量的杂波,用串口调试工具去看,也会有相当多的乱码。

 

开始以为是干扰,换屏蔽线、关闭板上DCDC改用稳压电源供电等一系统措施之后,现象仍然存在。

 

换一个思路,拿掉传感器,将CC2541的串口接到PC端,通过串口调试工具发送固定的数,发现曲线还是存在杂波,杂波似乎还挺有规律。下面是用TI的软件DeviceMonitor抓取的文本数据。

 

20150331160728469.jpg

 

图中我简单标了几个受干扰的数据。

 

后来也是通过TI的官方论坛和相关文档,查找到了原因:

原来CC2541在出厂默认情况下,当CC2541的射频工作时,即蓝牙发送或接收数据时,CPU会停机(halt),这是为了减小射频工作时的峰值电流。所以在固件设计时,要进行相应设置,把CC2541在射频工作时CPU halt的功能去掉。可以在初始化的时候,调用下列函数:

 

 

HCI_EXT_HaltDuringRfCmd(HCI_EXT_HALT_DURING_RF_DISABLE);

 

 

关于这个函数,可以参考TI的文档《TI_BLE_Vendor_Specific_HCI_GuideP45,下面的截图就是文档中对该函数的描述。

 

20150331160758478.jpg

 

可以看出,TI为了减小CC2541的功耗真是无所不用其极,哈。按文档中的描述,Disable掉这个功能后,峰值电流会增加。因为手头没有精密工具,只是用万用表打到电流档串到电路中,对比测了下平均电流,从这个工具上看不出什么变化来。当然,因为这个项目就是要串口一直工作,所以不能让CPU休息,以免乱码,我们也不在意多出来的这点功耗。

 

 

希望我遇到的这个情况,能给一些朋友有帮助或启发。当然,文中提到的函数也要慎用,以免增加额外的功耗。

 

附件是TI的HCI文档:

文章评论2条评论)

登录后参与讨论

用户377235 2015-10-9 07:41

谢谢,有启发

用户394694 2015-6-11 08:02

学习学习,感谢分享
相关推荐阅读
飞言走笔 2017-01-06 21:56
2017,新的博客旅程
EDNChina 改版终于成功了!祝贺! 2017年,开始新的旅程~ ...
飞言走笔 2016-06-01 10:17
【博客大赛】《白鹿原》读后
《白鹿原》这本书已经买了很久,多次以来,都是只翻看几页,顶多几章就放下了,觉得这是一个大部头,得有足够的时间才行。前几天陈忠实先生去世的消息传来,让我很震惊和惭愧。 一口气读完这本书,畅快淋漓,又意...
飞言走笔 2016-03-26 16:42
【博客大赛】《毛斯朝》读后
这本书最早是在凤凰卫视曾子墨主持的一期关于沈志华先生的《世纪大讲堂》节目中知晓的。但是一直拖到今天才读完。 说实话,书的主要内容与当前官方的宣传口径有很多不一致的地方,而沈先生作为中国掌握苏联档...
飞言走笔 2016-03-08 13:46
【博客大赛】蓝牙4.0低功耗技术及其认证要求
详见附件 ...
飞言走笔 2016-02-02 14:20
【转】蓝牙4.0协议官方手册(一)——通用属性配置文件
转自:http://blog.csdn.net/jinzhichaoshuiping/article/details/43370009 通用属性配置文件 (GATT)——该说明书定义了通用属性配置...
飞言走笔 2016-01-31 23:24
【博客大赛】脑洞大开、三观重塑——《人类简史》读后
终于读完了《人类简史》,没有把这本书拖到二月份,这也是2016年读完的第一本书。之前也有所耳闻,但是没有太在意,倒是罗胖子的跨年演讲上偶然提到,不知怎么就勾起了阅读此书的欲望。 本文的标题用了“脑洞...
我要评论
2
23
关闭 站长推荐上一条 /2 下一条