这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 嵌入式开发 » STM32 » 【STM32WBA55CG开发板】成果帖:蓝牙DDS信号发生器控制

共3条 1/1 1 跳转至

【STM32WBA55CG开发板】成果帖:蓝牙DDS信号发生器控制

菜鸟
2025-01-19 21:23:03     打赏

在前面的帖子中完成了STM32WBA55CG开发板对液晶屏和DDS芯片AD9834的驱动,本帖在ST官方蓝牙应用demo BLE_p2pServer的基础上加入上述驱动,从而实现蓝牙控制的DDS。

 BLE_p2pServer示例包含stm32cubemx配置,直接在此基础上进行修改十分方便,对蓝牙不是很了解的情况下从零创建蓝牙应用容易出错,ST的这款工具简直是小白的福音。

首先开启SPI接口:

image.png


系统时钟配置为100MHz,默认的是16MHz

image.png


增加AD9834的配置管脚:

image.png


在函数

void P2P_SERVER_Notification(P2P_SERVER_NotificationEvt_t *p_Notification)

中加入接收蓝牙数据的处理

void P2P_SERVER_Notification(P2P_SERVER_NotificationEvt_t *p_Notification)
{
  /* USER CODE BEGIN Service1_Notification_1 */

  /* USER CODE END Service1_Notification_1 */
  switch(p_Notification->EvtOpcode)
  {
    /* USER CODE BEGIN Service1_Notification_Service1_EvtOpcode */

    /* USER CODE END Service1_Notification_Service1_EvtOpcode */

    case P2P_SERVER_LED_C_READ_EVT:
      /* USER CODE BEGIN Service1Char1_READ_EVT */

      /* USER CODE END Service1Char1_READ_EVT */
      break;

    case P2P_SERVER_LED_C_WRITE_NO_RESP_EVT:
      /* USER CODE BEGIN Service1Char1_WRITE_NO_RESP_EVT */

      if(p_Notification->DataTransfered.p_Payload[0] == 0x01)
      {
        BSP_LED_On(LED_BLUE);
        LOG_INFO_APP("-- P2P APPLICATION SERVE: sine wave\n");
        P2P_SERVER_APP_Context.LedControl.Led1 = 0x01; /* LED1 ON */
AD9834_Select_Wave(Sine_Wave);
      }
      if(p_Notification->DataTransfered.p_Payload[0] == 0x00)
      {
        BSP_LED_Off(LED_BLUE);
        LOG_INFO_APP("-- P2P APPLICATION SERVER : triangular wave\n");
        P2P_SERVER_APP_Context.LedControl.Led1 = 0x00; /* LED1 OFF */
AD9834_Select_Wave(Triangle_Wave);
      }
      if(p_Notification->DataTransfered.p_Payload[0] == 0x02)
      {
        BSP_LED_Off(LED_BLUE);
        LOG_INFO_APP("-- P2P APPLICATION SERVER : square wave\n");
        //P2P_SERVER_APP_Context.LedControl.Led1 = 0x00; /* LED1 OFF */
AD9834_Select_Wave(Square_Wave);
      }
      /* USER CODE END Service1Char1_WRITE_NO_RESP_EVT */
      break;

    case P2P_SERVER_SWITCH_C_NOTIFY_ENABLED_EVT:
      /* USER CODE BEGIN Service1Char2_NOTIFY_ENABLED_EVT */
      P2P_SERVER_APP_Context.Switch_c_Notification_Status = Switch_c_NOTIFICATION_ON;
      LOG_INFO_APP("-- P2P APPLICATION SERVER : NOTIFICATION ENABLED\n");
      LOG_INFO_APP(" \n\r");
      /* USER CODE END Service1Char2_NOTIFY_ENABLED_EVT */
      break;

    case P2P_SERVER_SWITCH_C_NOTIFY_DISABLED_EVT:
      /* USER CODE BEGIN Service1Char2_NOTIFY_DISABLED_EVT */
      P2P_SERVER_APP_Context.Switch_c_Notification_Status = Switch_c_NOTIFICATION_OFF;
      LOG_INFO_APP("-- P2P APPLICATION SERVER : NOTIFICATION DISABLED\n");
      LOG_INFO_APP(" \n\r");
      /* USER CODE END Service1Char2_NOTIFY_DISABLED_EVT */
      break;

    default:
      /* USER CODE BEGIN Service1_Notification_default */

      /* USER CODE END Service1_Notification_default */
      break;
  }
  /* USER CODE BEGIN Service1_Notification_2 */

  /* USER CODE END Service1_Notification_2 */
  return;
}

根据接收的不同命令。驱动AD9834产生不同的波形

image.png

蓝牙上位机使用的是开源软件EFR Connect

image.png

视频分享

http://【STM32WBA55CG开发板蓝牙DDS信号发生器控制】 https://www.bilibili.com/video/BV1aYw6e8ETu/?share_source=copy_web&vd_source=4b9c499d8564e7ad9169a2c39fa19a17

代码分享

BLE_p2pServer_DDS_demo.zip


菜鸟
2025-01-19 21:27:55     打赏
2楼

院士
2025-01-22 10:04:25     打赏
3楼

真棒!

EFR的开源客户端看来兼容性还是蛮高的嘛


共3条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]