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