Created
June 25, 2020 15:20
-
-
Save dj1711572002/f71c5f269a28630e1608fa319684f07e to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// AD7194 EVAL Board mbed NUCLEO 432KC SPIIF Program | |
// Differential 1Ch AIN1(+) AIN2(-) | |
//2019/03/23 Shinshu-Makers | |
#include "mbed.h" | |
SPI ad7194 (PA_7,PA_6,PA_5); //NUCLEO L432KC MOSI, MISO, SCLK | |
DigitalOut CS(PA_4); // Chip select | |
//DigitalOut ADReset(p15); // Pin 15 is reset line for AD9850 | |
Serial pc(USBTX, USBRX); // tx, rx for debug terminal | |
Timer t; | |
int data,data0,data1,data2 ; | |
int sdata,sdata0,sdata1,mdata0,mdata1,mdata2,data_1; | |
int condata0,condata1,condata2; | |
int cReg0,cReg1; | |
double mV[100]; | |
double mVsum,mVave; | |
int i,j,k; | |
int t0,t0_1; | |
int MA=10; | |
int main() | |
{ | |
pc.baud(115200); | |
CS=0;//Chip Selct Low設定 | |
//set_AD7194(); | |
//MODEレジスタへモード設定データ書き込み | |
ad7194.write(0x08);//MODEレジスタ書き込み指定 | |
ad7194.write(0x08) ;//MODEレジスタ23-16bit書き込み=連続変換モード+InternalClock4.8MHz | |
ad7194.write(0x00) ;//MODEレジスタ15-8bit書き込み=デフォルトのまま | |
ad7194.write(0x01) ;//MODEレジスタ7-0bit書き込み=4800Hz設定 | |
//mode書き込み確認 | |
ad7194.write(0x48);//MODEレジスタ書き込み指定 | |
mdata0=ad7194.write(0x00) ;//MODEレジスタ23-16bit書き込み=連続変換モード+InternalClock4.8MHz | |
mdata1=ad7194.write(0x00) ;//MODEレジスタ15-8bit書き込み=デフォルトのまま | |
mdata2=ad7194.write(0x00) ;//MODEレジスタ7-0bit書き込み=4800Hz設定 | |
//pc.printf("mdata:%x,%x,%x|n\r",mdata0,mdata1,mdata2); | |
//設定レジスタへ設定データ書き込み | |
ad7194.write(0x10);//設定レジスタ書き込み指定 | |
ad7194.write(0x00) ;//設定レジスタ23-16bit書き込み=デフォルトのまま | |
ad7194.write(0x01) ;//設定レジスタ15-8bit書き込み=1CH設定 AIN1+ AIN2- | |
ad7194.write(0x17) ;//設定レジスタ7-0bit書き込み=BUF Gain128 | |
//Config書き込み確認 | |
ad7194.write(0x50);//Configレジスタ書き込み指定 | |
condata0=ad7194.write(0x00) ;//MODEレジスタ23-16bit書き込み=連続変換モード+InternalClock4.8MHz | |
condata1=ad7194.write(0x00) ;//MODEレジスタ15-8bit書き込み=デフォルトのまま | |
condata2=ad7194.write(0x00) ;//MODEレジスタ7-0bit書き込み=4800Hz設定 | |
//pc.printf("mdata:%x,%x,%x,condata:%x,%x,%x|n\r",mdata0,mdata1,mdata2,condata0,condata1,condata2); | |
t.start(); | |
t0_1=0; | |
i=0; | |
while(1) | |
{ | |
t0_1=t0; | |
ad7194.write(0x40);//status request | |
sdata0=ad7194.write(0x0);//status read | |
//pc.printf("read In status=%x\n\r",sdata0); | |
//pc.printf("%x:sdata0 & 0x80=%x\n\r",sdata0,sdata0 & 0x80 ); | |
if ((sdata0 & 0x80) ) //7bit目がクリアされたら変換完了でデータレジスタアクセ | |
{ | |
ad7194.write(0x58); | |
data0=ad7194.write(0x0); | |
data1=ad7194.write(0x0); | |
data2=ad7194.write(0x0); | |
i++; | |
if (i>MA) | |
{ | |
mV[i%MA]=(data0*65536+data1*256+data2)/5084;//3300mV Full | |
//pc.printf("mV[%d]=%4.3f\n\r",i,mV[i%MA]); | |
for (j=0;j<MA;j++) | |
{ | |
mVsum=mVsum+mV[j]; | |
//pc.printf("mVsum=%4.3f\n\r",mVsum); | |
} | |
mVave=mVsum/MA; | |
mVsum=0; | |
//pc.printf("==============%4.1f,%x,%x,%x,%4.4f\n\r",mV,data0,data1,data2,t.read()); | |
wait_ms(18); | |
pc.printf("%4.3f,%4.3f\n\r",mVave,t.read()); | |
} | |
}//sdata=0x80 | |
}//while | |
}//main end |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment