基于STM32的ADS1115程序

 

#include "./bsp/bsp.h"

uint8_t Channel_Value;
uint8_t ShowChannel[] = "No.- Channel:";

uint16_t D_ADS=0; 		//ת»»µÄÊý×ÖÁ¿
uint16_t Config=0;
uint8_t Writebuff[4]={0},Readbuff[3]={0};
uint32_t Result[2]={0}; 
uint16_t Format[5]={0};  //ת»»µÄÊý×ÖÁ¿×ª»»³ÉÊ®½øÖÆ

/***************¹¦ÄÜ:ADS1115¶Ë¿Ú³õʼ»¯****************/
void ADS1115_GPIO_Init(void)
{
	GPIO_InitTypeDef  GPIO_InitStructure;
	RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE);  //¸´ÓÃIO¿ÚʱÖÓ
	GPIO_PinRemapConfig(GPIO_Remap_SWJ_Disable, ENABLE);
	GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable , ENABLE);
	
	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);	//ʹÄÜPB¶Ë¿ÚʱÖÓ
//	GPIO_InitStructure.GPIO_Pin = GPIO_Pin_3|GPIO_Pin_2;	//SCL-->PA.3, SDA-->PA.2 ¶Ë¿ÚÅäÖÃ
	GPIO_InitStructure.GPIO_Pin = GPIO_Pin_3|GPIO_Pin_4;
	GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; 		 	//ÍÆÍìÊä³ö
	GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;		 	//IO¿ÚËÙ¶ÈΪ50MHz
	GPIO_Init(GPIOB, &GPIO_InitStructure);					 			//¸ù¾ÝÉ趨²ÎÊý³õʼ»¯GPIOB
	PBout(4)=1;	PBout(3)=1;                               //PA.2, PA.3 Êä³ö¸ß
}

void ADS1115_GPIO_IN(void)
{
	GPIO_InitTypeDef  GPIO_InitStructure;
	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);	//ʹÄÜPA¶Ë¿ÚʱÖÓ
	GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2;				 			//SDA-->PB.9 ¶Ë¿ÚÅäÖÃ
	GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU; 		 		//ÉÏÀ­ÊäÈë
	GPIO_Init(GPIOA, &GPIO_InitStructure);					 			//¸ù¾ÝÉ趨²ÎÊý³õʼ»¯GPIOB.9
}

void ADS1115_GPIO_OUT(void)
{
	GPIO_InitTypeDef  GPIO_InitStructure;
	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);	//ʹÄÜPA¶Ë¿ÚʱÖÓ
	GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2;				 			//SDA-->PB.9 ¶Ë¿ÚÅäÖÃ
	GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; 		 	//ÍÆÍìÊä³ö
	GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;		 	//IO¿ÚËÙ¶ÈΪ50MHz
	GPIO_Init(GPIOA, &GPIO_InitStructure);					 			//¸ù¾ÝÉ趨²ÎÊý³õʼ»¯GPIOB.9
}

/*******************************************
º¯ÊýÃû³Æ£ºStart
¹¦    ÄÜ£ºÍê³ÉIICµÄÆðʼÌõ¼þ²Ù×÷
²Î    Êý£ºÎÞ
·µ»ØÖµ  £ºÎÞ
********************************************/
void Start(void)
{
	SCL=1;
	SDA=1;
	Delay_us(15);
	SDA=0;
	Delay_us(15);
	SCL=0;
	Delay_us(15);
}

/*******************************************
º¯ÊýÃû³Æ£ºStop
¹¦    ÄÜ£ºÍê³ÉIICµÄÖÕÖ¹Ìõ¼þ²Ù×÷
²Î    Êý£ºÎÞ
·µ»ØÖµ  £ºÎÞ
********************************************/
void Stop(void)
{ 
    SDA=0;
    Delay_us(15);
    SCL=1;
    Delay_us(15);
		SDA=1;
    Delay_us(15);
}
/*******************************************
º¯ÊýÃû³Æ£ºACK
¹¦    ÄÜ£ºÍê³ÉIICµÄÖ÷»úÓ¦´ð²Ù×÷
²Î    Êý£ºÎÞ
·µ»ØÖµ  £ºÎÞ
********************************************/
void ACK(void)
{
    SDA=0;
		Delay_us(1);
    SCL=1;
    Delay_us(15);
    SCL=0;
		Delay_us(15);
		SDA=1;
    Delay_us(15);
}
/*******************************************
º¯ÊýÃû³Æ£ºNACK
¹¦    ÄÜ£ºÍê³ÉIICµÄÖ÷»úÎÞÓ¦´ð²Ù×÷
²Î    Êý£ºÎÞ
·µ»ØÖµ  £ºÎÞ
********************************************/
void NACK(void)
{
	SDA=1;
	Delay_us(1);
	SCL=1;
	Delay_us(15);
	SCL=0;
	Delay_us(1);
	SDA=0;   
	Delay_us(15);
}
/**********¼ì²éÓ¦´ðÐźź¯Êý******************
Èç¹û·µ»ØֵΪ1ÔòÖ¤Ã÷ÓÐÓ¦´ðÐźţ¬·´Ö®Ã»ÓÐ
*******************************************
º¯ÊýÃû³Æ£ºCheck
¹¦    ÄÜ£º¼ì²é´Ó»úµÄÓ¦´ð²Ù×÷
²Î    Êý£ºÎÞ
·µ»ØÖµ  £º´Ó»úÊÇ·ñÓÐÓ¦´ð£º1--ÓУ¬0--ÎÞ
********************************************/
uint8_t Check(void)
{
    uint8_t slaveack;
    SDA=1;
    Delay_us(1);
    SCL=1;
//		ADS1115_GPIO_IN();	// SDAÉèÖÃΪÊäÈë
    Delay_us(15);
    slaveack = SDA_IN;   		//¶ÁÈëSDAÊýÖµ
    SCL=0;
    Delay_us(15);
//		ADS1115_GPIO_OUT();	// SDAÉèÖÃΪÊä³ö
	
    if(slaveack)    return FALSE;
    else            return TRUE;
}

/***************дÈëÒ»¸ö×Ö½Ú****************/
void Write_1_Byte(uint8_t DataByte)
{
	uint8_t i;

	for(i=0;i<8;i++)
	{
		if(DataByte&0x80)  //if((DataByte<

 

你可能感兴趣的:(基于STM32的ADS1115程序)