ImageVerifierCode 换一换
格式:DOCX , 页数:20 ,大小:23.29KB ,
资源ID:23787379      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/23787379.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(关于在CC2430中基于ZIGBEE的串口通信.docx)为本站会员(b****8)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

关于在CC2430中基于ZIGBEE的串口通信.docx

1、关于在CC2430中基于ZIGBEE的串口通信就跟我自己承诺的一样,我会发一篇关于zigbee串口通信的。虽然这个是我五月份就做的东西,但是现在看来,还是有那么一群人对这个纠缠不清。但是,这个其实很简单。事实上zigbee协议栈2006是有自己集成好了串口函数的,就在MT层的SPIMgr.c文件里面。这里是一部分的源码:void SPIMgr_Init () halUARTCfg_t uartConfig; App_TaskID = 0; uartConfig.configured = TRUE; uartConfig.baudRate = SPI_MGR_DEFAULT_BAUDRATE;

2、uartConfig.flowControl = SPI_MGR_DEFAULT_OVERFLOW; uartConfig.flowControlThreshold = SPI_MGR_DEFAULT_THRESHOLD; uartConfig.rx.maxBufSize = SPI_MGR_DEFAULT_MAX_RX_BUFF; uartConfig.tx.maxBufSize = SPI_MGR_DEFAULT_MAX_TX_BUFF; uartConfig.idleTimeout = SPI_MGR_DEFAULT_IDLE_TIMEOUT; uartConfig.intEnable

3、= TRUE;#if defined (ZTOOL_P1) | defined (ZTOOL_P2) uartConfig.callBackFunc = SPIMgr_ProcessZToolData;#elif defined (ZAPP_P1) | defined (ZAPP_P2) uartConfig.callBackFunc = SPIMgr_ProcessZAppData;#else uartConfig.callBackFunc = NULL;#endif#if defined (SPI_MGR_DEFAULT_PORT) HalUARTOpen (SPI_MGR_DEFAULT

4、_PORT, &uartConfig);#else (void)uartConfig;#endif#if defined (ZAPP_P1) | defined (ZAPP_P2) SPIMgr_MaxZAppBufLen = 1; SPIMgr_ZAppRxStatus = SPI_MGR_ZAPP_RX_READY;#endifvoid SPIMgr_RegisterTaskID( byte taskID ) App_TaskID = taskID;byte SPIMgr_CalcFCS( uint8 *msg_ptr, uint8 len ) byte x; byte xorResult

5、; xorResult = 0; for ( x = 0; x hdr.event = CMD_SERIAL_MSG; SPI_Msg-msg = (uint8*)(SPI_Msg+1); SPI_Msg-msg0 = CMD_Token0; SPI_Msg-msg1 = CMD_Token1; SPI_Msg-msg2 = LEN_Token; else state = SOP_STATE; return; break; case DATA_STATE: SPI_Msg-msg3 + tempDataLen+ = ch; if ( tempDataLen = LEN_Token ) stat

6、e = FCS_STATE; break; case FCS_STATE: FSC_Token = ch; if (SPIMgr_CalcFCS (uint8*)&SPI_Msg-msg0, 2 + 1 + LEN_Token) = FSC_Token) osal_msg_send( MT_TaskID, (byte *)SPI_Msg ); else osal_msg_deallocate ( (uint8 *)SPI_Msg); state = SOP_STATE; break; default: break; #endif /ZTOOL#if defined (ZAPP_P1) | de

7、fined (ZAPP_P2)void SPIMgr_ProcessZAppData ( uint8 port, uint8 event ) osal_event_hdr_t *msg_ptr; uint16 length = 0; uint16 rxBufLen = Hal_UART_RxBufLen(SPI_MGR_DEFAULT_PORT); if (SPIMgr_MaxZAppBufLen != 0) & (SPIMgr_MaxZAppBufLen event = SPI_INCOMING_ZAPP_DATA; msg_ptr-status = length; HalUARTRead(

8、 SPI_MGR_DEFAULT_PORT, (uint8 *)(msg_ptr + 1), length ); osal_msg_send( App_TaskID, (uint8 *)msg_ptr ); void SPIMgr_ZAppBufferLengthRegister ( uint16 maxLen ) if (maxLen = SPI_MGR_DEFAULT_MAX_RX_BUFF) SPIMgr_MaxZAppBufLen = maxLen; else SPIMgr_MaxZAppBufLen = 1;void SPIMgr_AppFlowControl ( bool stat

9、us ) if (status != SPIMgr_ZAppRxStatus ) SPIMgr_ZAppRxStatus = status; if (status = SPI_MGR_ZAPP_RX_READY) SPIMgr_ProcessZAppData ( SPI_MGR_DEFAULT_PORT, HAL_UART_RX_TIMEOUT ); #endif /ZAPP这些意思很明显,特别注意下有色彩背景的代码。这个其实就是C语言的宏定义。在zigbee协议栈,这个是用得很多的。当然,本人自己也很喜欢用这个方法定义,因为简单,而且直观,更重要的是很方便,你可以随便定义你要的部分进行编译。

10、呵呵,有点跑题了。接下来就解释下把,: uartConfig.configured = TRUE; uartConfig.baudRate = SPI_MGR_DEFAULT_BAUDRATE; uartConfig.flowControl = SPI_MGR_DEFAULT_OVERFLOW; uartConfig.flowControlThreshold = SPI_MGR_DEFAULT_THRESHOLD; uartConfig.rx.maxBufSize = SPI_MGR_DEFAULT_MAX_RX_BUFF; uartConfig.tx.maxBufSize = SPI_MGR

11、_DEFAULT_MAX_TX_BUFF; uartConfig.idleTimeout = SPI_MGR_DEFAULT_IDLE_TIMEOUT; uartConfig.intEnable = TRUE;#if defined (ZTOOL_P1) | defined (ZTOOL_P2) uartConfig.callBackFunc = SPIMgr_ProcessZToolData;#elif defined (ZAPP_P1) | defined (ZAPP_P2) uartConfig.callBackFunc = SPIMgr_ProcessZAppData;#else ua

12、rtConfig.callBackFunc = NULL;#endif这个就是串口的初始化部分,注意了, 上面 uartConfig.callBackFunc是一个函数指针,后面的就是这个串口的调用函数。协议栈默认编了两个固化的,这两个是用于与zibgee的上位机通信的,有特定的协议,是由TI自己定的。就是一位内TI定义了这个协议,使得如果我们自己编写的话就使用了。这样。有一种办法,就是跟着它的协议,一下是我得到的TI的串口通信协议:* 协议数据单元的相关说明 * ARMSKY-ZLocation无线定位开发系统使用TI公司的ZigBee协议栈Z-Stack v1.4.2。为了方便用户与使用Z

13、-Stack v1.4.2的目标硬件进行数据交换,Z-Stack v1.4.2中定义了串口通信数据格式。 串口属性设置如下: 波 特 率:38400bps 数 据 位:8个 停 止 位:1个 奇偶校验:无 Z-Stack v1.4.2中串口通信数据格式如下: * * SOP * CMD * LEN * Data * FCS * * 数据包由多个字段构成,每个字段由1个或多个字节构成。多字节字段的高位字节首先被发送。 SOP(包起始):该字段长度为1字节,值为0x02,表示数据包开始。 CMD(命令ID):该字段长度为2字节,表示数据包的作用。 LEN(长度) :该字段长度为1字节,表示Data

14、字段的长度。 Data(数据) :该字段包含要被传输的实际数据,该字段的长度由LEN字段指定。 FCS(帧校验序列):该字段长度为1字节,确保数据包的完整性。FCS字段值的计算方法是: 从CMD字段开始到Data字段结束,逐个字节进行XOR运算,结果即为FCS字段值。 接收方收到数据包后,从Data字段开始到FCS字段结束,逐个字节进行XOR运算, 结果为0表示接收正确,否则表示错误。 Z-Stack v1.4.2中定义了很多串口通信数据包,此处只描述定位应用中所需使用的串口通信数据包。 其他串口通信数据包格式定义请参看Serial Port Interface_F8W-2003-0001_.

15、pdf。 下面给出4个本定位应用中需要用到的串口通信命令数据包的格式定义: SYS_PING:发送该命令给目标设备以检查设备的状态及能力。格式定义如下: * * CMD=0x0007 * LEN=0x00 * * SYS_PING_RESPONSE:该命令是对SYS_PING命令的响应。格式定义如下: * * CMD=0x1007 * LEN=0x02 * Capabilities * * Capabilities:该字段长度为2字节。该字段值表示目标设备可以处理的接口。位掩码如下: MT_CAP_MAC 0x0001 MT_CAP_NWK 0x0002 MT_CAP_AF 0x0004 MT

16、_CAP_ZDO 0x0008 MT_CAP_USER_TEST 0x0010 MT_CAP_SEQ 0x0020 MT_CAP_BOOTLOAD 0 x 8000 SYS_GET_DEVICE_INFO:发送该命令给目标设备以获得设备的信息。格式定义如下: * * CMD=0x0014 * LEN=0x00 * * SYS_GET_DEVICE_INFO_RESPONSE:该命令是对SYS_GET_DEVICE_INFO命令的响应。格式定义如下: * * CMD=0x1014 * LEN=0x03 * Status * IEEEAddress * ShortAddress * DeviceT

17、ype * DeviceState * NumAssocDevices * AssocDevicesList * * LEN=0x03 Serial Port Interface_F8W-2003-0001_.pdf中第16页中有定义,但存在疑问,不过不影响本应用。 Status:该字段长度为1字节。0表示成功,1表示失败。如果IEEEAddress或/和ShortAddress不在有效范围内,则该字段值为1。 IEEEAddress:该字段长度为8字节。 ShortAddress:该字段长度为2字节。 DeviceType:该字段长度为1字节,用来表示设备类型。位0到位2用来指示设备运行为协调器、路由器还是终端设备。 DeviceState:该字段长度为1字节,用来表示设备状态。可能的设备状态请参看Serial Port Interface_F8W-2003-0001_.pdf中第16页中的定义。 N

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1