本文源码地址在:http://download.csdn.net/download/noticeable/9962029
IIC 通讯应该是当代比较常用的几种通讯方式之一,其无需特殊的IO接口,连线方式少,只有两条串行总线(SCL,SDA),用来完成数据传输。
本文重点测试相关的在esp32实现IIC通讯的完成,不涉及实际的传感器,在后面会有相应的传感器与esp32连接实现功能的文章,这里重点关注相关的IO配置及功能实现等,以此来学习相关API接口的配置方法。
本文源码可以分为以下几个部分:
PART1:
定义相关参数
1 #define DATA_LENGTH 512 /*!
2 #define RW_TEST_LENGTH 5 /*!
3
4 #define I2C_SLAVE_SCL_IO 26 /*!
5 #define I2C_SLAVE_SDA_IO 25 /*!
6 #define I2C_SLAVE_NUM I2C_NUM_0 /*!
7 #define I2C_SLAVE_TX_BUF_LEN (2*DATA_LENGTH) /*!
8 #define I2C_SLAVE_RX_BUF_LEN (2*DATA_LENGTH) /*!
9
10 #define I2C_MASTER_SCL_IO 19 /*!< gpio number for I2C master clock */
11 #define I2C_MASTER_SDA_IO 18 /*!< gpio number for I2C master data */
12 #define I2C_MASTER_NUM I2C_NUM_1 /*!< I2C port number for master dev */
13 #define I2C_MASTER_TX_BUF_DISABLE 0 /*!< I2C master do not need buffer */
14 #define I2C_MASTER_RX_BUF_DISABLE 0 /*!< I2C master do not need buffer */
15 #define I2C_MASTER_FREQ_HZ 100000 /*!< I2C master clock frequency */
16
17 #define ESP_SLAVE_ADDR 0x28 /*!< ESP32 slave address, you can set any 7bit value */
18 #define WRITE_BIT I2C_MASTER_WRITE /*!< I2C master write */
19 #define READ_BIT I2C_MASTER_READ /*!< I2C master read */
20 #define ACK_CHECK_EN 0x1 /*!< I2C master will check ack from slave*/
21 #define ACK_CHECK_DIS 0x0 /*!< I2C master will not check ack from slave */
22 #define ACK_VAL 0x0 /*!< I2C ack value */
23 #define NACK_VAL 0x1 /*!< I2C nack value */
这里主要定义了相关引脚分批,从设备地址,