串口通讯实验-物联网

举报
泽宇-Li 发表于 2022/11/27 22:48:18 2022/11/27
【摘要】 简介:通过实验了解cc2500串口通讯、Iar在线调试串口通信 实现和pc端通信   Cc2500是2.4ghz的高性能发射器 用于低功耗的rf上,主要针对:工业、作用:主要有处理数据 数据缓冲 突发传输 接受信号强度知识等   Zigbee是一款新型的无线通信技术 适用于传输范围短数据传输速率较低的电子元器件间,ZigBee无线通信技术可于数以千计的微小传感器相互间,依托专门的无线电标准达成

简介:通过实验了解cc2500串口通讯、Iar在线调试串口通信 实现和pc端通信

  Cc25002.4ghz的高性能发射器 用于低功耗的rf,主要针对:工业、作用:主要有处理数据 数据缓冲 突发传输 接受信号强度知识等

  Zigbee是一款新型的无线通信技术 适用于传输范围短数据传输速率较低的电子元器件间,ZigBee无线通信技术可于数以千计的微小传感器相互间,依托专门的无线电标准达成相互协调通信,因而该项技术常被称为Home RF Lite无线技术、FireFly无线技术

1.   实验目的

学习CC2530 串口通讯原理

使用IAR在线调试串口通信,实现PC机与开发板的通信。

2.   实验环境

硬件:ZigBee(CC2530)模块,UART下载调试板,CCDebugger仿真器,PC

软件:IAR Embedded Workbench for 8051

实验目录:Src\ZigBee\Components\CC2530无线传感网实验\实验06 串口通讯实验

3.   实验原理

   在无线传感网络中,CC2530开发板需要将采集到的数据发送给上位机(即PC)处理,同时上位机需要向CC2530 发送控制信息,这一切都离不开两者之间的信息传递。串口就是开发板和用户电脑交互的一种工具,串口通讯是指外设与计算机之间,通过数据信号线、控制线等 ,按位进行传输命令和数据的一种通讯方式,正确地使用串口对于ZigBee 无线开发具有较大的促进作用 。

4.   实验步骤

  • CC Debugger仿真器一端连在PC机上,一端连在UART调试板仿真器下载口上。
  • IAR for 8051打开实验工程,目录在:Src\ZigBee\Components\CC2530基础实验\实验06 串口通讯实验,之后打开后缀名为(.eww)的工程文件。
  • 编译程序,菜单栏Project->Rebuild All
  • 编译通过之后下载程序到ZigBee模块,点击按钮如图:

1.png

  • 使用光盘提供的串口终端软件AccessPort,设置为串口波特率576008位、无奇偶奇校验、无硬件流模式

5.   实验结果

当向串口终端输入数据输入回车结束符时,将在超级终端看到串口输入的数据。如下图:

2.png

 代码:

 u8 USART_RX_BUF[10];//定义接收数组,看传感器返回的有多少字节数据
 u8 USART_RX_STA=0;//数组标志位,如第0位、第一位
 static char  start=0;  //开始接收数据标志位

void USART2_IRQHandler(void)
{
  u8 Res=0;//定义一个数来接收每次读取的数据
   if(USART_GetITStatus(USART2, USART_IT_RXNE) != RESET)  //接收中断,每一个字节都会中断一次
    {
        Res =USART_ReceiveData(USART2);    //读取接收到的字节数据
        //接收数据时不要随便加入占用时间的命令,如串口打印,会影响下面数据字节的接收
      
            if(Res == 0xFF) //如果接收的第一位数据是0XFF(这个是查看传感器的手册得知的,这里相当于进行校验)
            {
                 start=1;   //开始接收数据标志位,一旦第一个接收正确,就就继续向下接收
            }

            if(start== 1)
            {
                USART_RX_BUF[USART_RX_STA] = Res ; //把接收到的数据存到数组里面        
                USART_RX_STA++;//数组标志位加1
                if(USART_RX_STA >= 10 && (USART_RX_BUF[1]==0X01))//这里还校验了接收的第二个数据
                    {
                     printf("PM2.5:%d\n",USART_RX_BUF[3]);//通过                         串口1打印接收数组里的数据    
                                                          USART_SendData(USART3,USART_RX_BUF[3]);    //将数据通过串口3发出                              uart3_send_buff(USART_RX_BUF,10);
                        USART_RX_STA=0;//重新开始接收   
                        USART_RX_BUF[0] = 0;
                                  start=0;
                    }
            } 
        
        }
    }        

作者:泽宇-Li

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。