黄山派SF32LB52-ULP开发板HCI Reset 无响应
背景
将黄山派作为标准hci设备,验证一下hci 通道。
使用 sifli-sdk/example/bt/HCI_over_uart 下载后开发板无法正常启动,具体原因没查看
将官方HCI_over_uart/src/main.c直接覆盖立创提供的demo,覆盖proj.conf 板子可以正常启动。hci 和msh串口共用了,修改代码在uart收到任意数据都给btc发hci reset,仍然收不到hci reset的响应。基于立创提供的demo( lckfb-hspi-ulp_example/uart )进行修改得到下面工程,在uart收到任意数据,都下发hci reset。
现象
下发hci reset,没有收到hci reset的响应
所有源码
hci.zip (6.0 KB)
hci.diff
diff --git a/example/bt/HCI_over_uart/src/main.c b/example/bt/HCI_over_uart/src/main.c
index 6ab187da..9b2cc90f 100644
--- a/example/bt/HCI_over_uart/src/main.c
+++ b/example/bt/HCI_over_uart/src/main.c
@@ -127,6 +127,7 @@ void ble_wvt_forward_to_mb_entry(void *param)
//ble_wvt_uart_init();
rt_uint32_t size;
uint8_t *ptr;
+ uint8_t *ptr0;
int written, offset = 0;
rt_size_t read_len;
while (1)
@@ -136,6 +137,7 @@ void ble_wvt_forward_to_mb_entry(void *param)
if (!size)
continue;
ptr = rt_malloc(size);
+ ptr0 = ptr;
RT_ASSERT(ptr);
// Read from uart
@@ -148,6 +150,10 @@ void ble_wvt_forward_to_mb_entry(void *param)
if (read_len < size)
size = read_len;
+ uint8_t reset[] = {0x01, 0x03, 0x0C, 0x00};
+ ptr = reset;
+ size = sizeof(reset);
+
rt_hexdump("hci_tob", 32, ptr, size);
// Write to mailbox
HAL_DBG_print_data((char *)ptr, 0, size);
@@ -166,7 +172,7 @@ void ble_wvt_forward_to_mb_entry(void *param)
}
offset = 0;
- rt_free(ptr);
+ rt_free(ptr0);
}
}


