介绍
设置 I2C 波特率,能够与外部 I2C 设备(如 OLED 屏幕、传感器等)正常通信
头文件
base\iot_hardware\interfaces\kits\wifiiot_lite\wifiiot_i2c.h
#include "wifiiot_i2c.h"
定义
/**
* @brief Initializes an I2C device with a specified baud rate.
*
*
*
* @param id Indicates the I2C device ID.
* @param baudrate Indicates the I2C baud rate.
* @return Returns {@link WIFI_IOT_SUCCESS} if the operation is successful;
* returns an error code defined in {@link wifiiot_errno.h} otherwise.
* @since 1.0
* @version 1.0
*/
unsigned int I2cInit(WifiIotI2cIdx id, unsigned int baudrate);
参数解释:
- 第一个参数:
WIFI_IOT_I2C_IDX_0- 表示要初始化的I2C总线编号(ID)。
- Hi3861开发板通常集成了多路I2C硬件接口,
WIFI_IOT_I2C_IDX_0特指第0路I2C总线(最常用的默认总线)。 - 若开发板有多个I2C接口,可能还有
WIFI_IOT_I2C_IDX_1等,需根据硬件接线选择对应编号。
- 第二个参数:
(400*1000)- 表示I2C总线的通信速率,单位为 波特率。
400*1000即 400,000 bps(400kbps),是I2C通信的常用高速率模式(另一种常见速率是100kbps)。- 速率需与外部I2C设备(如OLED)支持的速率匹配:
- 若设备仅支持100kbps,此处需改为
100*1000,否则会通信失败。 - 400kbps适用于大多数现代I2C设备(包括主流OLED模块),通信速度更快。
- 若设备仅支持100kbps,此处需改为
返回值:
- 成功:返回
WIFI_IOT_SUCCESS(通常定义为0)。 - 失败:返回错误码
以上都定义在 wifiiot_errno.h 中,如I2C总线未初始化、通信超时等
说明
函数的核心作用
- 初始化硬件寄存器:配置I2C总线的时钟源、数据引脚(SDA)和时钟引脚(SCL)的电气属性(如拉电阻、输出模式等)。
- 设置通信速率:通过配置I2C控制器的分频器,使SCL(时钟线)的频率符合指定速率(400kbps),确保与外部设备的时钟同步。
- 使能I2C功能:激活I2C控制器,使其处于可收发数据的状态,为后续
I2cWrite/I2cRead等通信操作做好准备。
使用场景与注意事项
- 必须在通信前调用:使用
I2cWrite向OLED发送指令/数据前,必须先调用I2cInit初始化对应总线,否则会导致通信失败(返回错误码)。 - 速率匹配:若OLED模块的 datasheet 明确要求100kbps,需将参数改为
100*1000,否则可能出现数据传输错误(乱码或无响应)。 - 单总线只需初始化一次:同一I2C总线(如
WIFI_IOT_I2C_IDX_0)在程序运行中只需初始化一次,无需重复调用。
例子
I2cInit(WIFI_IOT_I2C_IDX_0, 400*1000);
作用是将Hi3861的第0路I2C总线初始化为400kbps的通信速率,使其能够与OLED等I2C设备建立正确的通信链路,是所有I2C外设操作的前置步骤。