📄 ad7714.c
字号:
//-----------------------------------------------------------------------------
// AD7714.C
//-----------------------------------------------------------------------------
// AUTH: wjxiao
// DATE: 2006.3.27
//
// (1) AD7714应用程序
// (2) CPU: C8051F020
// (3) SPI0 查询方式
// (4) 硬件连接
// P0.0 - SCK (connected to SCK on EEPROM)
// P0.1 - MISO (connected to SI on EEPROM)
// P0.2 - MOSI (connected to SO on EEPROM)
// P0.3 - NSS (unconnected, but pulled high by on-chip pull-up resistor)
//-----------------------------------------------------------------------------
// Includes
//-----------------------------------------------------------------------------
#include <c8051f020.h> // SFR declarations
//======================================================================================
// SPI 写指令
//--------------------------------------------------------------------------------------
void SPI_Write(uchar dat)
{
// transmit read MSB-first
SPIF = 0; // transmit MSB of address
SPI0DAT = dat;
while (SPIF == 0);
}
//======================================================================================
// SPI 读一个字节
//--------------------------------------------------------------------------------------
uchar SPI_Read(void)
{
// initiate dummy transmit to read data
SPIF = 0;
SPI0DAT = 0xff;
while (SPIF == 0);
return SPI0DAT;
}
//======================================================================================
// AD7714 初始化
//--------------------------------------------------------------------------------------
sbit INT1 = P0^7;
uint AD7714_AD(char ch)
{
uint idata ad;
SPI_Write(0x58+ch);
while(!INT1);
while(INT1);
while(!INT1);
while(INT1);
ad = (SPI_Read())<<8;
ad += SPI_Read();
return ad;
}
void AD7714_Init(void)
{
char i,a,b;
INT1 = 1;
for(i=0;i<7;i++) // 五个通道相同
{
if(i==4 || i==5) continue;
SPI_Write(0x20 + i); // 设置滤波器高寄存器:16位数据、单极性
SPI_Write(0x81);
SPI_Write(0x30 + i); // 设置滤波器低寄存器:第一个凹口频率为50HZ
SPI_Write(0x80);
}
for(i=0;i<3;i++)
{
SPI_Write(0x10 + i); // 模式寄存器: 自校准
SPI_Write(0x28); // 增益=4
while(INT1);
while(!INT1);
}
/*
SPI_Write(0x12); // 模式寄存器: 自校准
SPI_Write(0x20); // 增益=1
while(INT1);
while(!INT1);
*/
SPI_Write(0x28);
a=SPI_Read();
SPI_Write(0x38);
b=SPI_Read();
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -