#include “QEI.h”
Serial pc(USBTX, USBRX);
SPI ad7193 (PB_15,PB_14,PB_13); //NUCLEO L432KC MOSI, MISO, SCLK
DigitalOut CS(PB_12); // Chip select
QEI wheel (PC_8,PC_6, NC, 600);
Timer t;
float len;
float len_1;
double dmV=0.196695;//μV換算
//===========AD 7193================================
//========AD 7193 Parameters===============================
int data,data0,data1,data2 ;
int sdata,sdata0,sdata1,mdata0,mdata1,mdata2,sdata_1;
int condata0,condata1,condata2;
int cReg0,cReg1;
double mV0;
double mV1;
//———-AD7193 SEtting———————
void AD7193_set()
{
CS=0;//Chip Selct Low設定
wait(1);
//set_AD7193();
//MODEレジスタへモード設定データ書き込み
ad7193.write(0x08);//MODEレジスタ書き込み指定
ad7193.write(0x08) ;//MODEレジスタ23-16bit書き込み=連続変換モード+InternalClock4.8MHz
ad7193.write(0x00) ;//MODEレジスタ15-8bit書き込み=デフォルトのまま
ad7193.write(0x01) ;//MODEレジスタ7-0bit書き込み=4800Hz設定
//mode書き込み確認
ad7193.write(0x48);//MODEレジスタ書き込み指定
mdata0=ad7193.write(0x00) ;//MODEレジスタ23-16bit書き込み=連続変換モード+InternalClock4.8MHz
mdata1=ad7193.write(0x00) ;//MODEレジスタ15-8bit書き込み=デフォルトのまま
mdata2=ad7193.write(0x00) ;//MODEレジスタ7-0bit書き込み=4800Hz設定
//pc.printf(“MAIN:mdata:%x,%x,%x\n\r”,mdata0,mdata1,mdata2);
//設定レジスタへ設定データ書き込み
ad7193.write(0x10);//設定レジスタ書き込み指定
ad7193.write(0x00) ;//設定レジスタ23-16bit書き込み=デフォルトのまま
ad7193.write(0x0f) ;//設定レジスタ15-8bit書き込み=1ch-4ch自動スキャン設定 AIN1+ AIN2-
ad7193.write(0x17) ;//設定レジスタ7-0bit書き込み=BUF Gain128
//Config書き込み確認
ad7193.write(0x50);//Configレジスタ書き込み指定
condata0=ad7193.write(0x00) ;//MODEレジスタ23-16bit書き込み=連続変換モード+InternalClock4.8MHz
condata1=ad7193.write(0x00) ;//MODEレジスタ15-8bit書き込み=デフォルトのまま
condata2=ad7193.write(0x00) ;//MODEレジスタ7-0bit書き込み=4800Hz設定
//pc.printf(“MAIN:mdata:%x,%x,%x,condata:%x,%x,%x\n\r”,mdata0,mdata1,mdata2,condata0,condata1,condata2);
}
//=——————————-AD 7193 setting finished——————————
int main() {
pc.baud(115200);
AD7193_set();
t.start();
while(1){
//MODEレジスタへモード設定データ書き込み
ad7193.write(0x08);//MODEレジスタ書き込み指定
ad7193.write(0x08) ;//MODEレジスタ23-16bit書き込み=連続変換モード+InternalClock4.8MHz
ad7193.write(0x00) ;//MODEレジスタ15-8bit書き込み=デフォルトのまま
ad7193.write(0x01) ;//MODEレジスタ7-0bit書き込み=4800Hz設定
//設定レジスタへ設定データ書き込み
ad7193.write(0x10);//設定レジスタ書き込み指定
ad7193.write(0x00) ;//設定レジスタ23-16bit書き込み=デフォルトのまま
ad7193.write(0x03) ;//設定レジスタ15-8bit書き込み=1ch3ch 自動スキャン設定 AIN1+ AIN2-
ad7193.write(0x17) ;//設定レジスタ7-0bit書き込み=BUF Gain128
wait_ms(1);//1msec以上WaitいれないとCH切り替えできない
//=====================0ch==================================
ad7193.write(0x58);
data0=ad7193.write(0x0);
data1=ad7193.write(0x0);
data2=ad7193.write(0x0);
mV0=((double)data0*65536+(double)data1*256+(double)data2)*dmV;
mV0=mV0/1000;
wait_ms(1);//1msec以上WaitいれないとCH切り替えできない
//==================1ch=====================================
ad7193.write(0x58);
data0=ad7193.write(0x0);
data1=ad7193.write(0x0);
data2=ad7193.write(0x0);
mV1=((double)data0*65536+(double)data1*256+(double)data2)*dmV;
mV1=mV1/1000;
wait_ms(1);//1msec以上WaitいれないとCH切り替えできない
//==================Encoder Counter==============================
len=-wheel.getPulses()*0.0288;
//=============================================================
pc.printf(“%4.0f,%4.0f,%4.2f,%d\n\r”, mV0,mV1,len,t.read_ms());
}
} |