Created
July 3, 2020 07:22
-
-
Save dj1711572002/3b7006987f844cf19666e81685fe7f3d 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 i,j,k; | |
int dnum=0; | |
int MA=10;//Moving Average | |
int data,data0,data1,data2 ; | |
int sdata,sdata0,sdata1,mdata0,mdata1,mdata2,sdata_1; | |
int condata0,condata1,condata2; | |
int cReg0,cReg1; | |
float mV[6][10]; | |
float mV0,mV1,mV2,mV3,mV4,mV5; | |
float mV0sum,mV1sum,mV2sum,mV3sum,mV4sum,mV5sum; | |
void ch_Change(int ch){ | |
char chN; | |
switch (ch){ | |
case 0: | |
chN=0x01; | |
break; | |
case 1: | |
chN=0x23; | |
break; | |
case 2: | |
chN=0x45; | |
break; | |
case 3: | |
chN=0x67; | |
break; | |
case 4: | |
chN=0x89; | |
break; | |
case 5: | |
chN=0xAB; | |
break; | |
} | |
//設定レジスタへ設定データ書き込み | |
ad7194.write(0x10);//設定レジスタ書き込み指定 | |
ad7194.write(0x00) ;//設定レジスタ23-16bit書き込み=デフォルトのまま | |
ad7194.write(chN) ;//設定レジスタ15-8bit書き込み=1CH設定 AIN1+ 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設定 | |
ad7194.write(0x40);//status request | |
sdata=ad7194.write(0x0);//status read | |
//pc.printf("ch=%d,sdata=%x:condata:%x,%x,%x\n\r",ch,sdata,condata0,condata1,condata2); | |
} | |
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書き込み=デフォルトのまま pseudo=0 | |
ad7194.write(0x01) ;//設定レジスタ15-8bit書き込み=1CH設定 AIN1+ 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(); | |
i=0; | |
while(1) | |
{ | |
i++; | |
ch_Change(i%6);//ch change configuration | |
ad7194.write(0x40);//status request | |
sdata_1=sdata0; | |
sdata0=ad7194.write(0x0);//status read | |
ad7194.write(0x58); | |
data0=ad7194.write(0x0); | |
data1=ad7194.write(0x0); | |
data2=ad7194.write(0x0); | |
mV[i%6][dnum%MA]=(data0*65536+data1*256+data2)/5084; | |
wait_us(800);//WaitいれないとCH切り替えできない | |
//pc.printf("==============%4.1f,%x,%x,%x,%4.4f\n\r",mV,data0,data1,data2,t.read()); | |
//pc.printf("mV[%d][%d]=%5.2f\n\r",i%6,dnum%MA,mV[i%6][dnum%MA]); | |
if (i%6==0) | |
{ | |
mV0sum=0; | |
mV1sum=0; | |
mV2sum=0; | |
mV3sum=0; | |
mV4sum=0; | |
mV5sum=0; | |
for(j=0;j<MA;j++) | |
{ | |
mV0sum=mV0sum+mV[0][j]; | |
mV1sum=mV1sum+mV[1][j]; | |
mV2sum=mV2sum+mV[2][j]; | |
mV3sum=mV3sum+mV[3][j]; | |
mV4sum=mV4sum+mV[4][j]; | |
mV5sum=mV5sum+mV[5][j]; | |
} | |
mV0=mV0sum/MA; | |
mV1=mV1sum/MA; | |
mV2=mV2sum/MA; | |
mV3=mV3sum/MA; | |
mV4=mV4sum/MA; | |
mV5=mV5sum/MA; | |
//pc.printf("%d,%x,%x:,%4.0f,%4.0f,%4.0f,%4.0f,%4.0f,%4.0f,%4.3f\n\r",i,sdata_1,sdata0,mV[1],mV[2],mV[3],mV[4],mV[5],mV[0],t.read()); | |
pc.printf("%4.3f,%4.3f,%4.3f,%d,%d\n\r",mV1,mV2,mV3,dnum,t.read_ms()); | |
dnum++;//data set counter | |
//wait_ms(50); | |
}// i%6==0 | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment