logo资料库

ADS1115 STM32 程序.doc

第1页 / 共5页
第2页 / 共5页
第3页 / 共5页
第4页 / 共5页
第5页 / 共5页
资料共5页,全文预览结束
#include "stm32f10x_lib.h" #include "ads1115.h" //#include "ap_i2c.h" static void Confige1115 (unsigned char port); static void PointRegister (void); static u16 ReadData (unsigned char chn, unsigned char cnt); unsigned char WriteIntBuf[4], WritepointBuf[2], count = 6,ReadBuffer[64];; void delay (unsigned int delay) { while(delay--); } : Confige1115 : 延迟时间 : None : None : None :获取 ADS1115 模拟转换结果 /****************************************************************************** * * Function Name * Description * Input * Output * Return * Attention ******************************************************************************* / u16 float dianya; float Get_ATOD (unsigned char channel,unsigned char cnt) { data_get; static unsigned char chn; chn = channel; Confige1115(channel); delay(1000); PointRegister(); delay(1000); data_get=ReadData(chn,cnt); delay(1000); if(data_get>=0x8000) dianya=((float)(0xffff-data_get)/32768.0)*4.096; else dianya=((float)data_get/32768.0)*4.096; return dianya; } /****************************************************************************** * * Function Name : Confige1115
: 延迟时间 : None : None : None :配置 ADS1115 * Description * Input * Output * Return * Attention ******************************************************************************* / static void Confige1115 (unsigned char port) { static unsigned char chnel, i; switch (port) { case 0: chnel=0xC2; //0 通道 //1 通道 //2 通道 //3 通道 break; case 1: chnel=0xD2; break; case 2: chnel=0xE2; break; case 3: chnel=0xF2; break; default: break; } WriteIntBuf[0] = CMD_Write;//0x90 WriteIntBuf[1] = CMD_CONF_REG;//0x01 WriteIntBuf[2] = chnel;// tongdao WriteIntBuf[3] = CONF_L;//0xe3 if(!(TWI_START())) { for(i=0;i<4;i++) { TWI_SendByte(WriteIntBuf[i]); delay(20); } } TWI_STOP();
} /****************************************************************************** * * Function Name * Description * Input * Output * Return * Attention ******************************************************************************* / static void PointRegister (void) { : PointRegister : 延迟时间 : None : None : None :指向 ADS1115 指针寄存器用于准备读取数据 //90 //00 unsigned char i; WritepointBuf[0] = CMD_Write; WritepointBuf[1] = CMD_POINT_REG; if(!(TWI_START())) { for(i=0;i<2;i++) { TWI_SendByte(WritepointBuf[i]); delay(20); } } TWI_STOP(); } /****************************************************************************** * * Function Name * Description * Input * Output * Return * Attention ******************************************************************************* / : I2C_delay : 延迟时间 : None : None : None : CH1 PA4 CH2 PA7 CH3 PA6 CH4 PA5 static u16 ReadData (unsigned char chn,unsigned char cnt) { u16 data_rece; switch(chn) {
case 0: //0 通道 if(!(TWI_START())) { if(count == 0xff) count = 6; TWI_SendByte(CMD_Read); delay(20); ReadBuffer[cnt * 8] = TWI_ReceiveByte(); TWI_SendACK(); ReadBuffer[(cnt * 8) + 1] = TWI_ReceiveByte(); TWI_SendACK(); TWI_STOP(); data_rece=ReadBuffer[cnt * 8]*256+ReadBuffer[(cnt * 8) + 1]; //ReadBuffer[56]|=(GPIO_ReadInputDataBit(GPIOA, GPIO_Pin_4) << count); } break; case 1: //1 通道 if(!(TWI_START())) { TWI_SendByte(CMD_Read); delay(20); ReadBuffer[(cnt * 8) + 2] = TWI_ReceiveByte(); TWI_SendACK(); ReadBuffer[(cnt * 8) + 3] = TWI_ReceiveByte(); TWI_SendACK(); TWI_STOP(); 3]; } break; case 2: data_rece=ReadBuffer[(cnt * 8) + 2]*256+ReadBuffer[(cnt * 8) + //ReadBuffer[57]|=(GPIO_ReadInputDataBit(GPIOA, GPIO_Pin_7) << count); //2 通道 if(!(TWI_START())) { TWI_SendByte(CMD_Read); delay(20); ReadBuffer[(cnt * 8) + 4] = TWI_ReceiveByte(); TWI_SendACK(); // I2C_delay(20);
ReadBuffer[(cnt * 8) + 5] = TWI_ReceiveByte(); TWI_SendACK(); TWI_STOP(); 4]*256+ReadBuffer[(cnt * 8) + 5]; //ReadBuffer[59]|=(GPIO_ReadInputDataBit(GPIOA, GPIO_Pin_5) << count); data_rece=ReadBuffer[(cnt * 8) + } break; case 3: //3 通道 if(!(TWI_START())) { TWI_SendByte(CMD_Read); delay(20); // I2C_delay(20); ReadBuffer[(cnt * 8) + 6] = TWI_ReceiveByte(); TWI_SendACK(); I2C_delay(20); // ReadBuffer[(cnt * 8) + 7] = TWI_ReceiveByte(); TWI_SendACK(); TWI_STOP(); 6]*256+ReadBuffer[(cnt * 8) + 7]; //ReadBuffer[58]|=(GPIO_ReadInputDataBit(GPIOA, GPIO_Pin_6) data_rece=ReadBuffer[(cnt * 8) + << count--); } break; default: break; } } return data_rece;
分享到:
收藏