作为一个32的新手,选择STM32Cubemx是一个非常好的选择,cubermx能够帮助新手快速初始化使用到的外设、GPIO等,大大缩短了我们的开发时间。同时,软件不仅能配置STM32外设,还能进行第三方软件系统的配置;话不多说直接上代码:
ads1118.h
#ifndef __ADS1118_H
#define __ADS1118_H
#include "sys.h"
#include "stm32f1xx_hal.h"
//端口定义
#define CONFIG_VALUE 0X408B //AIN0-AIN1 4.096 128sps pull on DOUT
#define SCLK PCout(12) //ads1118时钟引脚
#define MOSI PCout(11) //ads1118 DIN引脚
#define CS PCout(8) //ads1118 CS引脚
#define MISO PCout(10) //ads1118 DOUT/DRDY引脚
#define READ_MISO PCin(10)
#define SCLK_H SCLK=1
#define SCLK_L SCLK=0
/*单片机为主机*/
#define MOSI_H MOSI=1 //主机出从机入
#define MOSI_L MOSI=0
#define MISO_H MISO=1 //主机入从机出
#define MISO_L MISO=0
#define CS_H CS=1
#define CS_L CS=0
//单次转换开始
#define ADS1118_CONFIG_SS_START_MASK 0x8000
#define ADS1118_CONFIG_SS_START_ON 0x8000 //开始单次转换
#define ADS1118_CONFIG_SS_START_OFF 0x0000 // 无效
//输入多路复用器配置
#define ADS1118_CONFIG_MUX_MASK 0x7000
#define ADS1118_CONFIG_MUX_DIFF_0_1 0x0000 //AINP is AIN0 and AINN is AIN1 //差分
#define ADS1118_CONFIG_MUX_DIFF_0_3 0x1000 //AINP is AIN0 and AINN is AIN3
#define ADS1118_CONFIG_MUX_DIFF_1_3 0x2000 //AINP is AIN1 and AINN is AIN3
#define ADS1118_CONFIG_MUX_DIFF_2_3 0x3000 //AINP is AIN2 and AINN is AIN3
#define ADS1118_CONFIG_MUX_SINGLE_0 0x4000 //AINP is AIN0 and AINN is GND//单端
#define ADS1118_CONFIG_MUX_SINGLE_1 0x5000 //AINP is AIN1 and AINN is GND
#define ADS1118_CONFIG_MUX_SINGLE_2 0x6000 //AINP is AIN2 and AINN is GND
#define ADS1118_CONFIG_MUX_SINGLE_3 0x7000 //AINP is AIN3 and AINN is GND
//可编程增益放大器配置
#define ADS1118_CONFIG_PGA_MASK 0x0E00 //FSR is ±0.256 V
#define ADS1118_CONFIG_PGA_6_144V 0x0000 //FSR is ±6.144 V
#define ADS1118_CONFIG_PGA_4_096V 0x0200 //FSR is ±4.096 V
#define ADS1118_CONFIG_PGA_2_048V 0x0400 //FSR is ±2.048 V
#define ADS1118_CONFIG_PGA_1_024V 0x0600 //FSR is ±1.024 V
#define ADS1118_CONFIG_PGA_0_512V 0x0800 //FSR is ±0.512 V
#define ADS1118_CONFIG_PGA_0_256V 0x0A00 //FSR is ±0.25