• 本系列博客学习由非官方人员 半颗心脏 潜心所力所写,仅仅做个人技术交流分享,不做任何商业用途。如有不对之处,请留言,本人及时更改。

1、 安信可PB-03蓝牙模组入门之旅一:Windows SDK二次开发入门环境搭建,以及固件烧录。
2、 安信可PB-03蓝牙模组入门之旅 二:SDK二次开发入门,认识架构,开始点亮一盏LED。

文章目录

  • 一、PB-03系列二次开发架构说明
    • 1.1 模块启动流程
    • 1.2 SDK介绍
  • 二、快速入门,点亮一颗LED
    • 另外,不要把我的博客作为学习标准,我的只是笔记,难有疏忽之处,如果有,请指出来,也欢迎留言哈!

一、PB-03系列二次开发架构说明

1.1 模块启动流程

首先,要了解芯片的启动流程,如下图所示看到我手上的PB-03模组是支持OTA的,

⚫ ROM 部分:启动并引导-或者 Boot loader 或者 Application 和 BLE 协议栈 API,PB-03是没有 TM 引脚的,通过上电后特定的时间内配合上位机实现进去烧录模式。而像 PB-02模组,启动是通过 TM 管脚的高低电平选择编程模式(高电平)还是正常启动模式(低电平)。
⚫ OTA Boot loader:用于引导 Application 以及处理 OTA 升级。
⚫ Application:应用代码,绝大部分二次开发工作都集中在 Application 部分。


1.2 SDK介绍

可二次开发的 SDK 没有使用第三方的 RTOS,不过在应用层抽象了 Task 概念,对于 BLE 应用,以下 Task 是必须的,每个 Task 分别包括一个初始化函数和一个事件处理函数,具体说明请参考下资料文件《PHY62XX_SDK_Application_Guide_v1.0.pdf》。

Tasks (Task 初始化&Task 事件响应函数) 说明 说明
LL_Init();LL_ProcessEvent(uint8, uint16) ; Link layer 初始化和对应的事件处理函数。
HCI_Init();HCI_ProcessEven(uint8, uint16) ; HCI 层初始化和对应的事件处理函数 。
L2CAP_Init();L2CAP_ProcessEvent(uint8, uint16) ; L2CAP 初始化和对应的事件处理函数 。
GAP_Init();GAP_ProcessEvent(uint8, uint16) ; GAP 初始化和对应的事件处理函数 。
LGATT_Init();GATT_ProcessEvent(uint8, uint16) ; GATT初始化和对应的事件处理函数。

应用一般定义一到多个 Task,典型场景(例程)一般只用一个应用 Task。人机交互,外设 控制,BLE 广播和连接的配置,GATT Profile 的加载等事务都在应用 Task 实现。任务以内以及任务之间可以通过 OSAL 提供的 API 进行交互和通信。

二、快速入门,点亮一颗LED

  • 首先我们打开 my_example/gpio 这个工程,找到任务分配函数 osalInitTasks();,为了方便用户开发业务程序,每个业务要以一个 Task 单独存在,Task 的唯一标准用其 ID 组成,像下面这个的写法。
void osalInitTasks( void )
{uint8 taskID = 0;tasksEvents = (uint16*)osal_mem_alloc( sizeof( uint16 ) * tasksCnt);osal_memset( tasksEvents, 0, (sizeof( uint16 ) * tasksCnt));LL_Init( taskID++);Blink_Init(taskID);
}

最重要的如何定义一个任务回调函数,注意这数组的的顺序,即每个子元素所在的下标,对应 osalInitTasks() 方法的任务传参顺序。

// The order in this table must be identical to the task initialization calls below in osalInitTask.
const pTaskEventHandlerFn tasksArr[] =
{LL_ProcessEvent,Blink_ProcessEvent,
};

任务使用,闪烁一盏LED。

void Blink_Init(uint8 task_id)
{LOG("%s task_id=%d \n", __FUNCTION__, task_id);Blink_TaskID = task_id;// LED 转换hal_gpio_pin_init(LED_GPIO, OEN);hal_gpio_write(LED_GPIO, 1);osal_start_timerEx(Blink_TaskID, Blink_Task_EVT, 1000);
}uint16 Blink_ProcessEvent(uint8 task_id, uint16 events)
{//判断是否这个任务IDif (task_id != Blink_TaskID){return 0;}//判断所在的ID是否一致if (events & Blink_Task_EVT){// LED 转换LED_Toggle(LED_GPIO);//延迟一秒WaitMs(1000);LOG("%s \n", __FUNCTION__);osal_start_timerEx(Blink_TaskID, Blink_Task_EVT, 2000);return (events ^ Blink_Task_EVT);}return 0;
}

本文对应的源码下载:https://github.com/xuhongv/PHY6252_6222_SDK/tree/main/my_examples/peripheral/gpio


另外,不要把我的博客作为学习标准,我的只是笔记,难有疏忽之处,如果有,请指出来,也欢迎留言哈!

  • phy6252 蓝牙Mesh学习demo汇总:https://github.com/xuhongv/PHY6252_6222_SDK

安信可PB-03蓝牙模组入门之旅 二:SDK二次开发入门,认识架构,开始点亮一盏LED。相关推荐

  1. 安信可PB系列蓝牙模组 APP Ble Mesh组网教程

    文章目录 一.前言 二.硬件准备 三.软件准备 四.AT指令集 五.APP组网示例 六.数据通信 一.前言 本文以PB-02开发板为例,介绍PB系列蓝牙模组通过安卓"PHY Mesh&quo ...

  2. 安信可PB-01/02蓝牙模组实现远程OTA无线升级功能介绍,剖析整个实现原理和代码介绍。

    文章目录 一.安信可PB-01/02蓝牙模组 OTA简介 二.安信可PB-01/02蓝牙模组 FOTA实现流程 三.通过手机APP 完成安信可PB-01/02蓝牙模组的OTA演示 联系我们 一.安信可 ...

  3. 安信可的GPRS+GSM模组A9连接机智云的教程

    安信可的GSM+GPR模组连接机智云搭建教程,官网给的文档也有相应的教程.我这里纯数对于个人连接机智云的过程中做一个记录. 1.首次先准备好好模组+USB转TTL串口工具+安信可官网的串口助手. 2. ...

  4. 【离线语音专题①】安信可最新离线语音模组VC系列出厂固件使用教程——SDK开源?

    文章目录 前言 一.使用前准备 1.通讯接口连接 2.开发板硬件说明 3.烧录说明 (1)JTAG烧录接线及烧录介绍 (2)UART串口升级接线及烧录介绍 二.模组出厂固件使用 1.指令词及指令码 2 ...

  5. 【AT指令使用】安信可ESP-32-S3/ESP-32-C3系列模组AT固件应用之Web Captive portal功能

    目录 前言 一.Captive portal功能原理 二.操作过程 1.烧录带有Captive portal功能的AT固件 2.模组开启Captive portal功能操作过程 3.手机部分的操作过程 ...

  6. 【 安信可海思Hi-12F模组】AT指令入门教程 接入鸿蒙智联

    文章目录 一.前言 二.创建产品 三.产品信息配置 3.1 AT+SYSVER 设置产品系统信息 3.2 AT+SYSPRAM 配置产品详细信息 3.3 AT+SYSTOKEN 设置产品 token ...

  7. 泰凌微ble mesh蓝牙模组天猫精灵学习之旅 ② 如何实现 微信小程序蓝牙控制 Ble Mesh模组 安信可TB02,全部开源!

    本<泰凌微ble mesh蓝牙模组天猫精灵学习之旅>系列博客学习由非官方人员 半颗心脏 潜心所力所写,仅仅做个人技术交流分享,不做任何商业用途.如有不对之处,请留言,本人及时更改. 1.小 ...

  8. 泰凌微ble mesh蓝牙模组天猫精灵学习之旅 ① 小白也痴迷,如何在 Linux环境搭建编译烧录 安信可TB02,点亮一盏LED灯;

    本<泰凌微ble mesh蓝牙模组天猫精灵学习之旅>系列博客学习由非官方人员 半颗心脏 潜心所力所写,仅仅做个人技术交流分享,不做任何商业用途.如有不对之处,请留言,本人及时更改. 1.小 ...

  9. 泰凌微ble mesh蓝牙模组天猫精灵学习之旅③简单入门安信可TB-02开发开发板轻松接入天猫精灵,语音控制冷暖灯so easy!

    本<泰凌微ble mesh蓝牙模组天猫精灵学习之旅>系列博客学习由半颗心脏 潜心所力所写,仅仅做个人技术交流分享,不做任何商业用途.如有不对之处,请留言,本人及时更改. 1.小白也痴迷,如 ...

最新文章

  1. 【11平台天梯】【原理分析】11平台天梯原理分析
  2. 网络工程师_记录的一些真题_2008下半年上午
  3. MySQL的用户的创建以及远程登录配置
  4. 系统运维手册_如何摆脱“背锅侠”,做一个合格的IT运维人员
  5. Java常用类之要点总结
  6. ABAP 关于ALV布局保存选项的讲解
  7. __int64 与long long 的区别
  8. 使用Spring Boot和注释支持配置Spring JMS应用程序
  9. vue 跨域:使用vue-cli 配置 proxyTable 实现跨域问题
  10. centos在文本中搜索字符串_linux(centos8):用grep命令查找文件内容
  11. Activity 生命周期与状态保存
  12. php preg_replace html,php – 忽略preg_replace中的html标签
  13. 【洛谷OJ】传球游戏
  14. JavaSocket编程基础
  15. vb在服务器上新建文件夹,VB 创建文件夹
  16. 手机QQ邮箱可以发html邮件么,如何使用手机qq邮箱发送邮件
  17. 基于java的学生学籍管理系统(含源文件)
  18. zotero本地常见插件配置,新电脑配置zotero,新手入门
  19. Python数据预处理:机器学习、人工智能通用技术(1)
  20. 主播直播时如何选择合适的内容?如何打造主播人设?

热门文章

  1. 【EEPROM AT24C02读正常,写不正常的解决办法】
  2. [RK3399] 添加调试RTL8822cs驱动
  3. 若依在导出导入excel的时候通过@Excel对字典表进行翻译
  4. 南邮 ctf xor
  5. win2api 创建进程简介
  6. Flutter的AES加密
  7. chrome android f12,chrome浏览器调试手机网站【原创】
  8. HDLC和PPP协议
  9. 32位架构应用转64位架构小结
  10. NEC发布USB 3.0控制芯片 下月出货