TI中文支持网
TI专业的中文技术问题咨询交流网站

ADS1247寄存器无法读取,读取出来一直为3f??使用的是模拟SPI。

ads1247.h

ads1247.c

user6518570:

//ADS1247写8位
void WriteByteADS1247 (unsigned char 1_ u8WriteData) //8BIT
{unsigned char i;Ad1247_ DelayUs (500);for (i=0; i<8; i++){ADS1247_ SCLK1;Ad1247_ DelayUs(500) ;if(1_ u8WriteData & 0x80){ADS1247_ DIN1;}else{ADS1247_ DIN0;}1_ u8WriteData <<=1;ADS1247_ SCLK0;Ad1247_ DelayUs(500) ;}Ad1247_ DelayUs(2) ;
}

user6518570:

回复 user6518570:

//ADS1247读8位数据
unsigned char ReadByteADS1247 (void) //8BIT
{unsigned char i;unsigned char l_ u8ReadDate = 0 ;ADS1247_ CS0;while (ADS1247_ DRDY) ;for(i = 0; i<8; i++){ADS1247_ SCLK0;Ad1247_ DelayUs(500) ;l_ u8ReadDate<<=1;if (ADS1247_ DOUT){l_ u8ReadDate|=0x01;ADS1247_ SCLK1;Ad1247_ DelayUs(500) ;}}Ad1247_ DelayUs(500) ;ADS1247_ CS0;return l_ u8ReadDate;
}

Amy Luo:

回复 user6518570:

您好,
感谢您对TI产品的关注!
您可以把您SPI通信的时序波形图(CS、SCLK、DIN、DOUT/DRDY)用示波器测量后,附上来吗,这样更方便查看问题原因

user6518570:

回复 user6518570:

//ADS1247初始化程序
void ADS1247_ Init (void)
{
HAL_ Delay(100);
unsigned char l u8TestValue = 0;
ADS1247_ CS1;
ADS1247_ SCLKl;

ADS1247_ CS0;
WriteByteADS1247(0x06);
ADS1247_ CS1;
HAL_ Delay(100) ;

ADS1247_ CS0; .
WriteByteADS1247(0x42); //写 地址为0x02的寄存器
WriteByteADS1247(0x00); 1/写一 -个寄存器
WriteByteADS1247(0x38); //写入0x38
ADS1247_ DIN1 ;
ADS1247_ CS1;

ADS1247_ CS0; .
WriteByteADS1247 (0x22) ;//读地址为0x03的寄存 器
WriteByteADS1247 (0x00) ; // 读一个寄存器
WriteByteADS1247 (ADS1247_ COMMAND NOP) ;
ADS1247_ CS1;

l_ u8TestValue=ReadByteADS1247();
printf("l_ u8TestValue = 0x&x\r\n",l _u8TestValue) ;

ADS1247_ CS0; .
WriteByteADS1247 (0x04) ;
ADS1247_ CS1;
}

user6518570:

回复 Amy Luo:

稍等 我拍一下照片

user6518570:

回复 Amy Luo:

//cs时序:

//SCLK时序:

//DIN时序:

//DOUT时序:

//DRDY时序:

user6518570:

回复 Amy Luo:

我的时序图已经上传!希望能指点一下

Amy Luo:

回复 user6518570:

我希望您上传的是这些信号在同一个屏幕上的时序图,如果您的示波器没有这么多通道的话,您至少需要同时捕获SCLK和DIN的信号,这样我才可以看出您读取寄存器的指令是否正确,然后就是SCLK和DOUT信号,看设备是否正确输出了寄存器值,如果您使用的示波器有三个通道的话,最好SCLK、DIN和DOUT同时抓取过来
请先确保CS在整个通信事务中处于低电平,RESET pin需要拉高
看您每个信号的波形,过冲都比较厉害,建议将信号线串联几十欧姆电阻,以减小过冲

user6518570:

回复 Amy Luo:

//SCLK和DIN的时序:

// SCLK与DOUT

user6518570:

回复 Amy Luo:

紫色时序为SCLK,黄色时序分别为DIN与DOUT,CS是处于低电平的,RESET pin引脚我也测了是为高电平的

赞(0)
未经允许不得转载:TI中文支持网 » ADS1247寄存器无法读取,读取出来一直为3f??使用的是模拟SPI。
分享到: 更多 (0)