如题,我配置了ADS1292R双通道采样,每一个DRDY下降沿触发中断读取数据,但是总是读几个数据就会卡住,DRDY不再置低,此时ADS1292R应该不正常工作了,采样率降低也是一样的情况,不知道是软件还是硬件的问题。中断中如果不读取数据ADS1292R是连续转换的,连续读几次数据就不动了。
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.
如题,我配置了ADS1292R双通道采样,每一个DRDY下降沿触发中断读取数据,但是总是读几个数据就会卡住,DRDY不再置低,此时ADS1292R应该不正常工作了,采样率降低也是一样的情况,不知道是软件还是硬件的问题。中断中如果不读取数据ADS1292R是连续转换的,连续读几次数据就不动了。
如题,我配置了ADS1292R双通道采样,每一个DRDY下降沿触发中断读取数据,但是总是读几个数据就会卡住,DRDY不再置低,此时ADS1292R应该不正常工作了,采样率降低也是一样的情况,不知道是软件还是硬件的问题。中断中如果不读取数据ADS1292R是连续转换的,连续读几次数据就不动了。
void EXTI3_IRQHandler(void) // 中断函数
{
/* USER CODE BEGIN EXTI3_IRQn 0 */
/* EXTI line interrupt detected */
if(__HAL_GPIO_EXTI_GET_IT(GPIO_PIN_3) != RESET)
{
__HAL_GPIO_EXTI_CLEAR_IT(GPIO_PIN_3);
Delay_us(10);
HAL_SPI_Transmit(&hspi1, &cmd, 1, 0xff);
HAL_SPI_Receive(&hspi1, buffer+1+flag, 9, 0xff); //如果没有这行中断是不断的
}
/* USER CODE END EXTI3_IRQn 1 */
}
void ADS1292R_PowerOn(void) // 上电配置
{
ADS1292R_START_H;
ADS1292R_CS_H;
ADS1292R_PWDN_L; // 进入掉电模式
HAL_Delay(100);
ADS1292R_PWDN_H; // 退出掉电模式
HAL_Delay(1000); // 等待稳定
ADS1292R_PWDN_L; // 发出复位脉冲
Delay_us(10);
ADS1292R_PWDN_H;
HAL_Delay(100); // 等待稳定,可以开始使用ADS1292R1292R
// Read ID Control Register (ads1292r: 0x73)
while(device_id != 0x00)
{
device_id = ADS1292R_RREG(ID);
HAL_Delay(20);
}
// Write to registers
ADS1292R_WREG(CONFIG2, 0xE0);
HAL_Delay(10); // 等待参考电压稳定
ADS1292R_WREG(CONFIG1, 0x02);
ADS1292R_WREG(LOFF, 0xF0);
ADS1292R_WREG(CH1SET, 0x01);
ADS1292R_WREG(CH2SET, 0x01);
ADS1292R_WREG(RLD_SENS, 0x30);
ADS1292R_WREG(LOFF_SENS, 0x3F);
// ADS1292R_WREG(WREG | LOFF_STAT, 0x00);
ADS1292R_WREG(RESP1, 0xDE);
ADS1292R_WREG(RESP2, 0x07);
ADS1292R_WREG(GPIO, 0x0C);
}
while循环接收没试过,这两个有什么区别吗,而且为什么会导致ADS1292R转换异常,DRDY直接没有下降沿产生了