关于在cc2430中基于zigbee2006的串口通信_W_第1页
关于在cc2430中基于zigbee2006的串口通信_W_第2页
关于在cc2430中基于zigbee2006的串口通信_W_第3页
关于在cc2430中基于zigbee2006的串口通信_W_第4页
关于在cc2430中基于zigbee2006的串口通信_W_第5页
已阅读5页,还剩10页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

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

2、UDRATE;= SPI_MGR_DEFAULT_OVERFLOW;uartConfig.flowControlThreshold = SPI_MGR_DEFAULT_THRESHOLD;uartConfig.rx.maxBufSize uartConfig.tx.maxBufSize uartConfig.idleTimeoutuartCEnable= SPI_MGR_DEFAULT_MAX_RX_BUFF;= SPI_MGR_DEFAULT_MAX_TX_BUFF;= SPI_MGR_DEFAULT_IDLE_TIMEOUT;= TRUE;#if defined (ZTO

3、OL_P1) | defined (ZTOOL_P2)uartConfig.callBackFunc= SPIMgr_ProcessZToolData;#elif defined (ZAPP_P1) | defined (ZAPP_P2)uartConfig.callBackFunc #elseuartConfig.callBackFunc#endif= SPIMgr_ProcessZAppData;= NULL;#if defined (SPI_MGR_DEFAULT_PORT)HalUARTOpen (SPI_MGR_DEFAULT_PORT, &uartConfig); #else(vo

4、id)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; xorResult = 0;for ( x = 0; x hdr

5、.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;elsestate = SOP_STATE; return;break;case DATA_STATE:SPI_Msg-msg3 + tempDataLen+ = ch; if ( tempDataLen = LEN_Token )state = FCS_STATE; break;case FCS_STATE:FSC_To

6、ken = ch;if (SPIMgr_CalcFCS (uint8*)&SPI_Msg-msg0, FSC_Token)osal_msg_send( MT_TaskID, (byte *)SPI_Msg );else2 + 1 + LEN_Token) =osal_msg_deallocate ( (uint8 *)SPI_Msg);state = SOP_STATE; break;default:break;#endif /ZTOOL#if defined (ZAPP_P1) | defined (ZAPP_P2)void SPIMgr_ProcessZAppData ( uint8 po

7、rt, 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( SPI_MGR_DEFAULT_PORT, (uint8 *)(msg_ptr + 1), length );o

8、sal_msg_send( App_TaskID, (uint8 *)msg_ptr );void SPIMgr_ZAppBufferLengthRegister ( uint16 maxLen )if (maxLen option 进入工程设定, 这里点左边的C/C+ Complier,然后直接左边上面点Preprossor。 这个界面就是用编译器的宏定义页面,里面有文件的默认库地址,还有宏定义,在下面那个。可以看到很多宏定义,其中会有一项 ZTOOL_P1(或者是 ZTOOL_P2,ZAPP_P1,ZAPP_P2) 这个是定义串口调用函数的宏定义,如果你不想用这些函数,这几个你就必须注释掉

9、。怎么注释?删除?可以,这个是最简单的,但是如果以后你还要用到呢?所以最好的方法就是给它前面随便价格数字或者小写字母就是了,因为宏定义习惯上都是用大写字母(只是习惯,小写也没事),可以很大成都避免跟其它定义冲突的。 好了, 注释掉后,就得自己编写调用函数,这是必须的,要不你一样用不了。首先是自己编写一个初始化函数:halUARTCfg_t uartConfig; /定义串口初始化结构 uartConfig.configureduartConfig.baudRate uartConfig.flowControl= TRUE;= HAL_UART_BR_115200;/波特率 115200= FA

10、LSE;uartConfig.flowControlThreshold = 48;uartConfig.rx.maxBufSize uartConfig.tx.maxBufSize uartConfig.idleTimeout uartCEnableuartConfig.callBackFunc= 128;= 128;= 6;= TRUE;= rxCB; /自己编写的接收处理函数HalUARTOpen(HAL_UART_PORT_0,&uartConfig); /启动串口 HalUARTWrite( HAL_UART_PORT_0,The CC2430 is initial

11、finished!/n,sizeof(The CC2430 is initial finished!/n);/只是为了测试下是否串口初始化完成了.接下来就是自己编写才串口接收处理函数了: static void rxCB( uint8 port, uint8 event )uint8 *buf, len;if ( otaBuf2 )return;if ( !(buf = osal_mem_alloc( SERIAL_APP_RX_CNT ) )return;len = HalUARTRead( port, buf+1, SERIAL_APP_RX_CNT-1 ); if ( !len ) / Length is not expected to ever be zero.osal_mem_free( buf ); return;if ( otaBuf )otaBuf2 = buf; otaLen2 = len;elseotaBuf = buf; otaLen = len;osal_

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论