@zr FR801HA 和FR801HB
ccc 发布的帖子
-
PD5高低电平检测发布在 FR801xH
attribute((section("ram_code"))) void pmu_gpio_isr_ram(void)
{
// 读取当前GPIO状态和历史状态
uint32_t current_gpio = ool_read32(PMU_REG_GPIOD_V);
uint32_t last_gpio = ool_read32(PMU_REG_PORTD_LAST);// 检测哪些引脚发生了变化 uint32_t changed_pins = current_gpio ^ last_gpio; // 检查PD5(第5位)是否发生变化 if (changed_pins & (1 << 5)) { // 获取PD5当前状态 uint8_t pd5_current_state = (current_gpio >> 5) & 0x01; uint8_t pd5_last_state = (last_gpio >> 5) & 0x01; uint8_t fam[1]={1}; // 检测持续高电平(电平触发模式) if (pd5_current_state == 1) { co_printf("high-level trigger\r\n"); uart_put_data_noint(UART0,fam,1); gap_security_param_t param = { .mitm = false, // dont use PIN code during bonding .ble_secure_conn = false, //not enable security encryption .io_cap = GAP_IO_CAP_NO_INPUT_NO_OUTPUT, //ble device has neither output nor input ability, .pair_init_mode = GAP_PAIRING_MODE_WAIT_FOR_REQ, //need bond .bond_auth = true, //need bond auth .password = 0, }; gap_security_param_init(¶m); os_timer_start(&ker_timer, 60000, 0); // 60s延迟 } } // 更新历史记录 ool_write32(PMU_REG_PORTD_LAST, current_gpio);}我的这个检测pd高低电平的有什么问题吗,在HA的测试板上能正常检测,但是换成HB的芯片加了按钮之后,上电就一直触发高电平事件,初始化配置是这样的

-
mac地址恢复不到eFuse里面的值发布在 FR801xH
程序会影响efuse里面的值吗,我的开发板重新程序烧写之后初始mac地址不再是之前的唯一mac了,没有被重置回efuse中的值,芯片是FR801HB
-
RE: IO问题发布在 FR801xH
型号是FR801HB,
system_set_port_mux(GPIO_PORT_D, GPIO_BIT_6, PORTD6_FUNC_D6);
gpio_set_dir(GPIO_PD6, GPIO_BIT_6, GPIO_DIR_OUT);
gpio_set_pin_value(GPIO_PORT_D, GPIO_BIT_6,1);,设置为gpio模式也不能进行拉高拉低 -
IO问题发布在 FR801xH
gpio_set_dir(GPIO_PD6, GPIO_BIT_6, GPIO_DIR_OUT);
gpio_set_pin_value(GPIO_PORT_D, GPIO_BIT_6,1);为什么PD6一直拉不高
-
RE: FR801HB白名单gap_set_wl设置不成功是什么原因发布在 FR801xH
@mars 可能是我没说明白,就是app通过权限去获取手机蓝牙MAC,然后传给mcu,mcu再传给801,在801中直接将手机蓝牙的MAC写入白名单地址,达到过滤效果
-
RE: FR801HB白名单gap_set_wl设置不成功是什么原因发布在 FR801xH
@mars 这个也看过,但是这个好像是设备绑定之后自动把地址写入白名单,好像没有拦截策略,不可以直接用gap_set_wl去过滤吗大佬
-
FR801HB白名单gap_set_wl设置不成功是什么原因发布在 FR801xH
我想通过白名单简单粗暴的过滤筛选可连接的设备,但是设置过地址后貌似gap_set_wl地址没成功,本地打印了一下gap_set_wl中的参数地址也是正确的,但是又看不到实际写进去没有,有无大佬答疑解惑一下。附上主要配置代码
gap_mac_addr_t default_mac;
uint8_t mac_bytes[6] = {0xFC, 0x84, 0x17, 0x31, 0xC7, 0xB0};
//uint8_t mac_bytes[6] = {0xB0, 0xC7, 0x31, 0x17, 0x84, 0xFC};
memcpy(default_mac.addr.addr, mac_bytes, 6);
default_mac.addr_type = 0; // Public address
gap_set_wl(&default_mac, 1);
gap_adv_param_t adv_param;
adv_param.adv_mode = GAP_ADV_MODE_UNDIRECT;
adv_param.disc_mode = GAP_ADV_DISC_MODE_GEN_DISC;
adv_param.adv_addr_type = GAP_ADDR_TYPE_PUBLIC;
adv_param.adv_chnl_map = GAP_ADV_CHAN_ALL;
adv_param.adv_filt_policy = GAP_ADV_ALLOW_SCAN_ANY_CON_WLST;
adv_param.adv_intv_min = 160; // 200ms
adv_param.adv_intv_max = 240; // 300ms
gap_set_advertising_param(&adv_param);
// Set broadcast data
gap_set_advertising_data(adv_data, sizeof(adv_data));
gap_set_advertising_rsp_data(scan_rsp_data, sizeof(scan_rsp_data));
//Start broadcasting
co_printf("Start broadcasting..\r\n");
gap_start_advertising(0);
这个修改mac地址后复位还是之前的mac地址,有没有什么具体的方法直接完全修改mac
还是不行,下载的官方的历程,用的板子的官方的FR801HA,只加截图里面的代码,拉不高还是,可以帮忙验证下吗,项目比较急!谢谢!
,A1A0可以拉高
切换这个模式以后, 需要自己进行分包发送吗?有没有uartOTA的流程介绍