车干的ZigBee学习笔记七——Z_stack协议栈串口

一、串行

1、串行接口:

数据一位一位顺序发送,通信线路简单,适用于远距离通信,传送速度较慢。

2、串行通讯:

数据位传送,按位顺序进行

二、串口使用步骤

1、串口初始化
2、注册串口任务
3、串口发送

第一步:串口初始化

配置串口号、波特率、校验位、数据位、停止位等。在HAL层的hal_uart.c 文件,包含了串口初始化、发送、接收函数,我们修改相关配置、调用相应的接口函数就可使用串口。

然后在MT_UART.C文件的MT_Uartinit()函数中设置串口参数

void MT_Uartinit()
{
	halUARTCfg_t uartConfig;
	// 初始化应用程序ID 
	App_TaskID = 0;
	// UART 配置
	uartConfig.configured = TRUE;
	/*
	配置波特率
	#define MT_UART_DEFAULT_BAUDRATE HAL_UART_BR_38400 
	默认的波特率是38400bps,现在我们修改成115200bps,修改如下:
	#define MT_UART_DEFAULT_BAUDRATE HAL_UART_BR_115200
	*/
	uartConfig.baudRate = MT_UART_DEFAULT_BAUDRATE;
	/*
	配置流控
	进入定义可以看到
	#define MT_UART_DEFAULT_OVERFLOW TRUE
	默认是打开串口流控的,如果你是只连了TX/RX 2根线的方式务必关流控。
	注意:2根线的通讯连接一定要关流控,不然是永远收发不了信息的。
	#define MT_UART_DEFAULT_OVERFLOW FALSE
	*/
 	uartConfig.flowControl = MT_UART_DEFAULT_OVERFLOW;
 	uartConfig.flowControlThreshold = MT_UART_DEFAULT_THRESHOLD;
 	uartConfig.rx.maxBufSize = MT_UART_DEFAULT_MAX_RX_BUFF;
	uartConfig.tx.maxBufSize = MT_UART_DEFAULT_MAX_TX_BUFF;
	uartConfig.idleTimeout = MT_UART_DEFAULT_IDLE_TIMEOUT;
	uartConfig.intEnable = TRUE;
	/*预编译,根据预先定义的ZTOOL或ZAPP选择不同数据处理函数。后面的P1和P2则是串口0和串口1.*/
	#if defined (ZTOOL_P1) || defined (ZTOOL_P2)
	uartConfig.callBackFunc = MT_UartProcessZToolData;
	#elif defined (ZAPP_P1) || defined (ZAPP_P2)
	uartConfig.callBackFunc = MT_UartProcessZAppData;
	#else
	uartConfig.callBackFunc = NULL;
	#endif
	
	// 启动 UART 
	#if defined (MT_UART_DEFAULT_PORT)
	HalUARTOpen (MT_UART_DEFAULT_PORT, &uartConfig);
	#else
	//静默IAR编译器警告 
	(void)uartConfig;
	#endif

	// Zapp初始化
	#if defined (ZAPP_P1) || defined (ZAPP_P2)
	. // Zapp可以使用的默认最大字节数 
	MT_UartMaxZAppBufLen = 1;
	MT_UartZAppRxStatus = MT_UART_ZAPP_RX_READY;
	#endif
}

第二步:注册串口任务

在SampleApp_Init();刚添加的串口初始化语句下面加入语句:MT_UartRegisterTaskID(task_id); //注册串口任务

第三步:串口发送

增加串口发送代码
HalUARTWrite(0,“UartInit OK\n”,sizeof(“UartInit OK\n”)); //串口发送

三、ZigBee术语

1、协调器:(coordinator)

每个 zigbee 网络只允许有一个 zigbee 的协调器,协调器首先选择一个信道和网络标识(PANID),然后开始这个网络.因为协调器是整个网络的开始,他具有网络的最高权限,是整个网络的维护者,还可以保持间接寻址用的表格绑定,同时还可以设计安全中心和执行其他动作,保持网络其他设备的通信。

2、路由器:(router)

路由器是一种支持关联的设备,能够实现其他节点的消息转发功能。Zigbee 的树形网络可以有多个 zigbee 路由器设备,zigbee 的星型网络不支持 zigbee 的路由器设备。

3、终端:(end)

Zigbee 终端节点是具体执行的数据采集传输的设备,他不能转发其他节点的消息。

扫描二维码关注公众号,回复: 9369815 查看本文章

4、属性

属性 Attribute 是一个反映物理数量或状态的数据值,比如开关值(On/Off) ,温度值、百分比等。

5、群集

群集 Cluster 是包含一个或多个属性(attribute)的群组。简单的说,群集就是属性的集合。每个群集都被分配一个唯一的群集 ID 且每个群集最多有 65536 个属性。

6、设备描述

设备描述 Device Description 是指一个大型目标应用的一部分,包括一个或多个群集,并且指定群集是输入还是输出。

7、端点

端点 EndPoint 是协议栈应用层的入口,也可以理解应用对象(Application Object)存在的地方,它是为实现一个设备描述而定义的一组群集。每个 ZigBee 设备可以最多支持 240这样的端点,这也意味着在每个设备上可以定 义 240 个应用对象。端点 0 被保留用于与 ZDO接口而端点 255 被保留用于广播,端点 241-254 则被保留用于将来做扩展使用。

8、配置文件

配置文件 Profile 可以理解为共同促成交互式应用的多个设备描述项的集合。ZigBee 联盟已经定义了部分标准的配置文件,比如远程控制开关配置文件和光传感器配置文件等。任何遵循某一标准配置文件的节点都可以与实现相同配置文 件的节点进行互操作。用户也可以创建自己的配置文件然后递交 ZigBee 联盟测试、审核批准。配置文件是对逻辑设备及其接口描述的集合,是面向某个应用类别的公约、准则。设备描述符是为分布应用提供的描述项,多种描述项共同组成描述集合 Profile。定义 Profile 的目的就是使得不同厂商生产的 ZigBee 设备能够实现互操作。

9、节点

节点 Node 也可以理解为一个容器,包含一组 ZigBee 设备,分享一个无线信道。每个节点有且只有一个无线信道使用。

10、绑定(Binding)

ZigBee 定义了一个称为端点绑定的特殊过程。绑定即在源节点的某个端点( EndPoint)和目标节点的某个端点之间创建一条逻辑链路。绑定可以发生在两个或多个设备之间。协调器节点维护一个基本上包括两个或多个端点之间的逻辑链路的绑定表。在绑定表中,包含如下信息,源节点和目的节点的 IEEE 地址、Endpoint 号以及 ClusterID对于可以建立绑定关系的两个节点,它们的 Cluster 的属性必须一个选择“输入”,另一个选择“输出”,而且 ClusterID 值相等,只有这样,它们彼此才能建立绑定。如果目标设备的扩展地 址是已知的,则调用 zb_BindDeviceRequest( )函数可以创建一个绑定条目。

11、.寻址(Addressing)

在 ZigBee 网络中,使用两种地址:
一种是 64 位的 IEEE Address,也叫物理地址,64 位地址在所有 ZigBee 设备之中是唯一,其中包含一个由 IEEE 分配、也是全球唯一的 24 位制造商特定组织标识符 OUI(Organizationally Unique Identifier);
另一种是 16 位的 NWK Address 即网络地址,当设备加入 ZigBee 网络时,从允许其加入的父设备上获取 16 位网络地址。该地址在 ZigBee 网络中唯一,用于数据传输和数据包路由。在 Zigbee 中,数据包可以单点传送(unicast),多点传送(multicast)或者广播传送(broadcast),所以必须有地址模 式参数。一个单点传送数据包只发送给一个设备,多点传送数据包则要传送给一组设备,而广播数据包则要发送给整个网络的所有节点。当应用程序需要将数据包发 送给网络上的一组设备时,还可以使用组寻址方式(Group Addressing)。

发布了13 篇原创文章 · 获赞 3 · 访问量 1855

猜你喜欢

转载自blog.csdn.net/weixin_44127810/article/details/104217213
今日推荐