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

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);//将采集出来的数据打印出来

user151383853:

从说明看, 好像通信不稳定. 是不是时序上有问题呢?

Carter Liu:

通道切换后延时长一点试试

赞(0)
未经允许不得转载:TI中文支持网 » AVR控制ADS7590采集数据切换通道不好使
分享到: 更多 (0)