前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >基于KT6368A蓝牙芯片开发智能抖音翻页翻页笔总结

基于KT6368A蓝牙芯片开发智能抖音翻页翻页笔总结

原创
作者头像
清月电子
发布2023-11-16 14:28:45
2330
发布2023-11-16 14:28:45
举报
文章被收录于专栏:KT148AKT148A

一、功能简介

KT6368A蓝牙芯片也是基于 HID 开发,主要用于浏览当下火爆的抖音等小视频的上下翻页、左右菜单切换、暂停等操作。打开手机蓝牙进行连接,进入视频浏览界面操作对应按键即可。包含一个蓝牙的指示灯,表示是否连接 。同时支持adkey按键,这个按键就可以根据需求来进行裁剪。产品最终选用CR3032的电池,所以非常的在意功耗。

程序部分理解记录

在 系 统 进 行 初 始 化 的 过 程 中 , 根 据 以 下 信 息 进 行 APP 注 册 。 执 行 的 大 致 流 程 为 :

REGISTER_APPLICATION--->state_machine--->app_start()--->sys_key_event_enable();这条流程主要进行

设备的初始化设置以及一些功能使能。

REGISTER_APPLICATION--->event_handler--->app_key_event_handler()--->app_key_deal_test();这 条流 程

在 event_handler 之下有多个 case,上述选择按键事件的处理流程进行代码流说明,主要展示按键事

件发生时,程序的处理流程。

(2) APP 状态机

状态机有 create,start,pause,resume,stop,destory 状态,根据不同的状态执行对应的分支。

APP 注册后进行初始运行,进入 APP_STA_START 分支,开始 APP 运行。

1. static int state_machine(struct application *app, enum app_state state, struct intent *it)

2. { switch (state) {

3. case APP_STA_CREATE:

4. break;

5. case APP_STA_START:

6. if (!it) {

7.

break; }

8. switch (it->action) {

9. case ACTION_TOUCHSCREEN:

10.

app_start();

进入 app_start()函数后进行对应的初始化,时钟初始化,模式选择,低功耗初始化,以及外部事件使

能。

1. static void app_start()

2. {

3. log_info("=======================================");

4. log_info("-----------------------------KEYPAGE------------------------");

5. log_info("=======================================");

6.

static int state_machine(struct application *app, enum app_state state, struct intent *it)

{ switch (state) {

case APP_STA_CREATE:

break;

5. case APP_STA_START:

6. if (!it) {

7. break; }

8. switch (it->action) {

9. case ACTION_TOUCHSCREEN:

10.

app_start();

进入 app_start()函数后进行对应的初始化,时钟初始化,模式选择,低功耗初始化,以及外部事件使

能。

1. static void app_start()

2. {

3. log_info("=======================================");

4. log_info("-----------------------------KEYPAGE------------------------");

5. log_info("=======================================");

6.

主体的还是以事件的形式进行驱动,空闲时就睡眠,有按键或者蓝牙协议栈的事件,则自己唤醒然后做出相应的动作,如下是按键的动作处理:

当 APP 注册运行后,有按键事件发生时,会进行对应的数据发送,由于是 HID 设备,所以数据的发

送形式从对应的 HID 设备的描述符产生。用户如需要对设备进行功能自定义,可以结合 HID 官方文

档对下述描述符进行修改。

暂停按键对应的 HID 设备发送数据包,通过下图的 hid_data_send_pt()进行数据传输。

1. log_info("point: %d,%d", point_cnt, point_len);

2. if (point_cnt) {

3. for (int cnt = 0; cnt < point_cnt; cnt++) {

4. hid_data_send_pt(1, key_data, point_len);

5. key_data += point_len;

6. KEY_DELAY_TIME();

7. }

8. }

由描述符可知,设备一共有 5 个输入实体 Input,一共组成 7byte 的数据,所以对应的暂停按键

数据包由 7byte 的数据组成,前 2byte 表示识别是否有触摸输入,中间 2 个 2byte 分别表示 y 坐标和

x 坐标,最后 1byte 表示 contact count,不同的按键事件对应不同的数据包,数据通过 hid_data_send_dt

函数发送至设备。对应的按键事件通过事件处理机制和数据发送实现对应的功能。

实际开发记录--参数详解

1、由蓝牙芯片自己完成所有的事情,分两个按键,一个按键短按开机,短按关机 。第二个IO口是外挂adkey

  1. 芯片的2脚LED,7脚【USB-DM】开关机按键,8脚【USB-DP】外挂adkey 。空闲超过5分钟就自动关机
  2. 蓝牙名:KT6368A-keypage

3.1 测试环境--KT6368A的测试demo板

  1. 采用3.3V供电,而不选择用5V供电。直接进去测试模块的3.3V标号
  2. 去掉原本测试板上面的ME6208A的LDO,因为他也会产生功耗

3.2 功耗记录 ---相对精度的电流测试仪器

3.3 实现的效果如下:

测试了抖音以及快手的相关app,实现上翻和下翻等等功能

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、功能简介
  • 程序部分理解记录
  • 实际开发记录--参数详解
    • 3.1 测试环境--KT6368A的测试demo板
      • 3.2 功耗记录 ---相对精度的电流测试仪器
        • 3.3 实现的效果如下:
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档