GPIO模拟I2C应用设计说明书 1 简介 1.1 目的 介绍I2C的特性,工作原理以及通过GPIO(GeneralPu rpose Inpu t /Ou tpu t)模拟I2C总线的时序实现数据传输;该文档描述的设计思想可供GPIO驱动开发者进行设计参考。本文以Hi3510为例,通过具体的应用实例来描述GPIO模拟I2C实现数据传输,本文的读者假定是对GPIO的特点以及工作方式等非常熟悉,涉及到GPIO的内容请参考相关的文档。 2 I2C 2.1 概述 I2C总线(The Inter-Integrated Circu it)是一种通用的串行总线,是用于IC器件之间连接的二线制总线。他通过串行数据或者地址线(Serial Data Line,SDA)及串行时钟线(Serial ClockLine,SCL)两线在连接到总线上的器件之间传送信息,并根据地址识别每个器件。一个或多个微控制器以及外围器件可以通过I2C总线接口非常方便的连接在一起构成系统。这种总线结构的连线和连接引脚少,器件间总线简单。结构紧凑,因此其构成系统的成本较低;并且在总线上增加器件不会影响系统的正常工作,所有的IC器件共用一套总线,因此其系统修改和可扩展性好。即使有不同时钟速度的器件连接到总线上,时间同步机制也能够很方便地确定总线时钟,在Hi3510中,I2C仅支持Master功能 ,遵 守I2C总线协议2.1版本,在Hi3510中可用于Video Encoder、Video Decoder、Digital Camera的控制接口。 2.2 特点 I2C接口有以下特点: I2C接口在I2C总线上可以作为接收器,也可以作为发送器,具体由数据的传输方向确定 支持标准传输模式和快速传输模式 提供TX FIFO 、RX FIFO,支持DMA数据传输 支持中断上报和初始化中断状态 ,屏蔽后中断状态的查询 2.3 信号描述 本节描述了I2C单元的输入输出管脚信号,如下表所示: 2.4 工作原理 I2C总线是由数据线SDA和时钟线SCL构成的串行总线,可发送和接收数据。每个连接到总线的器件都可以通过惟一的地址与主机通讯,主机可以作为主机发送器或主机接收器。是一个真正的多主机总线 ,如果两个或更多主机同时初始化,数据传输可以通过冲突检测和仲裁防止数据被破坏。串行的8位双向数据传输位速率在标准模式下可达100kb/s,快速模式下可达400kb/s,高速模式下可达3.4Mb/s。 I2C 总线在传送数据过程中共有3 种特殊的电平变换情况,他们分别是:起始(start)、停止(stop)和响应(ack)。 当 SCL 为高电平时,SDA 由高电平向低电平跳变,这个表示起始条件;当 SCL 是高电平时,SDA 线由低电平向高电平跳变表示停...