可以去淘宝看看,nrf的抓包器
Mars 发布的帖子
-
RE: FR8016如何实时修改广播间隔
你这样改会出现问题的哦,只有你在sleep之后才会修改你的截图函数,而且sleep之后不需要每次都进行修改广播间隔呀,在你调用sleep enable之前改一次就好了,然后再你sleep disenable之后再改回去
,你先要理解我们的sleep的机制
-
RE: FR8008GP进入sleep异常
sleep之后gpio会掉电,要使用pmu开控制io口有对应的
pmu_set_pin_to_PMU
pmu_set_pin_mux
pmu_set_pin_dir
然后对应的中断在pmu_isr
还有疑问请联系我的qq:1063246644 -
RE: 8003怎么使用125K速率实现longrange?
链接:https://pan.baidu.com/s/1HGVarbiKujgCdz679akttA
提取码:ozdr
代码已经写好再网盘获取
打开PA的代码请看截图
-
RE: DSP控制外设和修改DSP的日志口相关疑问
1、dsp能控制哪些外设?
答:主要是DSP 不能访问0xE0000000开头的地址,其他的能控制
2、关于DSP端和ARM端关于外设的控制权是怎么进行的?DSP也可以控制外设,那么双方靠怎么样的机制协调的。双方都可以同时控制?
答:最好DSP和ARM分开单独控制对应的外设,不要两个核都控制同一个外设,这样会浪费空间和同步的时间,完全没有必要3、DSP端的日志串口是否能修改
答:能,需要修改对应的代码
对应详细文档请看我的笔记:https://blog.csdn.net/weixin_43919793/article/details/145499477?sharetype=blogdetail&sharerId=145499477&sharerefer=PC&sharesource=weixin_43919793&spm=1011.2480.3001.8118 -
RE: FR8008GP进入sleep异常
有以下原因
1、不能关闭串口0
2、使用最新版本sdk确保user_entry_after_sleep_imp里面调用了pmu_calibration_start这个函数
attribute((section("ram_code"))) void user_entry_before_sleep_imp(void)
{
pmu_calibration_stop();uart_putc_noint_no_wait(UART0, 's'); co_delay_100us(1); pmu_set_pin_to_PMU(GPIO_PORT_A, (1<<GPIO_BIT_0)); pmu_set_pin_dir(GPIO_PORT_A, (1<<GPIO_BIT_0), GPIO_DIR_IN); pmu_set_pin_pull(GPIO_PORT_A, (1<<GPIO_BIT_0),GPIO_PULL_NONE);
}
/*********************************************************************
-
@fn user_entry_after_sleep_imp
-
@brief After system wakes up from sleep mode, user_entry_after_sleep_imp()
-
will be called, MCU peripherals need to be initialized again,
-
this can be done in user_entry_after_sleep_imp(). MCU peripherals
-
status will not be kept during the sleep.
-
@param None.
-
@return None.
*/
attribute((section("ram_code"))) void user_entry_after_sleep_imp(void)
{
pmu_set_pin_to_CPU(GPIO_PORT_A, (1<<GPIO_BIT_0));system_set_port_mux(GPIO_PORT_A, GPIO_BIT_0, PORTA0_FUNC_UART0_RXD);
system_set_port_mux(GPIO_PORT_A, GPIO_BIT_1, PORTA1_FUNC_UART0_TXD);
uart_init(UART0, 1152);
fr_uart_enableIrq(UART0, Uart_irq_erbfi);/* RC calibration start. Ensure the accuracy of sleep wake time */
pmu_calibration_start(PMU_CALI_SEL_RCLFOSC, LP_RC_CALIB_CNT);uart_putc_noint_no_wait(UART0, 'w');
co_delay_100us(1);NVIC_EnableIRQ(PMU_IRQn);
}
-
-
RE: FR8016HA加密配对相关问题
/从机端*********/
从机的配对机制
#if 0
// 配置为绑定时需要PIN码
gap_security_param_t param =
{
.mitm = true, // use PIN code during bonding
.ble_secure_conn = true, //not enable security encryption
.io_cap = GAP_IO_CAP_DISPLAY_ONLY, //ble device has output ability, will show pin code.
.pair_init_mode = GAP_PAIRING_MODE_WAIT_FOR_REQ,//need bond
.bond_auth = true, //need bond auth
.password = 12345, //set PIN code, it is a dec num between 100000 ~ 999999
};
#endif#if 1
//配置为不需要PIN码
gap_security_param_t param =
{
.mitm = false, // use PIN code during bonding
.ble_secure_conn = false, //not enable security encryption
.io_cap = GAP_IO_CAP_DISPLAY_ONLY, //ble device has output ability, will show pin code.
.pair_init_mode = GAP_PAIRING_MODE_WAIT_FOR_REQ, //need bond
.bond_auth = true, //need bond auth
.password = 0, //set PIN code, it is a dec num between 100000 ~ 999999
};
#endif
//initialize bonding configuration
gap_security_param_init(¶m);
//*****************************************************///主机端*********/
需要在 app_gap_evt_cb(gap_event_t *p_event)里面
加入
case GAP_SEC_EVT_BOND_FAIL: //!< Link bond is failed
co_printf("GAP_SEC_EVT_BOND_FAIL:0x%02x\r\n",GAP_SEC_EVT_BOND_FAIL);
break;
case GAP_SEC_EVT_BOND_SUCCESS: //!< Link bond is successful
co_printf("GAP_SEC_EVT_BOND_SUCCESS:0x%02x\r\n",GAP_SEC_EVT_BOND_SUCCESS);
break;
case GAP_SEC_EVT_PIN_CODE_REQ: //!< Link bond request pin code inpu
gap_security_send_pairing_password(0,12345);
co_printf("GAP_SEC_EVT_PIN_CODE_REQ:0x%02x\r\n",GAP_SEC_EVT_PIN_CODE_REQ);
break;