This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] ADS1291:ADS1291的波形问题

Guru**** 2573695 points
Other Parts Discussed in Thread: ADS1291, ADS1292R

请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/data-converters-group/data-converters/f/data-converters-forum/674240/ads1291-waveform-issue-with-ads1291

器件型号:ADS1291
主题中讨论的其他器件: ADS1292R

您好:

我现在使用 Nordic nrf52832来调试 ADS1291。 现在问题是所采集的信号没有 QRS 波形。 原理图绘制的波形和通过 MATLAB 获得的数据如下所示。 原始数据位于附件中。

我参考了 ADS1292R 的驱动程序并将驱动程序代码移植到 nrf52832。
www.ti.com/.../TIDM-BIOSIGNMONITOR

2、现在寄存器可以正确读写了、器件 ID 可以正确读为0x52;我不确定寄存器配置是否正确? 寄存器1至11的值配置如下:
0x02、0xE0、0xF0、0x00、0x00、 0x23、0x03、0x00、0x02、0x07、 0x0C
我将这些值写入寄存器、并将其读出以匹配它们。 对于 ADS1291、我的寄存器设置是否正确? 如果我想调整参数、应该调整哪些参数?

转换模式使用连续转换模式。 当进入 DRDY 中断时、读取6个字节的数据。 ECG 状态字节始终为0xc00000。 这是正常情况。 是否需要处理读取的 ECG 数据? 因为它是补码类型。  

所收集数据的处理是什么? 可用于在 MATLAB 中绘制波形。以下是我的治疗。 它的处理是否正确?

uint32_t u32_SatatusADS1x9xData = 0;
uint32_t u32_EcgADS1x9xData = 0;
int32_t tmpdata = 0;

 //ECG 状态数据
u32_SatatusADS1x9xData =((uint32_t) SPI_Rx_buf[0])<< 16;// 16~23位
u32_SatatusADS1x9xData +=((uint32_t) SPI_Rx_buf[1])<< 8;// 8~15位
u32_SatatusADS1x9xData +=((uint32_t) SPI_Rx_buf[2]);// 0~7位
 
//ECG 数据
u32_EcgADS1x9xData =(((uint32_t) SPI_Rx_buf[3])<< 16;// 16~23位
u32_EcgADS1x9xData +=((uint32_t) SPI_Rx_buf[4])<< 8;// 8~15位
u32_EcgADS1x9xData +=((uint32_t) SPI_Rx_buf[5]);// 0~7位

if (((u32_SatatusADS1x9xData 和0x00f00000)=0x00c00000)

IF (u32_EcgADS1x9xData 和0x800000)

u32_EcgADS1x9xData ^= 0x8FFFFF;
u32_EcgADS1x9xData += 1;
Tmpdata =(int32_t) u32_EcgADS1x9xData;
Tmpdata = tmpdata *(-1);

其他

Tmpdata =(int32_t) u32_EcgADS1x9xData;

万用表测试 AVDD 电压为5V 是正常现象。 DVDD 的电压约为2.75V。 这是否不正常? 因为 VDD 电压为3.3V。

我使用的硬件 SPI 控制器配置如下:

#define NRF_DRV_SPI_ADS1X9X_CONFIG \
{\
.SCK_Pin = ADS1X9X_SPI_SCLK_PIN、\
.mosi_pin = ADS1X9X_SPI_SIMO_PIN、\
.mio_pin = ADS1X9X_SPI_SOMI_PIN、\
.ss_pin = ADS1X9X_SPI_CS_PIN、\
IRQ_PRIORITY = SPI_DEFAULT_CONFIG_IRQ_PRIORITY、\
.ORC = 0xFF、\
.frequency = NRF_DRV_SPI_FREQ_500K、\
.mode = NRF_DRV_SPI_MODE_1、\
.bit_order = nrf_DRV_SPI_bit_order_MSB_first、\

我怀疑参考示例使用的时钟速率为1MHz、但在 nrf52832上是不可能的。 在 nrf52832上使用内部时钟。 为什么?

6. 参考设计示例中的 ADS1292R 初始化代码中是否需要 ADS1x9X_PowerDown_Enable 函数?  如下所示:

但是、在 ADS1292R 评估板的示例中未调用此函数。 我对此有一些疑问、我是否应该使用该函数?

void ECGInterface_Init (void)

volatile unsigned short Init_i、j;

ADS1x9X_RESET();
对于(j = 0;j < delay_count;j++)

对于(Init_I =0;Init_I < 20000;Init_i++);
对于(Init_I =0;Init_I < 20000;Init_i++);
对于(Init_I =0;Init_I < 20000;Init_i++);

init_ADS1x9X_DRDY_Interrupt ();
ADS1x9X_Clock_Select (1);//设置内部时钟
对于(Init_I =0;Init_I < 20000;Init_i++);
对于(Init_I =0;Init_I < 20000;Init_i++);
对于(Init_I =0;Init_I < 20000;Init_i++);


ADS1x9X_Disable_Start ();//将 START 引脚设置为低电平
ADS1x9X_Enable_Start ();//将 START 引脚设置为高电平

/*通过命令将 START 引脚连接至低电平来控制转换。*/
Hard_Stop_ADS1x9x ();//将 START 引脚设置为低电平

//为什么发送 start 命令只是为了发送 stop 命令。

START_Data_Conv_Command ();
SOFT_Stop_ADS1x9x ();

对于(j = 0;j < delay_count;j++)

对于(Init_I =0;Init_I < 20000;Init_i++);

STOP_READ_Data_Continuous();// SDATAC 命令
对于(j = 0;j < delay_count;j++)

对于(Init_I =0;Init_I < 35000;Init_i++);

对于(j = 0;j < delay_count;j++)

对于(Init_I =0;Init_I < 35000;Init_i++);

ADS1x9X_READ_All_Regs (ADS1x9xRegVal);
ADS1x9X_Default_Reg_Init();
ADS1x9X_READ_All_Regs (ADS1x9xRegVal);

//PUT_ADS1x9X_IN_SLEEP ();
ADS1x9X_PowerDown_Enable();  

原理图

 e2e.ti.com/.../2476.raw-data.txt

MATLAB 绘制的波形

思考。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好,Yihui,

    欢迎访问 E2E 论坛、感谢您的发帖!

    遗憾的是、我无法为 Nordic nrf52832提供支持、但我可以在任何地方为 ADS1291提供支持。

    1) 1)无法提供北欧设备支持。

    2) 2)寄存器:可在数据表的第39-49页查看这些寄存器。
    0x02 - CONFIG1 -(默认值)
    0xE0 - CONFIG2 -启用导联脱落比较器、启用基准缓冲器、否则为默认值
    0xF0 -导联脱落控制寄存器-比较器正极侧70%、比较器负极侧30%、否则为默认值
    0x00 -默认值
    0x00 -默认值
    0x23 -启用 RLD 缓冲器、RLD 连接到 IN1N、RLD 连接到 IN1P、否则为默认值
    0x03 -通道1导联脱落检测启用正负输入、否则为默认值
    0x00 -默认值
    0x02 -默认值
    0x07 - 64kHz 呼吸控制频率、否则为默认值
    0x0C -默认值

    3) 3)是、需要处理数据。 它是二进制补码二进制类型、可根据您的选择转换为十进制代码或电压。 如果数据的第一个位为高电平、则得到的数字为负、否则将二进制转换为正常的十进制数。

    4) 2.5V 的 DVDD 在可接受的限值内。 这可以在数据表的第5页看到。

    5) 5)无法提供北欧设备支持。

    6) 6)不需要使用断电功能。 您可以自行决定使用。