2026-01-20 16:55:17 +08:00

92 lines
2.9 KiB
C
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#ifndef IIC_H
#define IIC_H
#include <stdint.h>
#include "driver/i2c.h"
#include "esp_log.h"
// 设备地址
#define Device_Address 0x6B
// I2C 主设备配置宏定义
// I2C 主设备时钟线连接的 GPIO 引脚号
#define I2C_MASTER_SCL_IO GPIO_NUM_4
// I2C 主设备数据线连接的 GPIO 引脚号
#define I2C_MASTER_SDA_IO GPIO_NUM_3
// I2C 主设备使用的 I2C 端口号
#define I2C_MASTER_NUM I2C_NUM_0
// I2C 主设备的时钟频率
#define I2C_MASTER_FREQ_HZ 400000
// I2C 主设备不使用发送缓冲区
#define I2C_MASTER_TX_BUF_DISABLE 0
// I2C 主设备不使用接收缓冲区
#define I2C_MASTER_RX_BUF_DISABLE 0
/**
* @brief 初始化 I2C 主设备
*
* 该函数用于对 I2C 主设备进行初始化配置,包括设置 I2C 模式、引脚、上拉电阻和时钟频率等,
* 并安装 I2C 驱动。
*
* @return esp_err_t 初始化结果ESP_OK 表示成功,其他值表示失败
*/
esp_err_t i2c_master_init(void);
/**
* @brief 向 8 位地址的寄存器写入一个字节数据
*
* 该函数通过 I2C 总线向指定地址的寄存器写入一个字节的数据。
*
* @param addr 寄存器的内部地址
* @param Data 要写入的数据
* @return unsigned char 操作结果1 表示成功0 表示失败
*/
unsigned char i2cwrite(unsigned char addr, unsigned char Data);
/**
* @brief 向 8 位地址的寄存器写入多个字节数据
*
* 该函数通过 I2C 总线向指定地址的寄存器开始写入指定长度的字节数据。
*
* @param addr I2C 设备内部寄存器地址
* @param length 要写入的数据长度
* @param Data 要写入的数据的地址
* @return unsigned char 操作状态1 表示成功0 表示失败
*/
unsigned char i2cwrites(uint8_t addr, uint8_t length, const uint8_t *Data);
/**
* @brief 从 8 位地址的寄存器读取一个字节数据
*
* 该函数通过 I2C 总线从指定地址的寄存器读取一个字节的数据。
*
* @param addr I2C 设备内部寄存器地址
* @param Data 存储读取数据的地址
* @return unsigned char 操作状态1 表示成功0 表示失败
*/
unsigned char i2cread(unsigned char addr, unsigned char *Data);
/**
* @brief 从 8 位地址的寄存器读取多个字节数据
*
* 该函数通过 I2C 总线从指定地址的寄存器开始读取指定长度的字节数据。
*
* @param addr I2C 设备内部寄存器地址
* @param length 要读取的数据长度
* @param Data 存储读取数据的地址
* @return unsigned char 操作状态1 表示成功0 表示失败
*/
unsigned char i2creads(unsigned char addr, unsigned char length, unsigned char *Data);
/**
* @brief 扫描 I2C 总线上的设备
*
* 该函数会遍历 I2C 地址范围0 - 127尝试与每个地址的设备进行通信
* 若通信成功则表示该地址存在设备,并输出相应的日志信息。
*
*/
void i2c_scan(void);
#endif // IIC_H