概述

Ameba 系列产品支持飞利浦的 I2C 接口。I2C 是一种两线制的低速串行同步通信总线,支持多主多从。

功能特性

  • 两线接口:串行数据线(SDA)和串行时钟线(SCL)

  • 支持主机或从机工作模式

  • 可以发送或接收

  • FIFO 深度为 16,宽度为 12 位

  • 支持多主机,总线具有仲裁机制

  • 7 位或 10 位地址模式

  • 支持时钟拉伸

  • 支持 General Call, NULL DATA, START BYTE 等特殊通信格式

  • 参数可通过软件配置,包括 SDA 保持时间、从机地址、SCL 占空比等

  • 可编程数字噪声滤波器,用于消除 SDA 和 SCL 信号上的毛刺

  • 操作模式

    • 轮询模式

    • 中断模式

    • DMA 模式

速率模式

支持三种速率模式:

  • 标准模式(SS),最高 100Kbps

  • 快速模式(FS),最高 400Kbps

  • 高速模式(HS),最高 3.4Mbps

备注

有关 I2C 时钟频率和速率的更多信息,请参考<用户手册>的相关章节。

工作模式

根据需要,可配置 I2C 工作在以下三种模式:

轮询模式

这是最基础的工作模式。CPU 通过轮询 I2C 的状态寄存器,然后根据需要读写 FIFO 缓冲区,以实现数据的收发。

适用对实时性要求较低的小规模数据传输。

中断模式

当满足配置的触发条件时,I2C 硬件会发送中断信号通知 CPU 处理相关事务。

该方式无需频繁轮询,使得 CPU 占用率降低。

DMA 模式

通过 I2C 与 DMA 握手机制,由 DMA 控制器负责数据传输,减轻 CPU 的处理负担。适用于需处理大量数据的应用。

支持的芯片如下表所示。

Ameba SoC

RTL8721Dx

RTL8720E

RTL8726E

RTL8713E

RTL8730E

RTL8721F

支持状态

Y

N

N

N

N

Y

备注

有关使用 DMA 模式传输的注意事项,请参考 DMA 和缓存 介绍。

应用示例

SDK 提供了两类功能示例,帮助开发者了解和使用 I2C 功能:

  • mbed 示例

    • 路径:{SDK}\component\example\peripheral\mbed\I2C\{demo}

    • 展示如何在 mbed 环境中实现 I2C 控制。

  • raw 示例

    • 路径:{SDK}\component\example\peripheral\raw\I2C\{demo}

    • 展示如何在无抽象层的情况下直接控制 I2C。

以下是对 raw 示例功能的简要说明:

备注

要了解示例支持的芯片,请查看示例路径下的 README.md 文件。

API 参考

要详细了解和使用相关 API,请参阅 {SDK}\component\soc\amebaxxxx\fwlib\include\ameba_i2c.h