淄博职业学院 授课老师:罗汉江 上课班级:P12物联网应用技术1班 上课地点:物联网基础实验室508 Zigbee协议栈中串口通信基础实验 淄博职业学院 授课老师:罗汉江 上课班级:P12物联网应用技术1班 上课地点:物联网基础实验室508
串口的基本知识 串口与并口(两个设备间,通信时,数据传输的方式) 串行接口 (Serial Interface) 是指数据一位一位地顺序传送,其特点是通信线路简单,只要一对传输线就可以实现双向通信。
并口与并行通信 并行通信 每次可以发送8(bit)位(一个字节,byte)甚至更多个数据位,是并发的 由于需要使用多条并行线,发送数据时会产生线间干扰,只适合近距离传输
电脑主机上的串并口
串口与计算机端的连接 计算机与设备通信可以使用串口,串口线一端连接计算机端的串口插座,另外一端串口插头连接设备 串口通信使用3根线完成,分别是地线、发送、接收。 短路实验 将连接线端的2,3脚短接,计算机端如果通过R线端发出信息,则通过连接线端的短路口T端送回计算机端,计算机就收到了发出的信息,这样可以测试串口线是否正常
RS232 DB9公母头引脚定义
USB串口 USB 是英文Universal Serial Bus(通用串行总线)的缩写。 而其中文简称为“通串线,是一个外部总线标准,用于规范电脑与外部设备的连接和通讯。是应用在PC领域的接口技术。 USB接口支持设备的即插即用和热插拔功能。USB是在1994年底由英特尔、康柏、IBM、Microsoft等多家公司联合提出的。
USB 转 串口: 中间一个转换芯片电路
节点的串口使用 节点使用串口的用处 协调器一般可以和计算机连接,成为sink节点 负责计算机与协调器组织的传感器网络的通信 上位机程序(C#等编写)对传感网管理,如查询节点数量,节点编号信息,对节点进行控制,如发送节点X的开启继电器信息(点亮灯、开启空调、打开窗帘等) 节点将感知到的信息,如温度、位置、光照等发送到计算机中进行处理
串口的使用 初始化串口 向发送缓冲区发送数据或者从接收缓冲区读取数据 设置波特率、中断等 波特率有时候会同比特率混淆,实际上后者是对信息传输速率(传信率)的度量。波特率可以被理解为单位时间内传输码元符号的个数(传符号率),通过不同的调制方法可以在一个码元上负载多个比特信息 向发送缓冲区发送数据或者从接收缓冲区读取数据
串口的使用 初始化串口 向发送缓冲区发送数据或者从接收缓冲区读取数据 TI公司将串口与DMA进行了结合 在zigbee协议中,开辟了DMA发送缓冲区和接受缓冲区 用户向串口(节点)发送的数据,先放在DMA接收缓冲区,然后用户调用HalUARTRead()函数进行读取 当节点想往计算机发送信息时,先调用HalUARTWrite()函数写入DMA数据缓冲区,数据缓冲区然后通过计算机的串口发给计算机。 DMA(Direct Memory Access,直接内存存取) 是所有现代电脑的重要特色,它允许不同速度的硬件装置来沟通,而不需要依于 CPU 的大量中断负载
Zigbee协议栈的串口相关函数 串口初始化函数 节点从缓冲区读取数据函数 节点往缓冲区写入数据函数 Unit 8 HalUARTOpen(unit8 port, halUARTCfg_t *config) 节点从缓冲区读取数据函数 Unit 16 HalUARTRead(unit8 port, unit8 *buf, unit16 len) 节点往缓冲区写入数据函数 Unit 16 HalUARTWrite(unit8 port, unit8 *buf, unit16 len)
串口试验修改过程 在上次试验上修改,复制shiyan – coordinator(我上次修改的名字)文件夹 修改名字为SerialPortApp文件夹
对Coordinator.c进行改动(P86) 加入新行,定义字符数组,存放从串口读入节点的数据,或者从节点写入串口的数据
定义一个串口初始化结构体
在初始化函数中,加入多行,对串口结构体赋值(波特率、关闭串口流控制、确定回调函数等),然后以串口初始化结构体作为参数,调用HalUARTOpen(),对串口进行初始化
修改GenericApp_ProcessEvent()函数为空 也就是事件触发后,该节点什么也不做
在Coordinator.c中加入回调函数说明语句
在Coordinator.c中加入回调函数的实体函数
节点串口的使能 工程中定义HAL_UART宏,并赋值为TRUE,从而串口可以初始化,节点可以使用串口
从main.c中可以找到硬件初始化函数 HalDriverInit(),选中右键(仅仅选中字符),选中“Go to definition of HalDriverInit() 的
可以看到,只有定义了HAL_UART=TRUE,节点启动后才对节点串口初始化,节点才能使用串口
定义宏HAL_UART=TRUE的过程: 选中工程,点击右键,选中options
选中“ C/C++Compiler”,选中“Preprocessor”,在“Defined Symbols”添加“HAL_UART=TRUE”,点击“OK”
实例测试 编译,调试,排除错误
连接读写器和节点,将编译好的程序烧写到节点
打开串口调试工具AcessPort,用USB转串口线连接节点,节点上电
软件端口设置 打开设备管理器,找到节点连接的端口号
设置软件端口参数
发送“www.wlwmaker.com”
收到数据
练习及作业 上机,按照操作流程,将GenericApp拷贝修改为“姓名App”,将增加的代码敲入Coordinator.c文件,连接节点,调试程序,完成串口通信实验,成功后将文件夹通过红蜘蛛上交。 想一想本次串口实验主要使用了哪些Zstack协议函数,说明各个函数的作用,和主要的参数含义。