Skip to content

Instantly share code, notes, and snippets.

@dj1711572002
Created June 25, 2020 15:20
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/f71c5f269a28630e1608fa319684f07e to your computer and use it in GitHub Desktop.
Save dj1711572002/f71c5f269a28630e1608fa319684f07e 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 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