Skip to content

Instantly share code, notes, and snippets.

@dj1711572002
Created July 3, 2020 07:22
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save dj1711572002/3b7006987f844cf19666e81685fe7f3d to your computer and use it in GitHub Desktop.
Save dj1711572002/3b7006987f844cf19666e81685fe7f3d to your computer and use it in GitHub Desktop.
// 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