资讯详情

【PB03F 超详细-环境搭建】蓝牙5.2安信可PB-03F-Kit开发板二次开发环境搭建

标题

本博文介绍安信可PB-03F-Kit开发板的基本情况,开发环境的建设,以及照明LED例如,介绍和固件烧录为例。

目录

    • 标题
      • 0.硬件介绍
        • PB03模组介绍
        • PB-03F-Kit开发板介绍
      • 1.资料获取
        • 1.1 安信可官网
        • 1.2 奉加微官网
      • 2.开发环境建设
        • 2.1 Keil5软件安装
        • 2.2 SDK下载
          • SDK目录结构
        • 2.3.下载烧录工具
      • 3.编译点灯程序(嵌入式)hello world)
          • 3.1 LED原理图
          • 3.2 代码编写
      • 4.程序烧录
        • 4.1 安装串口驱动
        • 4.2 烧录工具
      • 5.实验现象
      • 6.资料汇总打包下载
      • 7.总结常见问题

0.硬件介绍

PB-03F-Kit 是针对 PB-03F 模块设计。开发板实物如下图所示。 在这里插入图片描述

PB03模组介绍

PB-03是深圳安信科技有限公司开发的蓝牙模块。PHY6252是一款集成度高、功耗低的蓝牙系统级芯片(SoC),专为物联网(IoT)、设计移动设备、可穿戴电子设备、智能家居等应用。

支持BLE5.2。芯片 内置 64 KB SRAM,256KB flash,96 KB ROM。 规格介绍的特点如下: 其他详情请参考安信可官网的规格。

PB-03F-Kit开发板介绍

开发板外观图: 尺寸图:

板载有RGB 灯、按键、CH340等资源,二次开发非常方便。

1.资料获取

主要去安信可官网或者奉加微下载一些需要的开发资料。

1.1 安信可官网

进入安信可官网下载一些所需资料,如规格书等。 操作图:安信可官网:

1.2 奉加微官网

官网链接:www.phyplusinc.com 下载所需信息。

2.开发环境建设

主要用于开发环境Keil5集成开发软件。

2.1 Keil5软件安装

keil5软件安装,百度教程这里就不赘述了。

2.2 SDK下载

在官网下载SDK,然后解压。

SDK目录结构

2.3.下载烧录工具

在官网下载PhyPlusKit软件

3.编译点灯程序(嵌入式)hello world)

3.1 LED原理图

有一个开发板RGB灯,原理图如下。 我们将点亮蓝色(Blue)的LED,所以代码要做的工作就是

3.2 代码编写

在gpio在例程的基础上修改代码。 打开SDK下面的example\peripheral\gpio例程,双击下图工程文件。 由于芯片休眠,LED输出也会关闭。 点击魔法棒,选择C/C 选项。 宏说明:

  • CFG_SLEEP_MODE=PWR_MODE_SLEEP :在固件程序执行过程中, 会在空闲时间进入睡眠。睡眠后,调试器无法调试和跟踪,断点无效
  • CFG_SLEEP_MODE=PWR_MOD_NO_SLEEP :关闭低功耗模式,执行固件程序 处理器总是在程中醒来。

CFG_SLEEP_MODE=PWR_MODE_SLEEP修改为CFG_SLEEP_MODE=PWR_MOD_NO_SLEEP。 修改后如图所示: gpio示例演示按键功能,这里的示例功能太复杂了。 我们将其简化为亮蓝色LED(GPIO_18 输出高电平)。 找到void Key_Demo_Init(uint8 task_id)全部注释掉。 替换为如下 修改后的参考代码为:

//void Key_Demo_Init(uint8 task_id) //{ 
         // uint8_t i = 0; // key_TaskID = task_id; // LOG("gpio key demo start...\n"); // hal_gpio_init(); // hal_gpioretention_register(P20); // hal_gpio_write(P20,1);  hal_gpio_pin2pin3_control(P2,1); // /* // when use key,please set the following parameters: // 1.key number,config KEY_NUM in key.h // 2.gpio used,config key_state.pin // P00~P03:default jtag,we can use it as key when no debug. // P04~P07,P11~P15:default gpio,use it easily. // P08:mode select pin,cannot used as other usage. // P09~P10,it is uart in burn mode which cannot config.it is configable when in debug mode. 
       
        // P16~P17:xtal pin,when use this pins,please use rc as system frequency.config hal_rtc_clock_config(CLK_32K_RCOSC) in hal_init first. 
        // P18~P34:wakeup is supported,but interrupt is not supported,so config it as key is not suggested. 
        // 3.idle level,config key_state.idle_level 
        // 4.key type,if only use press and release,ignore the long press and release code 
        // 5.taskID and callback function 
        // */ 
         key_state.key[0].pin = GPIO_P14;//default gpio 
         key_state.key[1].pin = GPIO_P15; 
         key_state.key[2].pin = GPIO_P00;//default jtag 
         key_state.key[3].pin = GPIO_P01; 
         key_state.key[4].pin = GPIO_P02; 
         key_state.key[5].pin = GPIO_P03; 
         key_state.key[6].pin = GPIO_P16;//default xtal 
         key_state.key[7].pin = GPIO_P17;//default xtal 
         
         key_state.key[0].pin = GPIO_P09; 
         key_state.key[1].pin = GPIO_P10; 
        // key_state.key[0].pin = GPIO_P03; 
         key_state.key[1].pin = GPIO_P15; 
        // for(i = 0; i < HAL_KEY_NUM; ++i) 
        // { 
          
        // key_state.key[i].state = HAL_STATE_KEY_IDLE; 
        // key_state.key[i].idle_level = HAL_LOW_IDLE; 
        // if(key_state.key[i].pin == GPIO_P16) 
        // { 
          
        // hal_pwrmgr_register(MOD_USR2,NULL,P16_wakeup_handler); 
        // hal_gpio_cfg_analog_io(key_state.key[i].pin,Bit_DISABLE); 
        // LOG("P16 is used\n"); 
        // } 
        // else if(key_state.key[i].pin == GPIO_P17) 
        // { 
          
        // hal_pwrmgr_register(MOD_USR3,NULL,P17_wakeup_handler); 
        // hal_gpio_cfg_analog_io(key_state.key[i].pin,Bit_DISABLE); 
        // LOG("P17 is used\n"); 
        // } 
        // else if((key_state.key[i].pin == GPIO_P09) || (key_state.key[i].pin == GPIO_P10)) 
        // { 
          
        // uart_port_reconfig(); 
        // } 
        // } 
         key_state.key[0].idle_level = HAL_LOW_IDLE; 
         key_state.key[1].idle_level = HAL_HIGH_IDLE; 
        // key_state.task_id = key_TaskID; 
        // key_state.key_callbank = key_press_evt; 
        // key_init(); 
        // osal_start_timerEx(key_TaskID, KEY_DEMO_ONCE_TIMER, 5000); 
        // osal_start_reload_timer(key_TaskID, KEY_DEMO_CYCLE_TIMER, 5000); 
        //} 
        void 
        Key_Demo_Init
        (uint8 task_id
        ) 
        { 
          key_TaskID 
        = task_id
        ;
        // 任务id,先暂时不用管。 
        // 此写函数默认会调用hal_gpio_pin_init(pin,GPIO_OUTPUT); 
        hal_gpio_write
        (GPIO_P18
        ,HAL_HIGH_IDLE
        )
        ; 
        // GPIO18 输出高电平,点亮LED 
        } 
       

然后点击编译,如下图所示。 这里的编译有3个警告,是因为这个c文件定义了函数却没有调用。就点亮led可以暂时先忽略此警告。

After Build - User command #2: fromelf.exe .\Objects\gpio_demo.axf --i32combined --output .\bin\gpio_demo.hex

注意这一行的 --output .\bin\gpio_demo.hex告诉了我们输出的gpio_demo.hex固件在

4.程序烧录

4.1 安装串口驱动

开发板使用的驱动芯片是CH340,所以烧录之前先安装CH340的驱动。 安装方法,搜索一下就有,就不赘述了。

4.2 烧录工具

连接开发板,打开PhyPlusKit软件。打开串口COM3,选择UXTDWU。 此时会看到右侧一直输出。说明开发板连接成功。

UART TX ASCII: UXTDWU
UART TX ASCII: UXTDWU
UART TX ASCII: UXTDWU
UART TX ASCII: UXTDWU
UART TX ASCII: UXTDWU
UART TX ASCII: UXTDWU
UART TX ASCII: UXTDWU
UART TX ASCII: UXTDWU
UART TX ASCII: UXTDWU
UART TX ASCII: UXTDWU
UART TX ASCII: UXTDWU
UART TX ASCII: UXTDWU
UART TX ASCII: UXTDWU
UART TX ASCII: UXTDWU
UART TX ASCII: UXTDWU
UART TX ASCII: UXTDWU
UART TX ASCII: UXTDWU
UART TX ASCII: UXTDWU
UART TX ASCII: UXTDWU
UART TX ASCII: UXTDWU

也就是如图所示的按键。

出现UART RX: cmd>>:字样,说明已经可以开始下载程序了。波特率选项自动变为11520,是正常现象。 烧录之前必须先擦除程序。点击:Erase。擦除成功如下。

编译生成的固件在bin目录下。 双击如下图输入框,选择需要下载的.hex固件。固件位置如上图所示。

点击Write,进行程序烧录。

烧录成功如下图 下载成功后开发板,程序才会开始执行。

5.实验现象

烧录工具会输出一些调试信息。 开发板LED成功点亮。夸一下,这是多么璀璨的蓝色o( ̄▽ ̄)ブ

6.资料汇总打包下载

打包下载链接:打包下载

7.常见问题汇总

  • 无法下载 1.首先要安装CH340的驱动,其次烧录软件要选择对应的串口COM编号。在设备管理器里面可以查看。 2.下载显示超时。一定要先擦除再进行下载。严格按照本博文的流程可以多试几次。
  • LED不亮 1.记得修改宏定义。NO_SLEEP模式 2.程序成功编译,没有错误。 3.烧录对应生成的HEX文件。

标签: 连接器pb291

锐单商城拥有海量元器件数据手册IC替代型号,打造 电子元器件IC百科大全!

锐单商城 - 一站式电子元器件采购平台