一、功能簡介
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
2、芯片的2腳LED,7腳【USB-DM】開關機按鍵,8腳【USB-DP】外掛adkey 。空閑超過5分鐘就自動關機
3、藍牙名:KT6368A-keypage
3.1 測試環境--KT6368A的測試demo板
1、采用3.3V供電,而不選擇用5V供電。直接進去測試模塊的3.3V標號
2、去掉原本測試板上面的ME6208A的LDO,因為他也會產生功耗
3.2 功耗記錄 ---相對精度的電流測試儀器
3.3 實現的效果如下:
測試了抖音以及快手的相關app,實現上翻和下翻等等功能
審核編輯:湯梓紅
-
藍牙芯片
+關注
關注
17文章
377瀏覽量
46110 -
函數
+關注
關注
3文章
4341瀏覽量
62800
發布評論請先 登錄
相關推薦
評論