6626常见问题

徽信管理团队 · 1093次点击 · 9个月前

6626常问问题

  • 6626还支持gpio引脚任意映射吗

不支持任意映射,这个需要按照我们的pinmux映射表来进行配置,每个pin脚可以映射为哪些外设脚,除了在datasheet上可以看到之外,还可以在drv_pinmux.h中可以找到。

  • gpio13怎么配置成复位脚

drv_pmu_pin_io13_reset_mode_enable

  • 怎么提高代码的执行速率

1、倍频:
 drv_pmu_xtal32m_x2_startup 
 drv_rcc_clock_set (RCC_CLK_CPU, 1))
 
2、keil中不再使用 MicroLIB 

3、关键重复性的代码放在ram中

4、使用更高优化等级

  • 怎么降低功耗

1、关键重复性的代码放在ram中

  • 默认支持的广播个数在哪看

1、以simple工程为例,默认是只有一个广播的,这个配置是在:
Projects_OM6626\hal\device\om6626\rom_lib\current\config\autoconf_preset_ble_1peripheral.h中有一个宏进行控制
#define CONFIG_LE_HOST_ADV_SET_NUM 1

2、如果是ble_app_multilink工程的话,默认是可以开4个广播,这个配置在:
Projects_OM6626\hal\device\om6626\rom_lib\current\config\autoconf_preset_ble_full.h中有一个宏进行控制
#define CONFIG_LE_HOST_ADV_SET_NUM 4

其实不同工程加载的配置可以在kei→魔术棒→Asm→Define中看到对应的宏配置,一般:
单连接是CONFIG_LIB_PRESET_BLE_1PERIPHERAL		
多连接是CONFIG_LIB_PRESET_BLE_FULL

通过控制上面的宏,在
Projects_OM6626\hal\device\include\autoconf_preset.h中决定加载哪个.h文件,目前有以下几部分:
    1、CONFIG_LIB_PRESET_NO_BLE
    2、CONFIG_LIB_PRESET_BLE_FULL
    3、CONFIG_LIB_PRESET_BLE_1PERIPHERAL		比如simple工程用的就是这个,这个就是只支持1个广播
    4、CONFIG_LIB_PRESET_BLE_MESH
    5、CONFIG_PROJECT_ROM_BOOT
上面5个会选择其中一个进行加载。

  • 6626中simple工程能同时开启多个广播吗?

这个不能,多广播只能在主从例程里面,simple工程属于单从例程,这个只能有一个广播,这个设置的位置是在
autoconf_preset_ble_1peripheral.h里面设置的,可以看到#define CONFIG_LE_HOST_ADV_SET_NUM 1是1,这里
即使改为 2,也是不能设置多个广播的,设置第二个广播会显示未知原因(reason = 5)关闭第二个广播。

  • 不同工程的shell指令是通用的吗

目前来看不同的shell指令使用的都是下面路径下的.c文件:
Projects_OM6626\components\shell

  • 6626在进行dfu升级的时候,nrf软件找不到升级按钮

这个是由于 6626的dfu服务改变了uuid所致,可以自己修改uuid如下:

void service_onmicro_dfu_init(void)
{    
    static const uint8_t serv_dfu[2] = {0x59, 0xFE};
    static const uint8_t char1[16] = {0x50, 0xEA, 0xDA, 0x30, 0x88, 0x83, 0xB8, 0x9F, 0x60, 0x4F, 0x15, 0xF3, 0x01, 0x00, 0xC9, 0x8E};
    static const uint8_t char2[16] = {0x50, 0xEA, 0xDA, 0x30, 0x88, 0x83, 0xB8, 0x9F, 0x60, 0x4F, 0x15, 0xF3, 0x02, 0x00, 0xC9, 0x8E};
    static const uint8_t char3[2] = {0x03, 0x00};

    static const ob_gatt_item_t atts_dfu[] = {
        { ob_att_char_def, OB_UUID_16BIT,  OB_ATT_PROP_READ },
        { char1,           OB_UUID_128BIT, OB_ATT_PROP_NTF | OB_ATT_PROP_WRITE },
        { ob_att_cccd_def, OB_UUID_16BIT,  OB_ATT_PROP_READ | OB_ATT_PROP_WRITE },
        { ob_att_char_def, OB_UUID_16BIT,  OB_ATT_PROP_READ },
        { char2,           OB_UUID_128BIT, OB_ATT_PROP_WRITE_CMD },
        { ob_att_char_def, OB_UUID_16BIT,  OB_ATT_PROP_READ },
        { char3,           OB_UUID_16BIT, OB_ATT_PROP_READ | OB_ATT_PROP_WRITE | OB_ATT_PROP_NTF },
        { ob_att_cccd_def, OB_UUID_16BIT,  OB_ATT_PROP_READ | OB_ATT_PROP_WRITE },
    };
    static const ob_gatt_serv_t att_serv_dfu = {
        serv_dfu, OB_UUID_16BIT,
        sizeof(atts_dfu) / sizeof(atts_dfu[0]), atts_dfu
    };
    ob_gatts_add_service(&att_serv_dfu, &m_start_handle);
}

  • 6626频偏测试函数在哪?

/**
 * @brief Change xtal 32m params
 *
 * @param[in] load_capacitance  load capacitance, range:0~63, default:32, step:0.379pF(<20ppm), max:23.877pF
 *
 * @note load_capacitance will effect xtal 32m precision and frequency offset.
 *
 * @return None
 **/
void drv_pmu_xtal32m_change_param(int load_capacitance)
{
    if(load_capacitance >= 0)
    {
        REGSW(&OM_PMU->CLK_CTRL_2, MASK_STEP(PMU_CLK_CTRL_2_CT_XTAL32M, load_capacitance), false/*should_update*/, 10/*delay_us*/);
    }
}

  • 6626事件id会有针对性吗,还是要自己做逻辑判断?

    比如,在连接的时候,会有OB_GAP_EVT_CONNECTED事件,这个是每个事件回调都会进入,所以只要你有
    相关if的判断,那么就会执行该逻辑,所以,如何区分服务属性,只能通过句柄的方式自己判断,底层
    不会帮我们做这个判断的。
    eg:
    if (req->att_hdl == m_tspp_start_handle + IDX_TSPP_NOTIFY_DESC) 
    由于每个服务的m_tspp_start_handle这个都是静态的,所以每个服务的这个起始句柄也是不一样的,再
    搭配上每个服务独有的特性列表,即可找到蓝牙通信对应的服务属性。

  • 6626中的rom外设重写是什么意思

这个实际上就是注释宏,然后重编译:
    1、在 hal/device/om6626/rom_lib/current/config/RTE_om6626.h中,设置宏 RTE_{XXX}_USING_ROM_SYMBOL 为 0 

    2、添加一个新驱动到工程中,并重新写这个驱动

  • 6626的adc精度是多少?
    871f45bb700c4c35c5bf6cc640d1ff82.pngimage.png


    image.png

    image.png
    a0dbc43338fe43457229dfb4c4f2ee4a.png
    7e045a46828eb03ded84747decb12715.png

  • 6626发射功率函数是哪个?

drv_rf_tx_power_set(),这个在drv_radio.c文件内

  • 6626广播参数中有一个tx_pwr,这个可以设置广播发射功率吗硬件没有实现这个功能,我们要设置这个发射功率,还需要使用drv_rf_tx_power_set()进行设置。


  • 6626怎么更新连接参数

我们可以在app_adv.c中的app_adv_event_cb函数内的evt_id == OB_GAP_EVT_CONNECTED分支内发起连接参数更新请求。

注:一般蓝牙连接之前(比如广播,扫描,连接,配对等 ),以及断连之后的蓝牙接口操作都在omble_gap.h中。连接之后的服务通信接口函数都在omble_gatt.h(从机接口)中,如果是做主机则在app_gatt_client.c文件内

  • 广播,连接等这些单位是多少?

广播讲个单位是0.625ms,连接间隔的单位是1.25ms,从设备延时的单位是连接间隔的个数,超时时间的单位是 10ms


6626常问问题-202402212945.pdf
被收藏 2  ∙  1 赞  
加入收藏
点赞
3 回复  
善言善语 (您需要 登录 后才能回复 没有账号 ?)

请先登录网站