44 lines
2.1 KiB
C
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
|