微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 硬件电路设计 > TI模拟硬件电路设计 > ADS1247 ISSUE

ADS1247 ISSUE

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

目前有個TI-M4讀ADS1247的問題,在資料轉換完成,讀回來的24bit(MSB-Mid-Byte-LSB)前面的MSB-Mid-Byte二個資料完全一樣,

不管電位差怎麼改變,Dout回傳的值(MSB-Mid-Byte二個資料完全一樣),請問可能哪裡有錯呢???? 以下是我的流程~

我的Code一開始先配置register

Step1 

Single_data();    // START PIN  (HIGH--->LOW)

SPI2_Buffer_Tx[0] = 0x40;    //write (register 0)
 SPI2_Buffer_Tx[1] = 0x03;    // nuber - 1 (4)
 SPI2_Buffer_Tx[2] = 0x0B; //MUX0
 SPI2_Buffer_Tx[3] = 0x00; //VBIAS
 SPI2_Buffer_Tx[4] = 0x00; //MUX1
 SPI2_Buffer_Tx[5] = 0x09;//0x06; //SYS0  320 SPS
 SPI2_Send_Data(6);
  while(SSIBusy(SSI3_BASE))
         {
         }

Step2

SPI2_Buffer_Tx[0] = 0x13; //改成單次 0x13(Read Data Once)

SPI2_Send_Data(1);

Step3

SysCtlDelay(20000);


 SPI2_Send_Data(3);   // NO Operation 3 bytes
 SPI2_RxIdx = 0;
 while(SSIBusy(SSI3_BASE))
          {
          }

Dout會回傳3 個 Byte (24bit) 結果前2個Byte是一樣的..謝謝

 

附件 綠色線是-----SCLK

        黃色是--------DOUT

建议可以把DIN, DRDY的信号连同DOUT一起观察,贴一下波形。

为什么要加SysCtlDelay(20000);? 

SPI2_Buffer_Tx[5] = 0x09;输出数据率为2K, 在此条件下,数据手册34页Single-Cycle Settling部分有一些具体的要求,SPI数据SCLK周期不得超过520ns,和一个字节的开始之间的时间 和随后的字节的开头必须不超过4.2μs。此外,当执行多个独立的写命令前四个寄存器,等待至少64个时钟周期开始之前另一个写命令。

现在怀疑是你的delay时间过长引起的,不能超过4.2us。建议修改SysCtlDelay(20000)函数。

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

网站地图

Top