0

我正在开发一个开发 ble 通信的项目,但我在初始化和理解 ble 的返回帧时遇到了一些麻烦。

降低cs,测试头(0x0A,0x00,0x00,0x00,0x00)并在hci_reset(0x01,0x03,0x0C,0x00)之后直接发送HAL_SPI_TransmitReceive,我想从ble读取返回值。

因此再次降低 cs,测试标头 (0x0B,0x00,0x00,0x00,0x00) 并使用 HAL_SPI_TransmitReceive 发送虚拟数据。我得到这个帧:0x02、0x00、0x00、0x00、0x00、0x00、0x00、0x00、0x00、0x00。

但从我目前所了解的情况来看,我应该得到类似:0x04,0x0E,0x04,0x01,0x03,0x0C,0x00。

有人可以指出我错在哪里吗?

4

1 回答 1

0

几乎解决了。

实际上,我更改了代码中的一些点,最后从 ble 中检索到与我等待的数据相对应的数据。

我之前做的是在收到 ble 的正确标题后关闭框架。然后将标头发送到写入命令,然后命令。

这就是我应用的程序: 信息通信 spi(写入): • 打开 CS ◦ 在 TransmitReceive 中发送 header_master[5]={0x0a,0,0,0,0} ▪ 如果 header_slave[0]=0x02 和 header_slave[1] >0 • 发送命令 • 关闭 CS ▪ 否则 • 关闭 CS • 转到打开 CS

信息通信 spi(读取): • 等待 exti from ble ◦ 打开 CS ▪ 在 TransmitReceive 中发送 header_master[5]={0x0b,0,0,0,0} • 如果 header_slave[0]=0x02 和 header_slave[3]> 0 ◦ send (header_slave[3]) dummies ◦ close CS • else ◦ close CS ◦ goto open CS

希望可以帮助一些人。

现在我面临另一个问题。发送命令后我没有收到中断,所以我进行轮询以捕获我需要的帧。有什么解决办法吗?

于 2020-07-08T15:02:10.593 回答