#ifndef __I2C_H #define __I2C_H #include "main.h" //*****地址定义***********************************************************// #define LTC2451_ADDR 0x14 #define LTC2451_ADDR_W (LTC2451_ADDR << 1) #define LTC2451_ADDR_R ((LTC2451_ADDR << 1) | 1) //*****IO操作函数***********************************************************// #define IIC_SCL_SET gpio_bit_set(GPIOB, GPIO_PIN_10) #define IIC_SCL_RET gpio_bit_reset(GPIOB, GPIO_PIN_10) #define IIC_SDA_SET gpio_bit_set(GPIOB, GPIO_PIN_11) #define IIC_SDA_RET gpio_bit_reset(GPIOB, GPIO_PIN_11) #define READ_SDA gpio_input_bit_get(GPIOB, GPIO_PIN_11) //*****IO方向设置***********************************************************// #define SDA_OUT() \ { \ rcu_periph_clock_enable(RCU_GPIOB); \ gpio_mode_set(GPIOB, GPIO_MODE_OUTPUT, GPIO_PUPD_PULLUP, GPIO_PIN_7); \ gpio_output_options_set(GPIOB, GPIO_OTYPE_PP, GPIO_OSPEED_50MHZ, GPIO_PIN_7); \ } #define SDA_IN() \ { \ rcu_periph_clock_enable(RCU_GPIOB); \ gpio_mode_set(GPIOB, GPIO_MODE_INPUT, GPIO_PUPD_PULLUP, GPIO_PIN_7); \ } //*****IIC所有操作函数***********************************************************// void I2C_Init(void); //初始化IIC的IO口 void IIC_Start(void); //发送IIC开始信号 void IIC_Stop(void); //发送IIC停止信号 uint8_t IIC_Wait_Ack(void); //IIC等待ACK信号 void IIC_Ack(void); //IIC发送ACK信号 void IIC_NAck(void); //IIC不发送ACK信号 void IIC_Send_Byte(uint8_t txd); //IIC发送一个字节 uint8_t IIC_Read_Byte(unsigned char ack); //IIC读取一个字节 uint8_t LTC2451_NewConv(void); uint8_t LTC2451_ReadAdc(uint16_t *adc_value); #endif