请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
器件型号:AFE4960 工具与软件:
您好!
我正致力于将 AFE4960集成到我们的设计中、但是会遇到 SPI 通信和 EEG 配置问题。 以下是到目前为止我所尝试的内容的详细信息:
遵循的步骤:
SPI_REG_READ
在CONFIG0
寄存器中使能:
根据数据表(第7.5节、SPI 编程)、我将SPI_REG_READ
CONFIG0
寄存器中的位设置为1
使用以下 SPI 事务:
txBuf[0] = regAddress;
txBuf[1] = (data >> 16) & 0xFF;
txBuf[2] = (data >> 8) & 0xFF;
txBuf[3] = data & 0xFF;
HAL_GPIO_WritePin(AFE_CS_GPIO_Port, AFE_CS_Pin, GPIO_PIN_RESET);
//CS low
HAL_SPI_Transmit(&hspi1, txBuf, 4, 100);
//Transmit 4 bytes
HAL_GPIO_WritePin(AFE_CS_GPIO_Port, AFE_CS_Pin, GPIO_PIN_SET); // CS high
- 读取
DESIGN_ID
寄存器0x28h
():
我尝试了DESIGN_ID
通过发送地址、然后使用以下方法读取接下来的3个字节来读取寄存器:
选项1: 全双工交换
HAL_GPIO_WritePin(AFE_CS_GPIO_Port, AFE_CS_Pin, GPIO_PIN_RESET); // CS low
HAL_SPI_Transmit(&hspi1, txBuf, 4, 100);
HAL_SPI_Receive(&hspi1, rxBuf, 4, 100);
HAL_GPIO_WritePin(AFE_CS_GPIO_Port, AFE_CS_Pin, GPIO_PIN_SET); // CS high
选项2: 逐字节通信
HAL_GPIO_WritePin(AFE_CS_GPIO_Port, AFE_CS_Pin, GPIO_PIN_RESET); // CS low
HAL_SPI_Transmit(&hspi1, &txBuf[0], 1, 100);
HAL_SPI_Receive(&hspi1, &rxBuf[0], 1, 100);
HAL_SPI_Receive(&hspi1, &rxBuf[1], 1, 100);
HAL_SPI_Receive(&hspi1, &rxBuf[2], 1, 100);
HAL_GPIO_WritePin(AFE_CS_GPIO_Port, AFE_CS_Pin, GPIO_PIN_SET); // CS high
但是、我在响应中未收到有效数据。
数据表参考:初始化序列
数据表(第8.2.2.1节)提到了以下初始化步骤:
- 上电后等待1ms。
- 应用复位(软件或硬件)。
- 对所有寄存器进行编程
1Dh
、但必须最后写入的寄存器除外。 - 仅在对寄存器进行编程后启用 MCU 中断服务例程。
- 写入 register
1Dh
to setTIMER_ENABLE
和RAC_COUNTER_ENABLE
bits to1
、这将启动计时引擎并初始化 FIFO。
问题:
-
寄存器读取过程:
我读取DESIGN_ID
寄存器的方法是否正确? 如果未成功、从 AFE4960中读取寄存器的正确顺序是什么? -
EEG 采集的配置:
- 应如何配置 AFE4960以采集 EEG 数据(例如、使用内部差分、例如
S1-S3
和S2-S3
有偏置)? - 此模式是否需要任何特定设置或寄存器配置?
- 应如何配置 AFE4960以采集 EEG 数据(例如、使用内部差分、例如
我遵循的是 可穿戴 EEG 参考设计 硬件实现的详细信息。 如果可能、我希望获得任何具体示例或指导以帮助我继续。
提前感谢您的帮助!