主题中讨论的其他器件: ADS1299
大家好!
我目前正在研究 BCI 应用、该应用使用 ADS1299EEGFE-PDK 来获取 EEG 信号。 在当前设置中、我使用 Arduino UNO 通过 SPI 与子卡连接、而 MMB0仅用作电源。
GPIO 引脚按如下方式连接(子卡上的跳线保留默认设置)
------------------------------------------
Arduino UNO <--> ADS1299
- SCLK [引脚13] <--> CLK [J3.3]
- MISO [引脚12] <--> DOUT [J3.13]
- MOSI [引脚11] <--> DIN [J3.11]
- SS [引脚10] <--> CS [J3.7]
- DRDY [引脚9] <--> DRDY [J3.15]
- GND [引脚14] <--> GND [J3.4]
------------------------------------------
我使用的 sketch 是 Arduino 库 ADS1299中的一个示例、应读取和写入一些寄存器:
#include
ADS1299 ADS;
//Arduino Uno -引脚分配;需要将 ICSP 用于更高的 AVR 板
// SCK = 13
// MISO [DOUT]= 12
// MOSI [DIN]= 11
// CS = 10;
// DRDY = 9;
// 0x###-> Arduino 十六进制格式
// 0b##-> Arduino 二进制格式
布尔值 IDReturned = false;
布尔 staredLogging = false;
void setup(){
Serial.begin(115200);
Serial.printn();Serial.tln
("ADS1299-bridge has started!");
ADS.setup(9、10);//(DRDY 引脚、CS 引脚);
延迟(10); //延迟以确保连接
ads.reset();
}
void loop(){
if (deviceIDReturned = false){
ads.getDeviceID();//Funciton 返回器件 ID
//打印虚线以分隔串行打印段
serial.println ("------------------------------------------------ ");
//读取地址0x00处的 ADS1299寄存器(有关 SPI 命令的更多信息、请参阅数据表第35页)
ADS.RREG (0x00);
serial.println ("------------------------------------------------ ");
//打印所有寄存器... 从地址0x00开始读取0x17地址(这些数字可被二进制或整数值替换)
ADS.RREG (0x00、0x17);
serial.println ("------------------------------------------------ ");
//写入寄存器命令(有关 WREG 的更多信息、请参阅数据表第38页)
ads.WREG (CONFIG1、0b11010110);
serial.println ("------------------------------------------------ ");
//重复打印所有寄存器以验证 WREG 是否更改了 CONFIG1寄存器
ADS.RREG (0x00、0x17);
serial.println ("------------------------------------------------ ");
//开始数据转换命令
ads.start();//必须在连续读取数据之前启动
deviceIDReturned = true;
}
//仅在
while (millis ()<10000){的第一个10秒内将数据打印到串行控制台
if (startedLogging =false){
serial.print ("Millis:");//这是为了查看数据开始打印的时间以检查计时精度(默认采样率为250样本/秒)
serial.println (毫秒());
startedLogging = true;
}
//将连续读取数据(RDATAC)打印到 Ardiono 串行监视器...
//此方法的时间还不是很完美。 一些数据正在丢失
//我认为这是因为串行监视器花费了太多时间打印数据,并且没有准备好接收数据包
ads.updateData();
}
它在串行监视器中返回以下输出:
ADS1299桥接器已启动!
0
------------------------
ID、0x00、0x00、0、0、 0、0、0、0、0、 0
------------------------
ID、0x00、0x00、0、0、 0、0、0、0、0、 0
CONFIG1、0x01、0x00、0、0、 0、0、0、0、0、 0
CONFIG2、0x02、0x00、0、0、 0、0、0、0、0、 0
CONFIG3、0x03、0x00、0、0、 0、0、0、0、0、 0
LOFF、0x04、0x00、0、0、 0、0、0、0、0、 0
CH1SET、0x05、0x00、0、0、 0、0、0、0、0、 0
CH2SET、0x06、0x00、0、0、 0、0、0、0、0、 0
CH3SET、0x07、0x00、0、0、 0、0、0、0、0、 0
CH4SET、0x08、0x00、0、0、 0、0、0、0、0、 0
CH5SET、0x09、0x00、0、0、 0、0、0、0、0、 0
CH6SET、0x0A、0x00、0、0、 0、0、0、0、0、 0
CH7SET、0x0B、0x00、0、0、 0、0、0、0、0、 0
CH8SET、0x0C、0x00、0、0、 0、0、0、0、0、 0
BIAS_SENSP、0x0D、0x00、0、0、 0、0、0、0、0、 0
BIAS_SENSN、0x0E、0x00、0、0、 0、0、0、0、0、 0
LOFF_SENSP、0x0F、0x00、0、0、 0、0、0、0、0、 0
LOFF_SENSN、0x10、0x00、0、0、 0、0、0、0、0、 0
LOFF_FLIP、0x11、0x00、0、0、 0、0、0、0、0、 0
LOFF_STATP、0x12、0x00、0、0、 0、0、0、0、0、 0
LOFF_STATN、0x13、0x00、0、0、 0、0、0、0、0、 0
GPIO、0x14、0x00、0、0、 0、0、0、0、0、 0
MIPSC1、0x15、0x00、0、0、 0、0、0、0、0、 0
MIPSC2、0x16、0x00、0、0、 0、0、0、0、0、 0
CONFIG4、0x17、0x00、0、0、 0、0、0、0、0、 0
------------------------
修改了寄存器0x1。
------------------------
ID、0x00、0x00、0、0、 0、0、0、0、0、 0
CONFIG1、0x01、0x00、0、0、 0、0、0、0、0、 0
CONFIG2、0x02、0x00、0、0、 0、0、0、0、0、 0
CONFIG3、0x03、0x00、0、0、 0、0、0、0、0、 0
LOFF、0x04、0x00、0、0、 0、0、0、0、0、 0
CH1SET、0x05、0x00、0、0、 0、0、0、0、0、 0
CH2SET、0x06、0x00、0、0、 0、0、0、0、0、 0
CH3SET、0x07、0x00、0、0、 0、0、0、0、0、 0
CH4SET、0x08、0x00、0、0、 0、0、0、0、0、 0
CH5SET、0x09、0x00、0、0、 0、0、0、0、0、 0
CH6SET、0x0A、0x00、0、0、 0、0、0、0、0、 0
CH7SET、0x0B、0x00、0、0、 0、0、0、0、0、 0
CH8SET、0x0C、0x00、0、0、 0、0、0、0、0、 0
BIAS_SENSP、0x0D、0x00、0、0、 0、0、0、0、0、 0
BIAS_SENSN、0x0E、0x00、0、0、 0、0、0、0、0、 0
LOFF_SENSP、0x0F、0x00、0、0、 0、0、0、0、0、 0
LOFF_SENSN、0x10、0x00、0、0、 0、0、0、0、0、 0
LOFF_FLIP、0x11、0x00、0、0、 0、0、0、0、0、 0
LOFF_STATP、0x12、0x00、0、0、 0、0、0、0、0、 0
LOFF_STATN、0x13、0x00、0、0、 0、0、0、0、0、 0
GPIO、0x14、0x00、0、0、 0、0、0、0、0、 0
MIPSC1、0x15、0x00、0、0、 0、0、0、0、0、 0
MIPSC2、0x16、0x00、0、0、 0、0、0、0、0、 0
CONFIG4、0x17、0x00、0、0、 0、0、0、0、0、 0
------------------------
毫秒:224
遗憾的是、通过 SPI 检索到的数据在所有寄存器中都是零、在完成我在本主题中可以找到的所有线程后、似乎没有任何帮助。 目前、我无法访问逻辑分析仪或探测设备、我只是希望错误是由我进行的硬件连接中的新错误引起的。
如果您能给我任何建议、我将不胜感激!
L.G.




