CC2530&无线传感网-实验26:使用Basic-RF实现串口收发

CC2530&无线传感网-实验26:使用Basic-RF实现串口收发

1.实验要求

  • 使用一块CC2530开发板,正确配置通信节点的无线参数,进行网络初始化
  • 调用串口初始化函数,使开发板的串口和上位机建立通信,波特率为9600
  • 在上位机通过“串口助手”向开发板发送长度为3个字节的命令帧,格式为 “帧头 命令字 帧尾”
  • 开发板接收到3个字节的完整的命令帧后,首先判断帧头和帧尾,两者均正确后,对命令字进行解析。
    • 0xA1:开灯
    • 0xA2:关灯
    • 0xA3:翻转灯光

2.知识点

  • 串口初始化函数
    利用BasicRF软件包提供的串口API函数
    串口初始化函数
  • 串口发送函数
    在这里插入图片描述
  • 串口接受函数
    在这里插入图片描述
  • 应用举例
void main(void)
{
    halBoardInit();//选手不得在此函数内添加代码
    ConfigRf_Init();//选手不得在此函数内添加代码
    halUartInit(9600);//初始化波特率为9600
    unsigned char str1[32]= "测试\r\n";
    unsigned char rev[32];
    unsigned char len=0 ;
    halUartWrite(str1, sizeof(str1));
    while(1)
    {
    /* user code start */
     if(halUartRxLen()>0)
    {
        len = halUartRxLen();
         halUartRead(rev, len);
        halUartWrite(rev, len);
    }
    /* user code end */
    }
}

3.实验步骤

  • 网络初始化
/*****点对点通讯地址设置******/
#define RF_CHANNEL                17         // 频道 11~26
#define PAN_ID                    0x1234     //网络id 
#define MY_ADDR                   0x000A     //本机模块地址
#define SEND_ADDR                 0x000B     //发送地址
/**************************************************/
  • 串口初始化
void main(void)
{
    halBoardInit();//选手不得在此函数内添加代码
    ConfigRf_Init();//选手不得在此函数内添加代码
    halUartInit(9600);
    while(1)
    {
    /* user code start */
     Uart_Recv_Send();
    /* user code end */
    }
}
  • 设计数据接受函数,解析数据帧
unsigned char recv_uart_data[3];//命令帧
unsigned char len = 0;//数据缓冲区长度
unsigned char str1[32]= "开机\r\n";
unsigned char str2[32]= "关机\r\n";
unsigned char str3[32]= "翻转\r\n";
unsigned char str4[32]= "错误命令\r\n";
void Uart_Recv_Send()
{
  if(halUartRxLen()>0)
  {
    len = halUartRxLen();
    if(len==3)
    {
      halUartRead(recv_uart_data, len);
      if(recv_uart_data[0]==0xFB&& recv_uart_data[2]==0xBF)
      {
        switch(recv_uart_data[1])
        {
        case 0xA1:
          halUartWrite(str1, sizeof(str1));break;
        case 0xA2:
           halUartWrite(str2, sizeof(str2));break;
        case 0xA3:
           halUartWrite(str3, sizeof(str3));break;
        default:
          halUartWrite(str4, sizeof(str4));break;
        } 
       
      }
      else{
       halUartWrite(str4, sizeof(str4));}
    }
  }
}

拓展训练

  • 加入控制灯光控制代码,实现命令帧控制灯光并返回结果给串口
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值