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

ADS1251接收数据错误

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

Wanda WANG:

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

zhaopeng yang:

回复 Wanda WANG:

设计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(); }}

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

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

Haroad Chen:

回复 zhaopeng yang:

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

赞(0)
未经允许不得转载:TI中文支持网 » ADS1251接收数据错误
分享到: 更多 (0)