- 1、本文档共14页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
SerialApp工程
第十五讲 SerialApp工程
工程概述
SerialApp工程是TI提供的一个使用串口的实例。该工程的可以完成串口透明传输,其总体数据流图如图X所示。
图X SerialApp工程数据流图
SerialApp工程为了数据准确无误的发送到目标设备采取了两个措施:双缓冲机制和应答机制。
源设备的串口回调函数中有两个缓冲otaBuf和otaBuf2
SerialApp工程的应答机制有别于我们提及的NWK层应答和MAC层应答。
SerialApp工程中提供两种方式寻找一个潜在的目标设备:ZDO终端绑定和简单描述符匹配。与GenericApp工程类似。
ZDO终端绑定:设备发送ZDO终端绑定请求到协调器,如果协调器收到两个相互匹配的信息则为其创建绑定表记录,当两个设备绑定后数据将间接的方式发送到绑定的目标设备。
简单描述符匹配:设备向网络中广播简单描述符匹配信息,允许匹配的设备回应该信息。如果匹配到其它设备则其作为目标设备,将信息发送到该目标设备。
二、SerialApp工程按键说明
SerialApp工程中使用了两个按键分别用来发送ZDO绑定请求和简单描述符匹配请求消息。分别使用了按键SW2和SW4。
SW2----------------ZDO终端绑定请求
SW4----------------简单描述符匹配请求
编译选项
SerialApp工程的主要编译选项有:CC2430EB、REFLECTOR、HAL_UART
SERIAL_APP_PORT=0。
编译选项中有REFLECTOR,说明该工程可以使用绑定机制。该工程使用串口但是并没有像我们梳理串口机制时编译以下四者之一:ZAPP_P1、 ZAPP_P2、 ZTOOL_P1、ZTOOL_P,但是却编译了HAL_UART。我们回顾一下关于串口配置的相关代码,摘录如下。
程序代码:
#ifndef HAL_UART
#if (defined ZAPP_P1) || (defined ZAPP_P2) || (defined ZTOOL_P1) || (defined ZTOOL_P2)
#define HAL_UART TRUE
#else
#define HAL_UART FALSE
#endif
#endif
#if HAL_UART
#define HAL_UART_0_ENABLE TRUE
#define HAL_UART_1_ENABLE FALSE
#if HAL_DMA
#if !defined( HAL_UART_DMA )
……
在该工程的编译选项中同样没有编译MT_Task这一编译选项,,例如SPIMgr_Init ()一些函数并没有包含在SerialApp工程中,那么SerialApp工程是如何使用串口呢?
编译选项SERIAL_APP_PORT=0是我们使用的UART端口,首先我们看一下SerialApp_Init()中的一句代码,代码如下:
HalUARTOpen (SERIAL_APP_PORT, uartConfig)
我们现在回顾在串口机制梳理时打开串口时传递的参数,代码如下:
HalUARTOpen (SPI_MGR_DEFAULT_PORT, uartConfig)
读者可以自行追踪SPI_MGR_DEFAULT_PORT,最终可以得到#define HAL_UART_PORT_0 0x00。可以看出其实两者使用的UART端口相同。
SerialApp工程初始化与事件处理函数
SerialApp工程初始化函数
SerialApp工程初始化函数SerialApp_Init()理解为SerialApp工程应用层初始化与串口初始化的“结合体”。具体代码如下。
程序代码:
void SerialApp_Init( uint8 task_id )
{
halUARTCfg_t uartConfig;
SerialApp_MsgID = 0x00;
SerialApp_SeqRx = 0xC3;
SerialApp_TaskID = task_id;
//目标设备地址初始化
SerialApp_DstAddr.endPoint = 0;
SerialApp_DstAddr.addr.shortAddr = 0;
SerialApp_DstAddr.addrMode = (afAddrMode_t)AddrNotPresent;
//应答地址初始化
SerialApp_RspDstAddr.endPoint = 0;
SerialApp_RspDstAddr.addr.shortAddr = 0;
文档评论(0)