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.

AVR控制ADS7590采集数据切换通道不好使



我用ATMEGA128   SPI通讯控制ADS7590读取通道1和通道2的模拟数据,SPI  时钟频率62.5KHZ   根据ADS7590控制时序  我给7590发送一个数据  她会给我回一个数据  例如 读取通道0 的数据  我发送0X1800  7590会回给我通道0的数据   但是我发0x1880(通道1)  有的时候就切换不到通道1   但是有的时候还能切换至通道1进行采集数据,但是不稳定,会在通道0和通道1之间来回跳。

while(1)
{

_delay_ms(300);

CSN_0;                                       //SPI通讯使能引脚拉低
_delay_us(22);
SPI_MasterTransmit(0x18);      //采集通道0数据
data[0]=SPI_MasterReceive(); //接收第一个个字节数据
SPI_MasterTransmit(0x80);     //发送第二个字节数据
data[1]=SPI_MasterReceive();//接收第二个字节数据
_delay_us(22);                         //延时22us后将SPI使能拉高
CSN_1;
_delay_ms(300);                      //间隔300ms后采集通道1 的数据
CSN_0;                                   // //SPI通讯使能引脚拉低
_delay_us(22);
SPI_MasterTransmit(0x18);      //采集通道1数据
data[2]=SPI_MasterReceive(); //接收通道1数据
SPI_MasterTransmit(0x80);      //采集通道1数据
data[3]=SPI_MasterReceive(); //接收通道1数据
_delay_us(22);
CSN_1;

channel[0]=(data[0]&0xf0)>>4; //channel[0]表示通道0
channel[1]=(data[2]&0xf0)>>4; //channel[1]表示通道1

val1=(((data[0]&0x0f)<<8)|data[1]);//vai1表示通道0     12位数据采集结果
val2=(((data[2]&0x0f)<<8)|data[3]);//vai1表示通道1     12位数据采集结果
Uart_printf("%s %x %d %s %x %d\r\n","channe_l_val=",channel[0], val1,"channe_2_val=",channel[1], val2);//将采集出来的数据打印出来