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

ads1258寄存器配置

您好,现在在调试ads1258,按照手册上的步骤对其进行配置,但是读出来的寄存器数据和写入的不一样,请高手指点一下。

ads1258的初始化配置如下:

void ADS1258_INIT()

{

 int i;

 int temp;

   PINSEL1 &= 0xFFFFF03C;                      // P0.16、P0.19、P0.20、P0.21配置为普通GPIO

   IO0DIR = IO0DIR| (1 << 16);   //cs输出

   IO0DIR = IO0DIR& (~(1 << 19)); //drdy输入

IO0DIR = IO0DIR| (3 << 20);  // satrt and rest输出

IO0SET =IO0SET | (1 << 16);  //cs=1

Delayms(30);

IO0CLR =IO0CLR | (1 << 16);   //cs=0

   Delayms(30);

   //stop the converter

   IO0CLR =IO0CLR | (1 << 20);  //start=0,stop converter

Delayms(10);

//reset the converter

IO0SET =IO0SET | (1 << 21);   // rest=1

   Delayms(10);

  IO0CLR = IO0CLR | (1 << 21);  // rest=0

  Delayms(30);

  IO0SET =IO0SET | (1 << 21);  // rest=1 abort reset signal

  Delayms(10);

  //configure the registers          

   SPI_SendData(0x70);   // write register command

   SPI_SendData(0x42);   // configer register0      SPI_SendData(0x23);    // configer register 1

   SPI_SendData(0x00);    // configer register 2  

   SPI_SendData(0x00);    // configer register 3

   SPI_SendData(0xFF);    // configer register 4      SPI_SendData(0xFF);    // configer register 5      SPI_SendData(0x00);    // configer register 6

   SPI_SendData(0xff);    // configer register 7

   SPI_SendData(0x00);    // configer register 8

   SPI_SendData(0x8b);    // reg 9

   Delayms(10);

   //test the registers

    SPI_SendData(0x50);   // write register command

    for(i=0;i<10;i++)

    {

    temp=SPI_SendData(0x00);

    send_char(temp);// configer register0  Auto-ScanMode;时钟外接;  

    }

}

读出来寄存器的值为 00 00 A1 00 00 00 00 00 00 00,而不是上面所写入的寄存器数值~

Decapton Wang:

1. 看不懂C代码,可否把你的C代码转化成类似于手册图1那样的时序图?这样方便分析。

2. 看上去你的~CS和~DRDY是同时跳低的,不过从手册图57看,~DRDY先跳,然后才是~CS跳,会不会是这方面的问题?

newta:

回复 Decapton Wang:

问题已解决,谢谢~

yanhui huang:

回复 newta:

怎么解决的啊,能不能讲一下

赞(0)
未经允许不得转载:TI中文支持网 » ads1258寄存器配置
分享到: 更多 (0)