概述
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 示例功能的简要说明:
raw_i2c_polling_master 演示 I2C
主机
使用轮询
工作模式;raw_i2c_polling_slave 演示 I2C
从机
使用轮询
工作模式;raw_i2c_int_master 演示 I2C
主机
使用中断
工作模式;raw_i2c_int_slave 演示 I2C
从机
使用中断
工作模式;raw_i2c_dma_mode 演示使用 I2C
DMA
工作模式;
备注
要了解示例支持的芯片,请查看示例路径下的 README.md
文件。
API 参考
要详细了解和使用相关 API,请参阅 {SDK}\component\soc\amebaxxxx\fwlib\include\ameba_i2c.h
。