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);//将采集出来的数据打印出来
从说明看, 好像通信不稳定. 是不是时序上有问题呢?
通道切换后延时长一点试试