应变片、电桥相关的设计资料
STM32相关的程序
#define AD7190_CS_H GPIO_SetBits(GPIOD,GPIO_Pin_0)
#define AD7190_CS_L GPIO_ResetBits(GPIOD,GPIO_Pin_0)
#define AD7190_SCLK_H GPIO_SetBits(GPIOD,GPIO_Pin_1)
#define AD7190_SCLK_L GPIO_ResetBits(GPIOD,GPIO_Pin_1)
#define AD7190_DIN_H GPIO_SetBits(GPIOD,GPIO_Pin_2)
#define AD7190_DIN_L GPIO_ResetBits(GPIOD,GPIO_Pin_2)
#define AD7190_DOUT GPIO_ReadInputDataBit(GPIOD,GPIO_Pin_4)
void AD7190_INIT(void)
{
Delay(100);
AD7190_CS_L;
AD7190Write(0x60);
AD7190_ID=AD7190Read_Byte();//读取AD7190 ID = 0xX4
AD7190_CS_H;
Delay(100);
AD7190_CS_L;
AD7190Write(0x10);//向配置寄存器写入24Bit配置数据
AD7190Write(0x00);//CON23-CON16
AD7190Write(0x02);//CON15-CON8
AD7190Write(0x07);//CON7-CON00x00:GAIN=1;
//0x03:GAIN=8;
//0x04:GAIN=16;
//0x07:GAIN=128; (GAIN=128时,输入范围为+-39.06mV)
AD7190_CS_H;
Delay(100);
AD7190_CS_L;
AD7190Write(0x08);//向模式寄存器写入24Bit配置数据
AD7190Write(0x08);//MR23-MR16
AD7190Write(0x00);//MR15-MR8
AD7190Write(0x3F);//MR7-MR0fs(MR0-MR9) = 0x00ff = 255,即数据输出速率为4920/255=19.2sps
//0x00 0xff:19.2sps
//0x00 0x3f:78sps
//0x00 0x1f:164sps
//0x00 0x0f:328sps
//0x00 0x05:984sps
AD7190_CS_H;
}
void read_reg(void)//读取配置寄存器与模式寄存器函数,用于验证配置数据是否正确写入
{
//读取3Byte配置寄存器数据
Delay(100);
AD7190_CS_L;
AD7190Write(0x50);//write communication register 0x50 to control the progress to read configuration register
AD7190_CS_H;
Delay(100);
AD7190_CS_L;
conf_reg=AD7190Read_Byte();
conf_reg=AD7190Read_Byte();
conf_reg=AD7190Read_Byte();
AD7190_CS_H;
//读取3Byte模式寄存器数据
Delay(100);
AD7190_CS_L;
AD7190Write(0x48);//write communication register 0x50 to control the progress to read configuration register
AD7190_CS_H;
Delay(100);
AD7190_CS_L;
mode_reg=AD7190Read_Byte();
mode_reg=AD7190Read_Byte();
mode_reg=AD7190Read_Byte();
AD7190_CS_H;
}
void AD7190Write(uint8_t Data)
{
uint8_t data;
data=Data;
for(uint8_t i=0;i<8;i++)
{
AD7190_SCLK_L;
if(data&0x80)
AD7190_DIN_H;
else
AD7190_DIN_L;
Delay(100);
AD7190_SCLK_H;
Delay(100);
data<<=1;
}
}
uint32_t AD7190Read(void)
{
uint32_t DATA;
DATA=0;
for(uint8_t i=0;i<24;i++)
{
DATA<<=1;
AD7190_SCLK_L;
Delay(50);
if(AD7190_DOUT)
DATA++;
AD7190_SCLK_H;
Delay(50);
}
Delay(100);
return DATA;
} uint8_t AD7190Read_Byte(void)
{
uint8_t DATA;
DATA=0;
for(uint8_t i=0;i<8;i++)
{
DATA<<=1;
AD7190_SCLK_L;
Delay(100);
if(AD7190_DOUT)
DATA++;
AD7190_SCLK_H;
Delay(100);
}
Delay(100);
return DATA;
} void AD7190_Reset(void)
{
AD7190_CS_L;
AD7190_DIN_H;
for(uint8_t a=0;a<50;a++)//提供大于40个写操作,复位AD7190
{
AD7190_SCLK_L;
Delay(100);
AD7190_SCLK_H;
Delay(100);
}
AD7190_CS_H;
}