收藏官网首页
查看: 1530|回复: 0

[经验分享] 使用串口在zigbee和stm32之间传送数据

106

主题

107

帖子

7261

积分

论坛元老

Rank: 8Rank: 8

积分
7261
跳转到指定楼层
楼主
 楼主| 发表于 2023-9-28 22:20:54 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
汉枫LPB120模块
   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文件,包含相关的头文件。

  1. #include <iocc2530.h>
  2. #include <stdio.h>
复制代码


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

  1. char rx_buf[64];
  2. int  rx_len = 0;
复制代码


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



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



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



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



可以看见,发送的文字成功返回,后续只需要修改while内容即可实现数据沟通
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

加入Q群 返回顶部

版权与免责声明 © 2006-2024 Gizwits IoT Technology Co., Ltd. ( 粤ICP备11090211号 )

快速回复 返回顶部 返回列表