STM8驱动ADS1230,ADS1230好像没有启动。读取的数据一直是1048575 DOUT一直都是高电平3.28V DS1230是5V供电,参考电压也是5V这是为啥?
程序如下:
//STM8驱动,从MSP430上移植过来的
#include "ads1230.h"
void int_ADS1230IO(void)//相关引脚初始化
{
GPIO_Init(GPIOC,GPIO_PIN_2, GPIO_MODE_OUT_PP_HIGH_FAST );
GPIO_Init(GPIOC,GPIO_PIN_3, GPIO_MODE_OUT_PP_HIGH_FAST );
GPIO_Init(GPIOC,GPIO_PIN_4, GPIO_MODE_IN_PU_NO_IT );
}
/*****************************************************************************
函数名称:ReadAD(void)
功 能:读AD
入口参数:无
返回参数:AD的转换结果,为long型
使用资源:无
******************************************************************************/
long ReadAD(void)
{
long ADdatatemp=0; //设置AD转换的初始值为0
for(unsigned char i = 0;i < 20;i ++) //获取20位数据
{
ADS_CLK_H();
Delayus();
ADS_CLK_L();
ADdatatemp = ADdatatemp << 1;
if(ADS_DATA_HI) //AD输出的数据位是1?
{
ADdatatemp++;
}
Delayus();
}
for(unsigned char i = 0;i < 4;i ++) //为下一次转换准备
{
ADS_CLK_H(); //ADS_OUT |= ADS_CLK_BIT;
Delayus();
ADS_CLK_L(); //ADS_OUT &= ~ADS_CLK_BIT;
Delayus();
}
AD_OFF();
return(ADdatatemp);
}
/*****************************************************************************
函数名称:void OffsetAD()
功 能:一个补偿函数,补偿AD1230的标尺误差
入口参数:无
返回参数:无
使用资源:无
******************************************************************************/
void OffsetAD()
{
while(ADS_DATA_HI); //AD数据转换好?(ADS_IN & ADS_DATA_BIT)//AD_CLK输出位1
for(unsigned char i = 0;i < 26;i ++) //发送26个CLK
{
ADS_CLK_H();
Delayus();
ADS_CLK_L();
Delayus();
}
}
/*****************************************************************************
函数名称:void InitADline(void)
功 能:初始化AD控制线
入口参数:无
返回参数:无
使用资源:port2
******************************************************************************/
void InitADline(void)
{
int_ADS1230IO();//相关引脚初始化
ADS_CLK_L(); // ADS_OUT &= ~ADS_CLK_BIT;
AD_OFF(); // ADS_OUT &= ~ADS_PD_BIT;
} |