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

ads124s06如何啟動轉換?

你好

我使用Arduino控制ads124s06來轉換類比-數位訊號

當我在控制時,我可以用RREG、WREG設定並讀取register

但是當我使用0x08啟動轉換,0x12 RDATA時,卻都看不到轉換數據(回傳都是0)

請幫我檢查我的code哪裡有錯好嗎?

謝謝

以下是我的code

#include <SPI.h>
#include <TimerOne.h>
#define STA 11
#define DRDY 12
#define RESET 13
const int CS = 53;
int stat;
int stat1;
int stat2;
int stat3;
int stat4;
int stat5;
volatile int DRDY_state = LOW;
SPISettings settings1(4000000, MSBFIRST, SPI_MODE1); 
void setup() {
SPI.begin();
pinMode(CS,OUTPUT);
pinMode(RESET, OUTPUT);
pinMode(DRDY, INPUT);
pinMode(STA,OUTPUT);
digitalWrite(RESET , HIGH); 
Serial.begin(115200);
SPI.beginTransaction(settings1);
digitalWrite(CS, LOW);
digitalWrite(STA,LOW);
}
void loop() {
for(int i=0;i>=0;i++)
if(i==0){
SPI.transfer(0x42); // WREG FL_POR 
SPI.transfer(0x02); // WREG byte number -1
SPI.transfer(0x2C); // WREG write AIN2-AINCOM
SPI.transfer(0x00); // 03h PGA reg(closed)
SPI.transfer(0x10); // DATA RATE 20 SPS
SPI.transfer(0x08); // start converting command
delayMicroseconds(10);
}
else
{
//Serial.println("start converting");
SPI.transfer(0x12); //RDATA command
delayMicroseconds(10);
stat = SPI.transfer(0) ; // get data from miso
stat1= SPI.transfer(0);
stat2= SPI.transfer(0);
Serial.println("ADC output");
Serial.println(stat);
Serial.println(stat1);
Serial.println(stat2);
}
SPI.endTransaction();
}
Chien-Yu hsu:

補充以下是 pin 連結訊號

標示pin+数字 為Arduino 的pin

PIN
function
connect

1
AINCOM
0V

2
AIN5
2.12V

3
AIN4
2.63V

4
AIN3
2.05V

5
AIN2
2.65V

6
AIN1
2.23V

7
AIN0
2.21V

8
START
pin11

9
CS
pin53

10
DIN
pin51

11
SCLK
pin52

12
DOUT
pin50

13
DRDY
pin12

14
DGND
0V

15
IOVDD
5V

16
DVDD
3.3V

17
CLK
0V

18
RESET
pin13

19
GPIO3
NA

20
GPIO2
NA

21
GPIO1
NA

22
GPIO0
NA

23
REFOUT
1uF to AVSS

24
REFCOM
0V

25
NC
NA

26
AVDD
5V

27
AVSS
0V

28
AVSS-SW
0V

29
REFN0
2.5V

30
REFP0
0V

31
REFN1
2.5V

32
REFP1
0V

user151383853:

回复 Chien-Yu hsu:

也没有看见你的程序, 那几个 statx在哪里赋值了,却 print 了

Kailyn Chen:

ADS124S06的源代码没有提供,您可以参考一下ADS124S08 的source code中关于采集和处理数据部分。 www.ti.com/…/ADS124S08EVM

Chien-Yu hsu:

回复 user151383853:

1.一开始就已经先int statX定义了,在Arduino里SPI一次只能传送8bit,因此把24bit资料分三次读取,在data sheet第69页图90显示,读取资料时,DIN为low,所以我code为stat=SPI.transfer(0);让Arduino传送low讯号,并在同时交换DOUT讯号给Arduino(依我的理解:在Arduino里,SPI为同时输出与接收,要有输出讯号才能同时接收到讯号,且使用同一个SPI,因此我用stat=SPI.transfer(0) 传送8bit的0讯号借此收到data并将称为stat)

2.stat=SPI.transfer(0) 再print出去应该是没问题的,因为我可以用这方式读取register的值,输出值正确

3.目前我看到似乎跟我把REFP0/REFN0 Pin接错有关,改成REFP0=5V,REFN0=0V 读取值不再是只有输出的最大/最小值,但他对于即时反应好像怪怪的,调为AIN1/AINCOM,改变AIN1的电压,ADS124s06输出值却不会即时变化,我还不了解为什么?

赞(0)
未经允许不得转载:TI中文支持网 » ads124s06如何啟動轉換?
分享到: 更多 (0)