我买了 ST 的 STEVAL-MKSBOX1V1 并想编写自己的库来创建一个 BLE 应用程序。
板上的 BLE 模块是 SPBTLE-1S,它安装了 BlueNRG-1,我编写了自己的固件,以便使用 SPI 协议进行通信。
使用引脚重置模块后,我从 MCU 向 BLE 模块发送读取请求,
HAL_GPIO_WritePin(SPI1_CS_GPIO_Port,SPI1_CS_Pin,0);
HAL_SPI_TransmitReceive(&hspi2,tx,rx,5,1);
HAL_GPIO_WritePin(SPI1_CS_GPIO_Port,SPI1_CS_Pin,1);
我发送:
{0x0b,0x00,0x00,0x00,0x00}
我得到:
{0xff,0x08,0x00,0x06,0x00}
所以显然没什么好处,因为第一个字节是 0xff 而不是 0x02(对吗?),但第 4 位(0x06)应该指示读取缓冲区内的数据量。
如果我读取 6 个字节,我会得到
{0x04,0xff,0x03,0x01,0x00,0x01}
根据 AN4494,这正是我在模块复位事件后应该阅读的内容。
那么我的问题是为什么我不断收到 {0xff,0x08,0x00,0x06,0x00} 而不是 {0x02,....} 之类的东西?
BlueNRG1 与 BlueNRG2 有什么不同吗?(很难找到好的文档)
如果有人对这个模块的 SPI 通信有一些经验,我想咨询一下。
提前致谢