单片机解密ADS1115,是一款高精度16位ADC芯片
测试平台STM32F407VET6
读取双通道电压,通道1是IN0脚对地电压 ,通道2是IN2脚对地电压
- 单片机解密#include "iic_2.h"
- 单片机解密#include "delay.h"
- //////////////////////////////////////////////////////////////////////////////////
- //初始化IIC
- void IIC_2_Init(void)
- {
- GPIO_InitTypeDef GPIO_InitStructure;
- RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOC, ENABLE);
-
- GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0 | GPIO_Pin_1;
- GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;
- GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
- GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;
- GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;
- GPIO_Init(GPIOC, &GPIO_InitStructure);
- IIC_2_SCL=1;
- IIC_2_SDA=1;
- }
- //产生IIC起始信号
- void IIC_2_Start(void)
- {
- IIC_2_SDA_OUT();
- IIC_2_SDA=1;
- IIC_2_SCL=1;
- delay_us(4);
- IIC_2_SDA=0;
- delay_us(4);
- IIC_2_SCL=0;
- }
- //产生IIC停止信号
- void IIC_2_Stop(void)
- {
- IIC_2_SDA_OUT();
- IIC_2_SCL=0;
- IIC_2_SDA=0;
- delay_us(4);
- IIC_2_SCL=1;
- IIC_2_SDA=1;
- delay_us(4);
- }
- //等待应答信号到来
- //返回值:1,接收应答失败
- // 0,接收应答成功
- u8 IIC_2_Wait_Ack(void)
- {
- u8 ucErrTime=0;
- IIC_2_SDA_IN();
- IIC_2_SDA=1;delay_us(1);
- IIC_2_SCL=1;delay_us(1);
- while(IIC_2_READ_SDA)
- {
- ucErrTime++;
- if(ucErrTime>250)
- {
- IIC_2_Stop();
- return 1;
- }
- }
- IIC_2_SCL=0;
- return 0;
- }
- //产生ACK应答
- void IIC_2_Ack(void)
- {
- IIC_2_SCL=0;
- IIC_2_SDA_OUT();
- IIC_2_SDA=0;
- delay_us(2);
- IIC_2_SCL=1;
- delay_us(2);
- IIC_2_SCL=0;
- }
- //不产生ACK应答
- void IIC_2_NAck(void)
- {
- IIC_2_SCL=0;
- IIC_2_SDA_OUT();
- IIC_2_SDA=1;
- delay_us(2);
- IIC_2_SCL=1;
- delay_us(2);
- IIC_2_SCL=0;
- }