TI中文支持网
TI专业的中文技术问题搜集分享网站

ADS1299: 【紧急】内部产生信号测试,但是接收不到数据。

Part Number:ADS1299

目前测试发现,SPI接收到的数据不对,全部都是255和0,并且没有规律,但是SPI函数可以正常使用。使用stm32f407。想看看论坛里有没有人有这样的问题,可以帮忙解答。

下面是ADS1299的原理图:

下面是ADS1299初始化以及寄存器配置:相关定义已经定义好了。

void ADS_PowerOnInit(void)
{	
	uint8_t tid;
	uint8_t tmp; 
	HAL_GPIO_WritePin(GPIOA,START_Pin,GPIO_PIN_RESET);			

	tmp = SDATAC;
	HAL_SPI_Transmit(&hspi1,&tmp,1,1000);//===fff===  Í£Ö¹Á¬Ðø¶Áģʽ
	
	HAL_Delay(1000);			
	LED1_TOGGLE(); 
	HAL_GPIO_WritePin(PWDN_LOW_GPIO_Port,PWDN_LOW_Pin,GPIO_PIN_SET);
	HAL_GPIO_WritePin(GPIOA,RESET_LOW_Pin,GPIO_PIN_SET);				
	HAL_Delay(3000);			
	LED1_TOGGLE(); 
	HAL_GPIO_WritePin(GPIOA,RESET_LOW_Pin,GPIO_PIN_RESET);			
	HAL_SPI_Transmit(&hspi1,&tmp,1,1000);
	HAL_GPIO_WritePin(GPIOA,RESET_LOW_Pin,GPIO_PIN_SET);						
	LED1_TOGGLE(); 
	HAL_Delay(10);		
	tid = RD_REG(RREG,1);
	HAL_Delay(1000);			
	
	
	WR_REG(WREG|CONFIG3,0xe0);	//ec
	
	WR_REG(WREG|CONFIG1,0x96);	
	
	WR_REG(WREG|CONFIG2,0xd0);	
	
	//WR_REG(WREG|CONFIG3,0xe0);	
	

	HAL_Delay(200); 
	
	
	WR_REG(WREG|MISC1,0x20);		
	HAL_Delay(10);
//	WR_REG(WREG|BIAS_SENSP,0XFF);	//amplified x1
//	HAL_Delay(1);
//	WR_REG(WREG|BIAS_SENSP,0XFF);	//amplified x1
//	HAL_Delay(1);
	WR_REG(WREG|CH1SET,0X05);	//amplified x1
	HAL_Delay(10);
	WR_REG(WREG|CH2SET,0X05);	//amplified x1
	HAL_Delay(10);
	WR_REG(WREG|CH3SET,0X05);	//amplified x1
	HAL_Delay(10);
	WR_REG(WREG|CH4SET,0X05);	//amplified x1
	HAL_Delay(10);
	WR_REG(WREG|CH5SET,0X05);	//amplified x1
	HAL_Delay(10);
	WR_REG(WREG|CH6SET,0X05);	//amplified x1
	HAL_Delay(10);
	WR_REG(WREG|CH7SET,0X05);	//amplified x1
	HAL_Delay(10);
	WR_REG(WREG|CH8SET,0X05);	//amplified x1  
	HAL_Delay(10);

	HAL_GPIO_WritePin(GPIOA,START_Pin,GPIO_PIN_SET);			
	HAL_Delay(10);
	tmp = RDATAC;
	HAL_SPI_Transmit(&hspi1,&tmp,1,1000);
	HAL_Delay(1000);
}

下面是stm32f407主程序:省略掉了一些数组和标志位的定义。

while(1)
 {ADS_PowerOnInit(); 
	HAL_GPIO_WritePin(START_GPIO_Port, START_Pin, GPIO_PIN_SET);
	uint8_t tmp; 
	tmp = RDATAC;
	HAL_SPI_Transmit(&hspi1,&tmp,1,1000);
	while(times<32)
	{
		if(DRDY==GPIO_PIN_SET)
		{
			sign=1;
		}
		if(DRDY==GPIO_PIN_RESET&&sign==1)
		{
			times++;
			sign=0;
			for(int i=0;i<27;i++)
			{
				HAL_SPI_Receive(&hspi1,&data[count],1,1000);
				count++;
				LED0(0);
				LED1(1);
			}
		}
	}
	for(int i=0;i<count;i++)
	{
		datad[i]=(float)data[i];
		printf("%f \r\n",datad[i]);
	}

Alice:

您好,

      请参考下面帖子,检查芯片是否已工作。

      [FAQ] ADS1298: ADS129x:如何验证 ADS129x 器件是否仍然正常工作? – 数据转换器论坛 – 数据转换器 – E2ETm 设计支持 (ti.com)

     芯片正常启动后,读取芯片ID(9.6.1.1 ID: ID Control Register) 检查SPI时序。    

     ADS1299-x 适用于 EEG 和生物电势测量的低噪声 4 通道、6 通道、8 通道、24 位模数转换器 datasheet (Rev. C) (ti.com.cn)

     下面的帖子有SPI调试步骤,也请参考。

      [FAQ] 【常见问题解答】ADS129x问题咨询 – 数据转换器论坛 – 数据转换器 – E2ETm 设计支持 (ti.com)

赞(0)
未经允许不得转载:TI中文支持网 » ADS1299: 【紧急】内部产生信号测试,但是接收不到数据。
分享到: 更多 (0)