返回使用指南

ADS1299 寄存器配置参考

面向二次开发者的 CONFIG、通道、BIAS 与测试信号配置说明。

版本:v1.0
适用硬件:BCIKit AFE8 外部时钟菊花链板
默认 CLK:2.048 MHz
默认 SPI:4 MHz,Mode 1,MSB first

1. SPI 命令

命令值用途
WAKEUP0x02退出 standby
STANDBY0x04进入 standby
RESET0x06复位寄存器和数字滤波器
START0x08开始或同步转换
STOP0x0A停止转换
RDATAC0x10连续输出数据
SDATAC0x11停止连续输出,RREG 前必须发送
RDATA0x12命令式读取一次数据
RREG`0x20address`
WREG`0x40address`

RREG/WREG 第二字节为 count - 1。多字节事务期间 CS 必须一直为低。

uint8_t rreg_cmd = 0x20u | (address & 0x1Fu);
uint8_t wreg_cmd = 0x40u | (address & 0x1Fu);
uint8_t count_m1 = count - 1u;

2. 寄存器地址

地址名称主要用途
0x00ID器件识别,ADS1299 通常为 0x3E
0x01CONFIG1菊花链、时钟输出、采样率
0x02CONFIG2内部测试信号
0x03CONFIG3内部参考、BIAS
0x04LOFFlead-off 幅度、频率、阈值
0x05..0x0CCH1SET..CH8SET通道掉电、增益、SRB2、MUX
0x0DBIAS_SENSPP 端参与 BIAS 的通道
0x0EBIAS_SENSNN 端参与 BIAS 的通道
0x0FLOFF_SENSPP 端 lead-off 使能
0x10LOFF_SENSNN 端 lead-off 使能
0x11LOFF_FLIPlead-off 电流方向翻转
0x12LOFF_STATPP 端 lead-off 状态,只读
0x13LOFF_STATNN 端 lead-off 状态,只读
0x14GPIOGPIO 方向和数据
0x15MISC1SRB1 路由
0x16MISC2保留,写 0x00
0x17CONFIG4连续/单次转换、lead-off comparator

3. CONFIG1 采样率

当前硬件统一使用 ADS1299 daisy mode,因此 DAISY_EN=0。

SPSDR bitsCONFIG1
160000000x90
80000010x91
40000100x92
20000110x93
10001000x94
5001010x95
2501100x96

首版产品只承诺 250 和 500 SPS。不要使用 DR=111。

若未来单独设计非菊花链主控板,并需要 multiple readback,可将 bit6 置 1,即在表中数值基础上加 0x40。

4. CHnSET 编码

bit7    PD: 1=channel power-down
bit6:4  GAIN
bit3    SRB2: 1=connect channel negative input to SRB2
bit2:0  MUX

4.1 增益编码

gainGAIN bitsNormal differentialNormal + SRB2
10000x000x08
20010x100x18
40100x200x28
60110x300x38
81000x400x48
121010x500x58
241100x600x68

4.2 常用 MUX

MUXbitsgain 24 示例
Normal electrode input0000x60
Input shorted0010x61
BIAS measurement0100x62
Internal test signal1010x65

禁用通道时优先使用 0x81:channel power-down、gain 1、input shorted。

5. 推荐寄存器配置

所有配置都应在 SDATAC 后写入,并在启动采集前读回验证。

5.1 eeg_srb2_250_gain24

首版默认 EEG 公共参考模式。

RegisterValue说明
CONFIG10x96daisy mode,250 SPS
CONFIG20xC0外部输入,不启用内部测试
CONFIG30xEC内部参考、内部 BIASREF、BIAS buffer 开启
LOFF0x00lead-off 初始关闭
CH1SET..CH8SET0x68gain 24,normal,SRB2
BIAS_SENSP0xFFP 端参与 BIAS 派生的起始配置
BIAS_SENSN0x00公共参考 N 端不重复参与
LOFF_SENSP/N0x00/0x00lead-off 关闭
LOFF_FLIP0x00不翻转
GPIO0x0FGPIO 作为输入,不由固件驱动
MISC10x00SRB1 关闭
MISC20x00保留
CONFIG40x00continuous,lead-off comparator disabled

在真实电极测试中,如果某通道长期饱和或脱落,应将对应位从 BIAS_SENSP 清除。

5.2 eeg_srb2_500_gain24

与上一配置相同,仅:

CONFIG1 = 0x95

5.3 differential_250_gain24

RegisterValue说明
CONFIG10x96250 SPS
CONFIG20xC0外部输入
CONFIG30xEC参考和 BIAS 开启
CH1SET..CH8SET0x60gain 24,全差分
BIAS_SENSP0xFFP 端参与 BIAS,需实测调整
BIAS_SENSN0xFFN 端参与 BIAS,需实测调整
MISC10x00SRB1 关闭
CONFIG40x00lead-off 关闭

5.4 eeg_srb1_250_gain24

RegisterValue
CONFIG10x96
CONFIG20xC0
CONFIG30xEC
CH1SET..CH8SET0x60
MISC10x20
CONFIG40x00

SRB1 和 SRB2 不应在默认配置中同时启用。

5.5 internal_test_250_gain24

RegisterValue说明
CONFIG10x96250 SPS
CONFIG20xD0internal test,基础幅度,fCLK/2^21
CONFIG30xE0内部参考开启,BIAS 关闭
CH1SET..CH8SET0x65gain 24,test MUX
BIAS_SENSP/N0x00/0x00不参与 BIAS
MISC10x00SRB1 关闭
CONFIG40x00continuous

2.048 MHz 时:

test frequency = 2.048 MHz / 2^21 = 0.9765625 Hz
test amplitude = 4.5 V / 2400 ~= 1.875 mV
ideal gain-24 raw amplitude ~= 83886 counts

将 CONFIG2 改为 0xD1 可选择约 1.953125 Hz;改为 0xD4 可选择约两倍幅度。

5.6 input_short_250_gain24

RegisterValue
CONFIG10x96
CONFIG20xC0
CONFIG30xE0
CH1SET..CH8SET0x61
BIAS_SENSP/N0x00/0x00
MISC10x00
CONFIG40x00

6. Lead-off 开发策略

首版初始化必须默认关闭 lead-off。基础采集稳定后再增加:

  1. 先配置 LOFF 的电流、频率和阈值。
  2. 写 LOFF_SENSP/LOFF_SENSN 选择通道。
  3. 设置 CONFIG4 bit1 = 1,启用 comparator。
  4. 从每个 27 字节板块状态字读取 LOFF_STATP/N。

SRB2 公共参考模式下,不要对同一个公共参考重复启用多个等价电流源。参考电极 lead-off 应单独设计和验证。

7. 读回验证

不要直接逐字节比较包含只读状态位的寄存器。为每个寄存器定义 writable mask:

if ((readback & writable_mask) != (expected & writable_mask)) {
    register_verify_error++;
}

至少验证:

  • CONFIG1..CONFIG4
  • CH1SET..CH8SET
  • BIAS_SENSP/N
  • LOFF_SENSP/N
  • GPIO
  • MISC1/MISC2

多板共享 CS/DIN 时,读回结果不能证明每一块板都单独配置成功。因此生产测试应先做单板寄存器验证,再做整链数据验证。

8. 主要参考资料