📄 ads1247.c
字号:
#include "msp430x24x.h"
#include "ads1247.h"
unsigned char S_value[4] = {0x01,0x00,0x30,0x07};
void delay_AD(int num)
{
int i;
for (i= 0; i < num ; i++)
_NOP();
}
void ADS_WriteByte(unsigned char WriteData)
{
unsigned char i;
ADS_CS_0;
for(i = 0 ; i < 8 ;i++)
{
if (WriteData & 0x80)
ADS_Din_1;
else
ADS_Din_0;
ADS_SCLK_1;
WriteData = WriteData << 1 ;
ADS_SCLK_0;
}
ADS_CS_1;
}
unsigned char ADS_ReadByte(void)
{
unsigned char i ;
unsigned char ReadData ;
ADS_CS_0;
ReadData = 0 ;
for(i = 0 ; i < 8 ; i++)
{
delay_AD(10);
ADS_SCLK_1;
ReadData = ReadData << 1;
ReadData |= (P2IN & ADS_Dout) >> 5;
delay_AD(10);
ADS_SCLK_0;
}
ADS_CS_1;
return(ReadData);
}
void ADS_Reset()
{
ADS_WriteByte(Reset);
delay_AD(3000);
}
void ADS_Sleep()
{
ADS_WriteByte(Sleep);
delay_AD(1000);
}
void ADS_Wakeup()
{
ADS_WriteByte(WakeUp);
ADS_SCLK_1;
_NOP();
ADS_SCLK_0;
delay_AD(1000);
}
void ADS_Init(void)
{
//Multiplexer Control Register 0
WriteReg_S(Reg_MUX0 | 0x40 , 0x00 , 0x01);
//Bias Voltage Register
WriteReg_S(Reg_VBias | 0x40 , 0x00 , 0x00);
//Multiplexer Control Register 1
WriteReg_S(Reg_MUX1 | 0x40 , 0x00 , 0x70); //0x30
//System Control Register 0
WriteReg_S(Reg_SYS0 | 0x40 , 0x00 ,0x78); //0x77
//IDAC Control Register 0
WriteReg_S(Reg_IDAC0 | 0x40 , 0x00 , 0x08);
}
char WaiteRDY(void)
{
unsigned int iint ;
iint = 0 ;
ADS_CS_0;
//while((P2IN & ADS_Dout) == 0x20);
while((P2IN && ADS_Dout) == 0x20);
ADS_CS_1;
return 0;
}
unsigned long ReadAdADSConversionData(void)
{
unsigned char iint = 0;
unsigned char i;
unsigned char WriteData = 0x12;
unsigned long ConvertData = 0;
while ((P2IN & ADS_Dout) == 0x20)
{
iint++;
}
ADS_CS_0;
for(i = 0 ; i < 8 ;i++)
{
if (WriteData & 0x80)
ADS_Din_1;
else
ADS_Din_0;
ADS_SCLK_1;
WriteData = WriteData << 1 ;
ADS_SCLK_0;
}
ADS_Din_1;
for(i = 0 ; i < 24 ; i++)
{
ADS_SCLK_1;
ConvertData = ConvertData << 1;
ConvertData |= (P2IN & ADS_Dout) >> 5;
ADS_SCLK_0;
}
ADS_CS_1;
return(ConvertData);
}
unsigned char ReadReg(unsigned char Address,unsigned char number)
{
unsigned char i ;
unsigned char ReadData = 0;
ADS_CS_0;
for(i = 0 ; i < 8 ;i++)
{
if (Address & 0x80)
ADS_Din_1;
else
ADS_Din_0;
ADS_SCLK_1;
Address = Address << 1 ;
ADS_SCLK_0;
}
for(i = 0 ; i < 8 ;i++)
{
if (number & 0x80)
ADS_Din_1;
else
ADS_Din_0;
ADS_SCLK_1;
number = number << 1 ;
ADS_SCLK_0;
}
ADS_Din_1;
for(i = 0 ; i < 8 ; i++)
{
ADS_SCLK_1;
ReadData = ReadData << 1;
ReadData |= (P2IN & ADS_Dout) >> 5;
ADS_SCLK_0;
}
ADS_CS_1;
return(ReadData);
}
void WriteReg_S(unsigned char Address,unsigned char number,unsigned char data)
{
unsigned char i ;
ADS_CS_0;
for(i = 0 ; i < 8 ;i++)
{
if (Address & 0x80)
ADS_Din_1;
else
ADS_Din_0;
ADS_SCLK_1;
Address = Address << 1 ;
ADS_SCLK_0;
}
for(i = 0 ; i < 8 ;i++)
{
if (number & 0x80)
ADS_Din_1;
else
ADS_Din_0;
ADS_SCLK_1;
number = number << 1 ;
ADS_SCLK_0;
}
for(i = 0 ; i < 8 ;i++)
{
if (data & 0x80)
ADS_Din_1;
else
ADS_Din_0;
ADS_SCLK_1;
data = data << 1 ;
ADS_SCLK_0;
}
ADS_Din_1;
ADS_CS_1;
}
void WriteReg_S_4(unsigned char Address,unsigned char number)
{
unsigned char i,j;
unsigned char Tmp;
ADS_CS_0;
for(i = 0 ; i < 8 ;i++)
{
if (Address & 0x80)
ADS_Din_1;
else
ADS_Din_0;
ADS_SCLK_1;
Address = Address << 1 ;
ADS_SCLK_0;
}
Tmp = number;
for(i = 0 ; i < 8 ;i++)
{
if (Tmp & 0x80)
ADS_Din_1;
else
ADS_Din_0;
ADS_SCLK_1;
Tmp = Tmp << 1 ;
ADS_SCLK_0;
}
for (j = 0; j < number; j++)
{
Tmp = S_value[j];
for(i = 0 ; i < 8 ;i++)
{
if (Tmp & 0x80)
ADS_Din_1;
else
ADS_Din_0;
ADS_SCLK_1;
Tmp = Tmp << 1 ;
ADS_SCLK_0;
}
}
ADS_Din_1;
ADS_CS_1;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -