微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 硬件电路设计 > TI模拟硬件电路设计 > ADS1251接收数据错误

ADS1251接收数据错误

时间:10-02 整理:3721RD 点击:

在使用ADS1251和ATMEGA128单片机通信时初始化接收寄存器数值为00,接收到的数据一直保持01状态。无论输入端电平如何变化一直保持不变。哪位大神能帮忙分析下为什么会是这种情况。

没太明白问题,时序对了吗?

设计ADS1251电路的时候外接8MHz有源晶振和4.096V的参考电压,SCLK引脚接Atmega128的PA1,DOUT接PA0;然后通过串口接收数据。

下面是我写的时序程序按照手册的同步时序写的:

void AD_Init(void)
{
PORTA &= ~BIT(1); //sck=0;
delay_nms(5); //延时1ms
PORTA |= BIT(1); //sck=1
delay_n100us(5);
PORTA &= ~BIT(1); //sck=0;
while(PINA & 0x01);
}

//---数据接收模式
void AD_Conver(void)
{
uchar i;

delay_1us();
delay_1us();

for(i=0;i<8;i++)
{
data_temp3 << 1;
PORTA |= BIT(1); //sck=1
data_temp3 |= (uchar) (PINA & 0x01); //DI
PORTA &= ~BIT(1); //sck=1;
}
USART_Tran_bit(data_temp3);
for(i=0;i<8;i++)
{
data_temp2 << 1;
PORTA |= BIT(1); //sck=0
data_temp2 |= (uchar) (PINA & 0x01); //DI
PORTA &= ~BIT(1); //sck=1;
}
USART_Tran_bit(data_temp2);
for(i=0;i<8;i++)
{
data_temp1 << 1;
PORTA |= BIT(1); //sck=0
data_temp1 |= (uchar) (PINA & 0x01); //DI
PORTA &= ~BIT(1); //sck=1;
}
USART_Tran_bit(data_temp1);
while(!(PINA & 0x01));
delay_3us();
}

//----------------主函数---------------
void main (void)
{
USART_Init(baud_set);//串口初始化
DDRA |= 0x00000010;//PA0为输入和PA1为输出
PORTA &= ~BIT(1); //sck=0
AD_Init();
USART_Tran_bit(data_temp1);
USART_Tran_bit(data_temp2);
USART_Tran_bit(data_temp3);
USART_Tran_bit(0xff);
while(1)
{
AD_Conver();
}
}

然后得到了如下所示的串口程序。

请您帮看看这是哪的问题啊。

可以用示波器测一组波形看看吗? CLK,SCLK,DOUT?

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top