📄 a.c
字号:
#include "Board.h"
#include "AD7730.h"
//======================================
void AD7730_Reset(void)
{
MCU_NRST=1;
MCU_NRST=0;
MCU_NRST=1;
return;
}
void AD7730_WrBytes(unsigned char bBytes,unsigned char *pData)
{
unsigned char idata bTmp,bCt,u;
MCU_SCK=0;
MCU_SCS=0;
for (u=0;u<bBytes;u++) {
bTmp=pData[u];
for (bCt=0;bCt<8;bCt++) {
MCU_SCK=1;
if (bTmp&0x80) {
MCU_DOUT=1;
}
else {
MCU_DOUT=0;
}
MCU_SCK=0;
bTmp=bTmp<<1;
}
}
MCU_SCS=1;
return;
}
void AD7730_RdBytes(unsigned char bBytes,unsigned char *pData)
{
unsigned char idata bCt,bTmp,u;
MCU_SCK=0;
MCU_DIN=1;
MCU_SCS=0;
for (u=0;u<bBytes;u++) {
bTmp=0;
for (bCt=0;bCt<8;bCt++) {
MCU_SCK=1;
if (MCU_DIN) {
bTmp++;
}
if (bCt!=7) {
bTmp=bTmp<<1;
}
MCU_SCK=0;
}
pData[u] = bTmp;
}
MCU_SCS=1;
return ;
}
void ResetInterface(void)
{
AD7730_WrBytes(1,0xFF);
AD7730_WrBytes(1,0xFF);
AD7730_WrBytes(1,0xFF);
AD7730_WrBytes(1,0xFF);
return;
}
unsigned char SingleRead8BitsReg(unsigned char bAdr)
{
unsigned char idata bTmp;
if (bAdr>7) {
bAdr=7;
}
bTmp=COMM_MASK & (bAdr|COMM_SINGLERD);
AD7730_WrBytes(1,&bTmp); //写通讯寄存器
AD7730_RdBytes(1,&bTmp);
return bTmp;
}
unsigned int SingleRead16BitsReg(unsigned char bAdr)
{
unsigned char idata bTmp[2];
unsigned int idata iTmp;
if (bAdr>7) {
bAdr=7;
}
bTmp[0]=COMM_MASK&(bAdr|COMM_SINGLERD);
AD7730_WrBytes(1,bTmp); //写通讯寄存器
AD7730_RdBytes(2,bTmp);
iTmp=bTmp[1]<<8+bTmp[0];
return iTmp;
}
unsigned char StartContinuousRead(unsigned char bAdr)
{
unsigned char idata bTmp;
if (bAdr>7) {
bAdr=7;
}
bTmp=COMM_MASK&(bAdr|COMM_CONTRD);
AD7730_WrBytes(1,&bTmp); //写通讯寄存器
AD7730_RdBytes(1,&bTmp);
return bTmp;
}
void StopContinuousRead(unsigned char bAdr)
{
if (bAdr>7) {
bAdr=7;
}
AD7730_WrBytes(1,COMM_MASK&COMM_STOPCONT); //写通讯寄存器
return ;
}
//======================================
unsigned char AD_ReadStatusReg(void)
{
unsigned char idata bTmp;
bTmp=COMM_MASK & (0x00|COMM_SINGLERD);
AD7730_WrBytes(1,&bTmp); //写通讯寄存器
AD7730_RdBytes(1,&bTmp);
return bTmp;
}
//======================================
void AD_WriteModeReg(unsigned int iData)
{
unsigned char idata bTmp[2];
bTmp[0]=COMM_MASK&(ADREG_MODE|COMM_SINGLEWR);
AD7730_WrBytes(1,bTmp); //写通讯寄存器
iData = iData & 0xFFBF;
bTmp[0] = (unsigned char) (iData>>8);
bTmp[1] = (unsigned char) (iData&0x00FF);
AD7730_WrBytes(2,bTmp); //写通讯寄存器
return;
}
//======================================
unsigned int AD_ReadModeReg(void)
{
unsigned char idata bTmp[2];
unsigned int idata iDat;
bTmp[0] = COMM_MASK & (ADREG_MODE|COMM_SINGLERD);
AD7730_WrBytes(1,bTmp); //写通讯寄存器
AD7730_RdBytes(2,bTmp);
iDat = bTmp[0];
iDat = iDat<<8;
iDat = iDat + bTmp[1];
return iDat;
}
//======================================
unsigned long AD_ReadDataReg(bit fWL)
{
unsigned char idata bTmp[3]=0;
unsigned long idata lDat;
bTmp[0] = COMM_MASK & (ADREG_DATA|COMM_SINGLERD);
AD7730_WrBytes(1,bTmp); //写通讯寄存器
if (fWL==1) {
AD7730_RdBytes(3,bTmp);
lDat = bTmp[0];
lDat = lDat<<8;
lDat = lDat+bTmp[1];
lDat = lDat<<8;
lDat = lDat+bTmp[2];
}
else {
AD7730_RdBytes(2,bTmp);
lDat = bTmp[0];
lDat = lDat<<8;
lDat = lDat+bTmp[1];
}
return lDat;
}
//======================================
unsigned long AD_ReadFilterReg(void)
{
unsigned char idata bTmp[3];
unsigned long idata lDat;
bTmp[0] = COMM_MASK & (ADREG_FILTER|COMM_SINGLERD);
AD7730_WrBytes(1,bTmp); //写通讯寄存器
AD7730_RdBytes(3,bTmp);
lDat = bTmp[0];
lDat = lDat<<8;
lDat = lDat+bTmp[1];
lDat = lDat<<8;
lDat = lDat+bTmp[2];
return lDat;
}
//======================================
void AD_WriteFilterReg(unsigned long lData)
{
unsigned char idata bTmp[3];
bTmp[0]=COMM_MASK&(ADREG_FILTER|COMM_SINGLEWR);
AD7730_WrBytes(1,bTmp); //写通讯寄存器
lData = lData & 0xFFF33F;
bTmp[0] = (unsigned char) ((lData>>16)&0x0000FF);
bTmp[1] = (unsigned char) ((lData>>8)&0x0000FF);
bTmp[2] = (unsigned char) (lData & 0x0000FF);
AD7730_WrBytes(3,bTmp); //写通讯寄存器
return;
}
//======================================
unsigned char AD_ReadDACReg(void)
{
unsigned char idata bTmp;
bTmp = COMM_MASK & (ADREG_DAC|COMM_SINGLERD);
AD7730_WrBytes(1,&bTmp); //写通讯寄存器
AD7730_RdBytes(1,&bTmp);
return bTmp;
}
//======================================
void AD_WriteDACReg(unsigned char bData)
{
unsigned char idata bTmp;
bTmp = COMM_MASK & (ADREG_DAC|COMM_SINGLEWR);
AD7730_WrBytes(1,&bTmp); //写通讯寄存器
bData=bData&0x3F;
AD7730_WrBytes(1,&bData); //写通讯寄存器
return;
}
//======================================
unsigned long AD_ReadOffsetReg(void)
{
unsigned char idata bTmp[3];
unsigned long idata lDat;
bTmp[0] = COMM_MASK & (ADREG_OFFSET|COMM_SINGLERD);
AD7730_WrBytes(1,bTmp); //写通讯寄存器
AD7730_RdBytes(3,bTmp);
lDat = bTmp[0];
lDat = lDat<<8;
lDat = lDat+bTmp[1];
lDat = lDat<<8;
lDat = lDat+bTmp[2];
return lDat;
}
//======================================
void AD_WriteOffsetReg(unsigned long lData)
{
unsigned char idata bTmp[3];
bTmp[0] = COMM_MASK&(ADREG_OFFSET|COMM_SINGLEWR);
AD7730_WrBytes(1,bTmp); //写通讯寄存器
bTmp[0] = (unsigned char) ((lData>>16)&0x0000FF);
bTmp[1] = (unsigned char) ((lData>>8)&0x0000FF);
bTmp[2] = (unsigned char) (lData & 0x0000FF);
AD7730_WrBytes(3,bTmp); //写通讯寄存器
return;
}
//======================================
unsigned long AD_ReadGainReg(void)
{
unsigned char idata bTmp[3];
unsigned long idata lDat;
bTmp[0] = COMM_MASK & (ADREG_GAIN|COMM_SINGLERD);
AD7730_WrBytes(1,bTmp); //写通讯寄存器
AD7730_RdBytes(3,bTmp);
lDat = bTmp[0];
lDat = lDat<<8;
lDat = lDat+bTmp[1];
lDat = lDat<<8;
lDat = lDat+bTmp[2];
return lDat;
}
//======================================
void AD_WriteGainReg(unsigned long lData)
{
unsigned char idata bTmp[3];
bTmp[0]=COMM_MASK&(ADREG_GAIN|COMM_SINGLEWR);
AD7730_WrBytes(1,bTmp); //写通讯寄存器
bTmp[0] = (unsigned char) ((lData>>16)&0x0000FF);
bTmp[1] = (unsigned char) ((lData>>8)&0x0000FF);
bTmp[2] = (unsigned char) (lData & 0x0000FF);
AD7730_WrBytes(3,bTmp); //写通讯寄存器
return;
}
//======================================
void InitAD(void)
{
AD_WriteModeReg(0x11B0);
return;
}
//======================================
unsigned long InternalZeroCalibration(unsigned char bTimes)
{
unsigned char idata u;
unsigned long idata lTmp;
lTmp=0;
for(u=0;u<bTimes;u++) {
AD_WriteModeReg(0x9180);
Delay(1);
while(MCU_ADI);
lTmp=lTmp+AD_ReadOffsetReg();
}
return lTmp/bTimes;
}
//======================================
unsigned long InternalFullCalibration(unsigned char bTimes)
{
unsigned char idata u;
unsigned long idata lTmp;
lTmp=0;
for(u=0;u<bTimes;u++) {
AD_WriteModeReg(0xb180);
Delay(1);
while(MCU_ADI);
lTmp=lTmp+AD_ReadGainReg();
}
return lTmp/bTimes;
}
//======================================
unsigned long SystemZeroCalibration(unsigned char bTimes)
{
unsigned char idata u;
unsigned long idata lTmp;
lTmp=0;
for(u=0;u<bTimes;u++) {
AD_WriteModeReg(0xD180);
Delay(1);
while(MCU_ADI);
lTmp=lTmp+AD_ReadOffsetReg();
}
return lTmp/bTimes;
}
//======================================
unsigned long SystemFullCalibration(unsigned char bTimes)
{
unsigned char idata u;
unsigned long idata lTmp;
lTmp=0;
for(u=0;u<bTimes;u++) {
AD_WriteModeReg(0xF180);
Delay(1);
while(MCU_ADI);
lTmp=lTmp+AD_ReadGainReg();
}
return lTmp/bTimes;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -