mmuyu 发表于 2023-9-28 22:20:54

使用串口在zigbee和stm32之间传送数据

   zigbee cc2530是由德州仪器开发的一款低功耗的无线芯片,用于构建Zigbee通信系统,该芯片使用了8051增强内核,因此上手还是比较容易的。

在一个Zigbee网络中,通常需要一个中央设备来协调和管理网络中的各个设备。这个中央设备通常被称为Zigbee网关。CC2530可以配置为Zigbee网关,其主要任务是与其他Zigbee设备进行通信、数据协调和传输。作为Zigbee网关,CC2530的主要任务包括:与其他Zigbee设备建立通信连接。
传输数据包,将数据从一个设备路由到另一个设备。与云平台或其他系统集成,以实现远程控制和监测。管理网络拓扑结构,包括路由选择和设备加入/退出处理。

由此可看出, cc2530如果同时作为zigbee网关,同时作为mcu处理数据,会导致zigbee处理较多的协议栈,肩负较多的任务,可能无法达到要求,因此CC2530通常不适合作为整个MCU直接连接到机智云平台等云服务,因为它的主要任务是管理Zigbee通信,而不是处理复杂的云连接和数据处理任务。相反,CC2530更适合作为子设备挂载在像STM32这样的更强大的MCU下进行数据通信。STM32可以处理与云平台的通信、数据处理、存储等高级任务,而CC2530专注于局部Zigbee通信。

既然要于stm32通讯,那么就需要一个数据传输的通道,基于stm32众多的串口,自然串口是一个不错的选择,接下来我们就在zigbee上使用串口作为stm32数据传输的通道。

首先,在iar里新建一个项目,新建main文件,包含相关的头文件。

#include <iocc2530.h>
#include <stdio.h>

接下来,我们编写初始化串口和实现串口的中断,先定义缓冲区和数据长度的全局变量方便其他任务调用

char rx_buf;
intrx_len = 0;

接下来,实现串口初始化函数,函数注释已给出,使用9600的波特率进行通信



然后编写对应的串口接收中断触发函数,把接收数据存入缓冲区:



这里,为了方便演示效果,我在main里把接收的数据重新从串口发送出去,如果要实现不同指令处理,只需要对数据接收的buf进行判断即可



让我们打开串口助手,发送数据看看情况:



可以看见,发送的文字成功返回,后续只需要修改while内容即可实现数据沟通
页: [1]
查看完整版本: 使用串口在zigbee和stm32之间传送数据