我是靠谱客的博主 鲜艳泥猴桃,最近开发中收集的这篇文章主要介绍silicon EFR32BG22发送单载波,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

本文开发环境

  • sdk: gecko_sdk_3.1
  • IDE: Simplicity Studio 5.0

在项目初期需要调试天线相关的参数,需要芯片发射一个单载波,也就是频率固定的电磁波,以便调整相关参数。如果条件允许直接使用官方提供的DTM程序即可。但对于没有串口的情况可以在Bluetooth SoC Empty工程的基础上稍作修改即可。
在这里插入图片描述

第一步
安装DTM
在这里插入图片描述

第二步

修改代码,如下

#include "em_common.h"
#include "sl_app_assert.h"
#include "sl_bluetooth.h"
#include "gatt_db.h"
#include "app.h"
#include "sl_bt_api_compatibility.h"

#define SL_STACK_TIMER_PRBS 100
#define SL_STACK_TIMER_TONE 101

enum packet_type {
  PACKET_TYPE_PRBS9 = 0,     // binary 00 -> PRBS9 Packet Payload
  PACKET_TYPE_11110000 = 1,  // binary 00 -> 11110000 Packet Payload
  PACKET_TYPE_10101010 = 2,  // binary 10 -> 10101010 Packet Payload
  PACKET_TYPE_11111111 = 3,  // binary 11 -> On the LE Coded PHY: 11111111
  PACKET_TYPE_MAX
};
enum phy {
  PHY_NONE = 0,
  PHY_1M = 1,
  PHY_2M = 2,
  PHY_CODED_S_8 = 3,
  PHY_CODED_S_2 = 4,
  PHY_MAX
};
// Array for mapping standard UART Test Interface command packet types to bgapi test_packet_type
static test_packet_type_t std_to_bgapi_pkt_types[PACKET_TYPE_MAX] = {
  [PACKET_TYPE_PRBS9] = test_pkt_prbs9,
  [PACKET_TYPE_11110000] = test_pkt_11110000,
  [PACKET_TYPE_10101010] = test_pkt_10101010,
  [PACKET_TYPE_11111111] = test_pkt_11111111
};


void sl_bt_on_event(sl_bt_msg_t *evt)
{
  sl_status_t sc;
  bd_addr address;
  uint8_t address_type;
  uint8_t system_id[8];


  switch (SL_BT_MSG_ID(evt->header)) {
    
    //当收到sl_bt_evt_system_boot_id事件之后不要做任何蓝牙相关的操作,设置一个定时器。
    case sl_bt_evt_system_boot_id:
      sl_bt_system_set_soft_timer(3000,SL_STACK_TIMER_PRBS,1);
      break;
     }
	
	//定时器事件
	case sl_bt_evt_system_soft_timer_id:
      {
        switch(evt->data.evt_system_soft_timer.handle)
        {
        case SL_STACK_TIMER_PRBS:
        		//需要先发该数据
                sc = sl_bt_test_dtm_tx_v4(std_to_bgapi_pkt_types[PACKET_TYPE_PRBS9] ,255,0,PHY_1M,6);
                break;
        case SL_STACK_TIMER_TONE:
          sc = sl_bt_test_dtm_end();
			//这里的第一个参数填0xfe才为单载波
          sc = sl_bt_test_dtm_tx_v4(0xfe ,255,0,PHY_1M,6);
          break;
        default :
          break;
        }
      }
      break;
    case sl_bt_evt_test_dtm_completed_id:
      {
        static int once = 1;
        
        if(once)
          sl_bt_system_set_soft_timer(3000,SL_STACK_TIMER_TONE,1);
        once = 0;
      }
      break;
    default:
    break;
}

最后

以上就是鲜艳泥猴桃为你收集整理的silicon EFR32BG22发送单载波的全部内容,希望文章能够帮你解决silicon EFR32BG22发送单载波所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(37)

评论列表共有 0 条评论

立即
投稿
返回
顶部