Job_SignsPads/STM32/Code/STM32F405/Application/i2c.h
2025-04-22 10:29:37 +08:00

44 lines
2.1 KiB
C

#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