ADS1255交替读出现跳变的问题

在驱动ADS1255后,连续读没问题,但是单次读切换通道的时候会出现跳变,开始的时候偶尔会出现,经过不断的查找,发现直接读1255读出的值没有错,在改变测试,发现是切换通道的时候读到下个通道的值了,所以在切换通道附近会出现错误,不在切换通道的时候读就是一直正确不会出现跳变了。

void EXTI4_15_IRQHandler(void)
{	
	static uint8_t writeseq[3]={0x51,0x00,0x08};
	static uint8_t writeseq1[3]={0x51,0x00,0x18};
	static uint16_t flag=0,temp = 0,change=0,num_c=3; 
  if (LL_EXTI_IsActiveFlag_0_31(LL_EXTI_LINE_4) != RESET)  
  {
	 
	if(flag == 1){			 
		change++;
		if(change<num_c)//每次改变通道后多读几遍,取中间读的值
		{
			flag=1;
			adc_val_1 = getdata1255();
			if(change == 2)
			{
				if(adc_val_1<0x800000)  AIN1 = (adc_val_1*2.5/8388607);
				else  AIN1 = ((adc_val_1-0x800000)*2.5/8388607-2.5);
			} 
		}else{
			flag=0;
			change=0;
			SPI_Write(writeseq,3);
			do_sync();
		}
	} 
	if(flag == 0){
		change++;
		if(change<num_c)
		{
			flag=0;
			adc_val_0 = getdata1255();
			if(change == 2)
			{
				if(adc_val_0<0x800000)  AIN0 = (adc_val_0*2.5/8388607);
				else  AIN0 = ((adc_val_0-0x800000)*2.5/8388607-2.5);
			}
			   
		}else{
			flag=1;
			change=0;
			SPI_Write(writeseq1,3);
			do_sync();
		}
	}
    LL_EXTI_ClearFlag_0_31(LL_EXTI_LINE_4);
  }
 
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值