新闻中心

EEPW首页 > 消费电子 > 设计应用 > Bluecore5-MM在车载蓝牙设备中的应用

Bluecore5-MM在车载蓝牙设备中的应用

作者:时间:2009-12-09来源:网络收藏

4 通信的实现机制
BC5-MM的通信和本地通信都是基于Stream机制,它把数据传输路径视为一个管道,管道的人口为Source,表示数据来源,出口为Sink,表示数据从这里发出。屏蔽底层具体实现,以简单方式实现数据传输。其主要特性是串行和FIFO(先人先出)机制,对其开发时,首先保证有足够空间分配给收发数据,保证当前指针正确。以免提通道数据发送为例,首先通过SinkClaim(HfpSink,DataLength)函数为免提通道的发送端口HfpSink分配DataLength长度的内存,然后判断是否分配成功,若分配成功,则将该内存赋值,再通过SinkFlush(HfpSink,DataLength)将数据发送出去。注意一旦通过SinkClaim分配DataLength长度的内存,必须通过Sink-Flush将其长度的数据发送出去,这样才能将HfpSink的发送指针转移到正确位置,否则下次通过SinkClaim为HfpSink分配内存,通过SinkFlush发送时,将会出现免提通道上的发送数据使用上次分配的内存数据,从而造成后面一连串发送错误。因此必须深入理解BC5-MM的通信实现机制以完成正确的数据传输。

本文引用地址:http://www.eepw.com.cn/article/166838.htm


5 UART通信
由于BC5-MM处理器资源有限,可实现简单,但复杂则须借助外部处理器。这里选用BC5-MM+外部主处理器。这种架构采用UART通信实现处理器之间的交互,综合完成相关
UART通信协议包括底层传输和应用两部分协议。其中传输协议定义了帧格式并选择合适的校验机制和错误处理机制,帧格式为:帧头(0x55+0Xaa)+id(标示该帧的含义)+dlc(数据场长度)+data(数据场)+checksum(16位算术校验和)。按照帧格式,UART驱动程序组合帧发送和解析接收数据帧,组合帧较简单,解析帧按照帧结构定义相应状态以状态机的概念解析ID和数据。
UART作为一种串行通信,其采样时刻的干扰会造成通信错误,为了保证数据通信的可靠性,需要对数据加校验判断通信是否正确,有CRC循环冗余校验及算术和校验两种常用方式,CRC运算速度最快的为查表法,但需消耗相当大的内存空间。对于CRC16而言,该表为256字即512字节,而BC5-MM应用软件的全局变量不能超过256字,显然无法满足查表法CRC16运算要求,消耗内存最少的是按位运算法,其消耗内存小,但运算速度慢。而采用算术累加和的校验方式,不仅节省校验和计算时间,提高实时性,而且还满足数据校验需要。
应用协议首先按照具体应用定义相应信号,然后将各个信号在帧内组合封装,状态量和控制量是以位信号形式定义,来控制帧长度。应用协议的制定与特定应用密切相关,需要针对特定应用定义相应的交互方式。


6 电话簿下载应用中的UART通信
电话簿下载是个大批量的数据传输,其解析和存储都需消耗相当大的内存,BC5-MM通过从手机下载电话簿数据并通过UART传输到主CPU,主CPU解析电话簿并存储。该应用要求是解析正确完全和快速完成。主处理器端采用多任务处理机制,UART接收任务接收BC5-MM传输的电话簿数据,电话簿解析任务和数据并存储。
这种方式如果接收快而解析慢,便会数据覆盖,造成解析不完全。为了保证解析的正确完全,定义交互方式:BC5-MM从手机下载数据,通过UART帧VCARD传给主处理器,主处理器解析完成后,通过UART帧NEXT_VCARD_REQ通知BC5-MM继续下载,然后再传输到主处理器。
这种方式保证传输和解析的完整,但速度太慢。对的用户而言,电话簿传输速度是一个关键指标,因此需改进交互方式以提高电话簿下载速度。通过分析发现,在BC5-MM和主CPU间的交互占用大量时间,减少交互次数便可加快速度,这需要重新定义UART帧VCARD并对UART通信做相应修改,采取BC5-MM从手机接连下载多包电话簿数据,定义第1包、中间包、唯一包和最后一包的标识,在主处理器端组合后解析,解析完成后主处理器通知BC5-MM继续下载,事实证明,这种方式可大大减少交互次数,从而提高下载速度。


7 结束语
笔者结合已开发的蓝牙的经验,介绍蓝牙子系统结构设计及BC5-MM器件特性。从开发方式、通信的实现机制和UART通信方面阐述BC5-MM软件设计特性及实现方法,从而为那些采用BC5-MM开发的工程师提供设计参考和借鉴。


上一页 1 2 下一页

评论


相关推荐

技术专区

关闭