2.3.3. 单模鼠标
- 标准的蓝牙鼠标,支持蓝牙 CLASSIC,蓝牙 BLE 和 2.4G 模式。 
- 蓝牙鼠标支持 windows 系统,mac 系统、安卓系统、ios 系统连接。 
- 支持的板级:br25、bd19 支持的芯片:AC6363F、AC6369F 
2.3.3.1. 单模鼠标case使用
- 使用快捷键Alt + g 打开app_config.h,配置CONFIG_APP_MOUSE_SINGLE使能 
//app case 选择,只选1,要配置对应的board_config.h #define CONFIG_APP_MOUSE_SINGLE 1//自拍器, board_ac6328a,board_6328
- 使用快捷键Alt + g 打开board_config.h,板级选择CONFIG_BOARD_AC6321A_MOUSE 
//#define CONFIG_BOARD_AC632N_DEMO // CONFIG_APP_KEYBOARD,CONFIG_APP_PAGE_TURNER #define CONFIG_BOARD_AC6321A_MOUSE // CONFIG_APP_MOUSE // #define CONFIG_BOARD_AC6328A_KEYFOB // CONFIG_APP_KEYFOB
- 按照 :HID DEMO说明 编译下载代码、接线(接线参考下列)、复位设备,再使用手机搜索设备进行连接。 - KEY: key接线需要打开”board_ac6321a_mouse_cfg.h”查看IO key接线。 - #define MOUSE_KEY_SCAN_MODE ENABLE_THIS_MOUDLE #define TCFG_IOKEY_ENABLE ENABLE_THIS_MOUDLE //是否使能IO按键 #define TCFG_IOKEY_POWER_CONNECT_WAY ONE_PORT_TO_LOW //按键一端接低电平一端接IO #define TCFG_IOKEY_MOUSE_LK_PORT IO_PORTA_01 //鼠标左键 #define TCFG_IOKEY_MOUSE_RK_PORT IO_PORTA_02 //鼠标右键 #define TCFG_IOKEY_MOUSE_HK_PORT IO_PORTA_00 //鼠标中键 #define TCFG_IOKEY_MOUSE_MK_IN_PORT NO_CONFIG_PORT //未使用 #define TCFG_IOKEY_MOUSE_MK_OUT_PORT NO_CONFIG_PORT //未使用 - code switch: 打开”board_ac6321a_mouse_cfg.h”查看编码开关接线 - //*********************************************************************************// // code switch配置 // //*********************************************************************************// #define TCFG_CODE_SWITCH_ENABLE ENABLE_THIS_MOUDLE #define TCFG_CODE_SWITCH_A_PHASE_PORT IO_PORTB_04 #define TCFG_CODE_SWITCH_B_PHASE_PORT IO_PORTB_05 - optical mouse sensor: 打开”board_ac6321a_mouse_cfg.h”查看鼠标位移传感器接线 - //*********************************************************************************// // optical mouse sensor配置 // //*********************************************************************************// #define TCFG_OMSENSOR_ENABLE ENABLE_THIS_MOUDLE #define TCFG_HAL3205_EN TCFG_OMSENSOR_ENABLE //同时配置OMSensor_config.h中的配置项 // #define TCFG_HAL3212_EN TCFG_OMSENSOR_ENABLE #define TCFG_OPTICAL_SENSOR_SCLK_PORT IO_PORTA_07 #define TCFG_OPTICAL_SENSOR_DATA_PORT IO_PORTA_08 #define TCFG_OPTICAL_SENSOR_INT_PORT IO_PORTB_06 #define OPTICAL_SENSOR_SAMPLE_PERIOD 6 //ms 
- 开发者可以准备好相应硬件并进行连接进行调试。 
2.3.3.2. 主要代码说明
- 模式选择:配置 BLE 或 2.4G 模式;若选择 2.4G 配对码必须跟对方的配对码一致(app_mouse.c) 
//2.4G模式: 0---ble, 非0---2.4G配对码 #define CFG_RF_24G_CODE_ID (0) //<=24bits /* #define CFG_RF_24G_CODE_ID (0x23) //<=24bits */
- 支持双模 HID 设备切换处理(app_mouse.c) 
static void mouse_select_btmode(u8 mode) { if (mode != HID_MODE_INIT) { if (bt_hid_mode == mode) { return; } bt_hid_mode = mode; } else { //init start } log_info("###### %s: %d,%d\n", __FUNCTION__, mode, bt_hid_mode); if (bt_hid_mode == HID_MODE_BLE) { //ble log_info("---------app select ble--------\n");
- 支持进入省电低功耗 Sleep(board_ac6321a_mouse_cfg.h) 
//*********************************************************************************// // 低功耗配置 // //*********************************************************************************// #define TCFG_LOWPOWER_POWER_SEL PWR_DCDC15 // #define TCFG_LOWPOWER_POWER_SEL PWR_LDO15 //电源模式设置,可选DCDC和LDO #define TCFG_LOWPOWER_BTOSC_DISABLE 0 //低功耗模式下BTOSC是否保持 #define TCFG_LOWPOWER_LOWPOWER_SEL SLEEP_EN //SNIFF状态下芯片是否进入powerdown /*强VDDIO等级配置,可选: VDDIOM_VOL_20V VDDIOM_VOL_22V VDDIOM_VOL_24V VDDIOM_VOL_26V VDDIOM_VOL_30V VDDIOM_VOL_30V VDDIOM_VOL_32V VDDIOM_VOL_36V*/ #define TCFG_LOWPOWER_VDDIOM_LEVEL VDDIOM_VOL_30V /*弱VDDIO等级配置,可选: VDDIOW_VOL_21V VDDIOW_VOL_24V VDDIOW_VOL_28V VDDIOW_VOL_32V*/ #define TCFG_LOWPOWER_VDDIOW_LEVEL VDDIOW_VOL_28V //弱VDDIO等级配置 #define TCFG_LOWPOWER_OSC_TYPE OSC_TYPE_LRC #define TCFG_VD13_CAP_EN 1
- 支持进入软关机,可用 IO 触发唤醒(board_ac6321a_mouse.c) 
struct port_wakeup port0 = { .pullup_down_enable = ENABLE, //配置I/O 内部上下拉是否使能 .edge = FALLING_EDGE, //唤醒方式选择,可选:上升沿\下降沿 .both_edge = 0, .filter = 0, .iomap = TCFG_CODE_SWITCH_A_PHASE_PORT, //唤醒口选择 }; void board_set_soft_poweroff(void) { u32 porta_value = 0xffff; u32 portb_value = 0xffff; u32 portc_value = 0xffff; #if TCFG_OMSENSOR_ENABLE optical_mouse_sensor_led_switch(0); #endif gSensor_wkupup_disable(); log_info("%s",__FUNCTION__);
- 系统事件处理函数(app_mouse.c) 
static int event_handler(struct application *app, struct sys_event *event)
- 蓝牙事件处理函数(app_mouse.c) 
static int bt_hci_event_handler(struct bt_event *bt)
- 增加配对绑定管理(app_mouse.c) 
//使能开配对管理,BLE & 2.4g 鼠标只绑定1个主机,可自己修改按键方式 #define DOUBLE_KEY_HOLD_PAIR (0 & CFG_RF_24G_CODE_ID) //中键+右键 长按数秒,进入2.4G配对模式 #define DOUBLE_KEY_HOLD_CNT (4) //长按中键计算次数 >= 4s
2.3.3.3. 蓝牙鼠标case功耗
- 所用光学传感器资料 
- 测试条件 - ble连接状态下Interval:6*1.25 ms = 7.5ms,lantency:100; 
- Radio TX: 7.2 dBm 
- DCDC;VDDIOM 3.0V;VDDIOW 2.4V 
- VDDIO和VBAT短接 
 
- 芯片功耗 - 芯片功耗(1、硬件不接模块;2、软件关闭所有模块) - / - / - 无操作 - 软关机 - 2.1V - 最大电流 - 1.338mA - 1uA - 2.1V - 平均电流 - 139uA - 1uA - 2.1V - 最小电流 - 30uA - 1uA - 2.6V - 最大电流 - 852uA - 2uA - 2.6V - 平均电流 - 110uA - 2uA - 2.6V - 最小电流 - 33uA - 1uA - 3.0V - 最大电流 - 965uA - 2uA - 3.0V - 平均电流 - 110uA - 2uA - 3.0V - 最小电流 - 33uA - 2uA - 3.3V - 最大电流 - 813uA - 3uA - 3.3V - 平均电流 - 113uA - 3uA - 3.3V - 最小电流 - 35uA - 1uA 
- 整机功耗 - 芯片功耗(1、硬件接上所有模块;2、软件使能所有模块) - / - / - sleep1(无操作256毫秒后) - sleep2(无操作20.48秒后) - 软关机 - 2.1V - 最大电流 - 2.894mA - 1.253mA - 65uA - 2.1V - 平均电流 - 230uA - 140uA - 12uA - 2.1V - 最小电流 - 95uA - 29uA - 1uA - 2.6V - 最大电流 - 1.008mA - 1.062mA - 63u - 2.6V - 平均电流 - 193uA - 125uA - 13u - 2.6V - 最小电流 - 111uA - 31uA - 3uA - 3.0V - 最大电流 - 864uA - 864uA - 55uA - 3.0V - 平均电流 - 190uA - 120uA - 13uA - 3.0V - 最小电流 - 109uA - 37uA - 6uA - 3.3V - 最大电流 - 858uA - 783uA - 53uA - 3.3V - 平均电流 - 185uA - 139uA - 14uA - 3.3V - 最小电流 - 114uA - 39uA - 7uA