本人也是stm32的初学者,以下代码也是由csdn的其它码友改编过来,认为自己学到的想要分享给大家,既要学会接受,也要学会给予,一下代码的引脚等使用的是野火stm32f103rc_mini版的板子与ADS1115模块进行结合。
若有疑问,欢迎大家一起讨论。
(由于挺久了,找不到原作者了,若有码友发现类似,请告知我,谢谢)
主函数:这里的第二个头文件里其实就是包含stm32的i2c和串口等的头文件(因为为了方便自己写程序,将很多文件的头文件都放在这里面了,码友们可以自己根据需求将自己的头文件加上去)
#include "stm32f10x.h"
#include "stm32f10x_gcy.h"
float ads1115_buffer[4];
int main(void)
{
i2c_CfgGpio();
USART_Config();
while (1)
{
for (int i=0;i<4;i++)
{
ads1115_buffer[i] = ADS1115_Read_average_ADC(i,ADS1115_PGA_4096);//,ADS1115_PGA_4096
printf("\r\n AIN%d=%f\r\n",i,ads1115_buffer[i]);
}
printf("\r\n 666\r\n");
Delay_ms(1000);// 延时100毫秒
}
}
ADS1115的.h文件
#ifndef _ADS1115_H
#define _ADS1115_H
#define ADS1115_DEV_ADDR_GND 0x90//ADDR接GND,ADS1115地址
#define ADS1115_DEV_ADDR_VDD 0x92//ADDR接VDD,ADS1115地址
#define ADS1115_DEV_ADDR_SDA 0x94//ADDR接SDA,ADS1115地址
#define ADS1115_DEV_ADDR_SCL 0x96//ADDR接SCL,ADS1115地址
#define ADS1115_DEV_ADDR_Write_GND 0x90//ADDR接GND,ADS1115地址
#define ADS1115_DEV_ADDR_Read_GND 0x91//ADDR接GND,ADS1115地址
#define ADS1115_PGA_0256 0x0a //110//111
#define ADS1115_PGA_0512 0x08
#define ADS1115_PGA_1024 0x06
#define ADS1115_PGA_2048 0x04
#define ADS1115_PGA_4096 0x02
#define ADS1115_PGA_6144 0x00
#define ADS1115_Conversion 0x00 //转换寄存器地址
#define ADS1115_Config 0x01 //配置寄存器地址
#define ADS1115_Hi_thresh 0x02 //高位预值寄存器地址
#define ADS1115_Lo_thresh 0x03 //低位预值寄存器地址
//#define ADS1115_Config_H_function 0x82 //配置寄存器的功能设置(高8位)(+-4.096V,断电单击模式)
//#define ADS1115_Config_L_function 0x83 //配置寄存器的功能设置(低8位) (每秒采样128次,禁用比较器功能,并将警报/RDY针处于高状态。)
#define ADS1115_I2C_WR 0 /* 写控制bit */