无线传感网技术及应用 课件 项目19 Z-Stack协议栈串口收发信息.pptx

无线传感网技术及应用 课件 项目19 Z-Stack协议栈串口收发信息.pptx

  1. 1、本文档共15页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多

项目十九

Z-Stack协议栈串口收发信息

01项目导入

项目导入物联网设备最主要的功能是信息采集和信息传输。通常传感器通过UART、IIC、SPI接口把采集到的数据发送给CC2530,CC2530再通过无线通信方式发送到协调器或其他物联网设备。前一个项目介绍了使用Z-Stack协议栈通过串口发送数据,而如果我们从外部通过串口发送控制信号到CC2530,用来控制CC2530所接电气设备,CC2530要如何接收这些数据呢?本项目通过1个CC2530模块的串口接收数据过程,让大家能够了解CC2530模块使用Z-Stack协议栈进行串口收发通信的整个过程。

02项目分析

项目分析本项目需要使用1个CC2530模块。首先需要完成Z-Stack协议栈UART串口接收函数的代码编写及设置,完成后就可以通过UART接口接收数据,在PC端通过串口调试助手等工具软件查看接收到的数据。

【项目要求】

1.Z-Stack协议栈UART接收函数代码编写。

2.Z-Stack协议栈下使用CC2530的UART0接收数据。

3.PC端使用串口调试助手查看接收到的数据。

03知识储备

Z-Stack协议栈串口接收数据Z-Stack协议栈在MT_UART.c文件的串口初始化函数MT_UartInit()中,除了定义串行通信的波特率、起始位、数据位、奇偶校验位、停止位、硬件流控制,还定义了串口回调函数(接收数据的处理函数)。系统默认没有定义ZTOOL_P1等参数。#ifdefined(ZTOOL_P1)||defined(ZTOOL_P2)//如果定义了ZTOOL_P1或TOOL_P2uartConfig.callBackFunc=MT_UartProcessZToolData;//则此函数为回调函数

#elifdefined(ZAPP_P1)||defined(ZAPP_P2)//如果定义了ZAPP_P1或ZAPP_P2uartConfig.callBackFunc=MT_UartProcessZAppData;//则此函数为回调函数

#else

uartConfig.callBackFunc=NULL;//没定义,无回调函数

#endif

HalUARTOpen(MT_UART_DEFAULT_PORT,uartConfig);//启用串口UART0

Z-Stack协议栈串口接收数据

Z-Stack协议栈回调函数MT_UartProcessZToolData()Z-Stack协议栈在MT_UART.c文件中定义了回调函数MT_UartProcessZToolData(),其接收数据格式为0xFE+数据长度(data的长度)+命令字段+data[]+校验和。

......while(Hal_UART_RxBufLen(port))//判断是否有数据{HalUARTRead(port,ch,1);//每次接收一个数据switch(state){caseSOP_STATE://初始状态state=0,判断帧头是否为SOP_STATE(0xFE)if(ch==MT_UART_SOF)state=LEN_STATE;//若帧头正确,状态改为LEN_STATEbreak;caseLEN_STATE://接收第二字节时,进入LEN_STATELEN_Token=ch;//将第二字节(传输数据data[]的长度)赋值给LEN_Token.......

自定义回调函数由于MT_UartProcessZToolData()函数相对比较复杂,一般常采用自定义回调函数的方式。Z-Stack协议栈中默认没有定义ZTOOL_P1等参数,因此默认情况下串口接收时并不调用MT_UartProcessZToolData()函数。

项目需要修改串口初始化函数MT_UartInit()中的波特率和硬件流控参数,同时将串口回调函数修改为自行编写的rxCB()函数。

halUARTCfg_tuartConfig;

uartConfig.configured=TRUE;

uartConfig.baudRate=HAL_UART_BR_115200;//波特率115200

uartConfig.flowControl=FALS

文档评论(0)

balala11 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档