首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >BlueNRG错误标头

BlueNRG错误标头
EN

Stack Overflow用户
提问于 2021-01-12 16:48:54
回答 1查看 156关注 0票数 0

我购买了ST的STEVAL-MKSBOX1V1,并想编写自己的库来创建一个BLE应用程序。

机上的BLE模块是SPBTLE-1S,它安装了BlueNRG-1,我编写了自己的固件,以便使用SPI协议进行通信。

在用引脚重置模块后,我向BLE模块发送一个从MCU读取的请求,

代码语言:javascript
复制
 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,0x00}

我得到:

{0xff,0x08,0x00,0x06,0x00}

所以显然没有什么好的,因为第一个字节是0xff而不是0x02 (对吗?),但是第4位(0x06)应该表示读取缓冲区内的数据量。

如果我读了6个字节

{0x04,0xff,0x03,0x010x00,0x01}

而根据AN4494,这正是我应该阅读后,重置事件的模块。

那么我的问题是为什么我总是得到{0x08,0x00,0x06,0x00}而不是{0x02,.}之类的东西?

有什么与BlueNRG1有关的与BlueNRG2不同的地方吗?(很难找到好的文档)

如果有人在SPI与这个模块的通信方面有一些经验,我想有一点咨询。

提前感谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-04-19 07:32:30

{0xff,.}将是正确的。

AN4494用于BlueNRG,MISO的5字节SPI头为:{Ready,WBufLen,0x00,RBufLen,0x00}。在BlueNRG-1和BlueNRG-2中,SPI报头已被修改为:{0xff、CmdLen0、CmdLen1、DataLen0、DataLen1},以便在单个SPI事务中支持长度超过127个字节的ACI数据包。头中的第一个字节固定为0xff。

不幸的是,目前没有描述修改的文件。您可能需要参考DTM SPI示例项目来了解细节。

在您的事务中,如果执行Read命令并继续对6字节数据读取MISO:

  • {0xff,0x08,0x00,0x06,0x00},{0x04,0xff,0x03,0x01,0x00,0x01}

这是一个ACI蓝色初始化事件,表示固件已正确启动。可分析的:

read可用

  • Header
    • 0x0006: 6字节(数据)

ACI_BLUE_INITIALIZED_EVENT

  • 0x01:

  • Data
  • 0x04: HCI事件数据包
  • 0xFF: ACI (特定供应商)事件
  • 0x03:参数长度

H 1210x100x00:Event= 0x0001,即事件原因代码= 1,这意味着固件启动了properly

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65688284

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档