你好,我仔细检查了一下。
发现所谓停止转换是由于信号大于1.25V,再进一步检查,发现大于1.25V时,而小于1.25V时,结果为0x7fxx,刚好是最高位读不到。
怀疑是PINB &BIT(PB3)屏蔽掉了。所以把 if(PINB & BIT(PB3)){ }整个IF块注释掉。
结果发现ad转换可以一直进行。但注释掉上面的if语句块,中间会冒出不正确值。
我现在采用的模式是连续转换,连续读的方式。
现在是明白了,如果DOUT/RDY线为低时,数据已经准备好,马上读不会出错。但DOUT/RDY为高时,也可能是数据已经转换好,可以读到,但也可能是没有准备好。
ad7798/ad7799文档中提到When DOUT/RDY goes low to indicate the end of a conversion, sufficient SCLK cycles must be applied to the ADC, and the data conversion is placed on the DOUT/RDY line. 就是说DOUT/RDY为0,还要送足够的SCLK到ADC,这样读到的数据才放在DOUT/RDY上。这个“sufficient SCLK cycles must be applied to the ADC” 中的sufficient是多少?如何操作?
你好,我仔细检查了一下。
发现所谓停止转换是由于信号大于1.25V,再进一步检查,发现大于1.25V时,而小于1.25V时,结果为0x7fxx,刚好是最高位读不到。
怀疑是PINB &BIT(PB3)屏蔽掉了。所以把 if(PINB & BIT(PB3)){ }整个IF块注释掉。
结果发现ad转换可以一直进行。但注释掉上面的if语句块,中间会冒出不正确值。
我现在采用的模式是连续转换,连续读的方式。
现在是明白了,如果DOUT/RDY线为低时,数据已经准备好,马上读不会出错。但DOUT/RDY为高时,也可能是数据已经转换好,可以读到,但也可能是没有准备好。
ad7798/ad7799文档中提到When DOUT/RDY goes low to indicate the end of a conversion, sufficient SCLK cycles must be applied to the ADC, and the data conversion is placed on the DOUT/RDY line. 就是说DOUT/RDY为0,还要送足够的SCLK到ADC,这样读到的数据才放在DOUT/RDY上。这个“sufficient SCLK cycles must be applied to the ADC” 中的sufficient是多少?如何操作?
举报