OpenHarmony API-I2cInit()设置 I2C 波特率

介绍

设置 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模块),通信速度更快。

返回值:

  • 成功:返回 WIFI_IOT_SUCCESS(通常定义为 0 )。
  • 失败:返回错误码

以上都定义在 wifiiot_errno.h 中,如I2C总线未初始化、通信超时等

说明

函数的核心作用

  1. 初始化硬件寄存器:配置I2C总线的时钟源、数据引脚(SDA)和时钟引脚(SCL)的电气属性(如拉电阻、输出模式等)。
  2. 设置通信速率:通过配置I2C控制器的分频器,使SCL(时钟线)的频率符合指定速率(400kbps),确保与外部设备的时钟同步。
  3. 使能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外设操作的前置步骤。


原文出处:/show_1GW203IxGs6t.html