无线传感网技术及应用 课件 项目19 Z-Stack协议栈串口收发信息_第1页
无线传感网技术及应用 课件 项目19 Z-Stack协议栈串口收发信息_第2页
无线传感网技术及应用 课件 项目19 Z-Stack协议栈串口收发信息_第3页
无线传感网技术及应用 课件 项目19 Z-Stack协议栈串口收发信息_第4页
无线传感网技术及应用 课件 项目19 Z-Stack协议栈串口收发信息_第5页
已阅读5页,还剩10页未读 继续免费阅读

下载本文档

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

文档简介

项目十九

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_P2

uartConfig.callBackFunc=MT_UartProcessZToolData;//则此函数为回调函数#elifdefined(ZAPP_P1)||defined(ZAPP_P2)

//如果定义了ZAPP_P1或ZAPP_P2

uartConfig.callBackFunc=MT_UartProcessZAppData;

//则此函数为回调函数#else

uartConfig.callBackFunc=NULL;

//没定义,无回调函数#endif

HalUARTOpen(MT_UART_DEFAULT_PORT,&uartConfig);

//启用串口UART0Z-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_STATE

break;caseLEN_STATE://接收第二字节时,进入LEN_STATE

LEN_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;//波特率115200uartConfig.flowControl=FALSE;//禁用硬件流控uartConfig.callBackFunc=rxCB;//自定义回调函数自定义回调函数voidrxCB(uint8port,uint8event){unsignedcharUartbuf[20];unsignedcharbuflen;buflen=HalUARTRead(0,Uartbuf,20);

//将串口缓存数据写入数组Uartbuf,返回数据长度if(buflen){//如果收到"AB#",双灯闪烁。HAL_LED_1、HAL_LED_2系统默认设置为P1_0、P1_1if(Uartbuf[0]=='A'&&Uartbuf[1]=='B'&&Uartbuf[2]=='#')HalLedBlink(HAL_LED_1,4,50,500);//LED1闪烁4次if(Uartbuf[0]=='Y'&&Uartbuf[1]=='1'&&Uartbuf[2]=='#')HalLedSet(HAL_LED_1,HAL_LED_MODE_ON);//如果收到"Y1#",LED1灯亮。

if(Uartbuf[0]=='Y'&&Uartbuf[1]=='0'&&Uartbuf[2]=='#')

HalLedSet(HAL_LED_1,HAL_LED_MODE_OFF);

//如果收到"Y0#",LED1灯灭。

......

04项目实施项目实施项目实施前必须先准备好相应的设备和资源。用IAR打开项目文档。修改项目参数:禁止使用硬件流控默认波特率改为115200自定义回调函数下载程序到CC2530模块

将CC2530模块的用USB转TTL数据线连接到PC机;打开串口调试助手,修改波特率为115200;按仿真器或者CC2530模块上

温馨提示

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

评论

0/150

提交评论