I2c

The Exynos 4412 SCP Reduced Instruction Set Computer (RISC) microprocessor supports four multi-master
Inter-Integrated Circuit (I2C) bus serial interfaces. To transmit information between bus masters and peripheral
devices, which are connected to the I2C bus, a dedicated Serial Data Line (SDA) and Serial Clock Line (SCL) is
used. Both SDA and SCL lines are bi-directional.

Exynos 4412 SCP支持4个 多主机I2c总线串行接口。通过SDA和SCL使总线上主从设备通信。SDA和SCL都是双向的。

In multi-master I2C-bus mode, multiple Exynos 4412 SCP RISC microprocessors either receive or transmit serial
data to or from slave devices. The master Exynos 4412 SCP initiates and terminates a data transfer over the I2C
bus. The I2C bus in the Exynos 4412 SCP uses a standard I2C bus arbitration procedure to realize multi-master
and multi-slave transfer.

在多主机I2C-bus模式下,多个Exynos 4412 SCP RISC microprocessors能够接收来自从设备的数据,也能向从设备发送数据。

The master Exynos 4412 SCP能启动和停止总线上数据的传输。使用标准的I2C总线仲裁实现多主和多从的数据传输。

仲裁:当多个主机试图去控制总线时,通过仲裁可以使得只有一个主机获得总线控制权,并且它传输的信息不会被破坏。

To control multi-master I2C-bus operations, you must write values to these registers:

  • Multi-master I2C-bus control register – I2CCON
  • Multi-master I2C-bus control/status register – I2CSTAT
  • Multi-master I2C-bus Tx/Rx data shift register – I2CDS
  • Multi-master I2C-bus address register – I2CADD

If the I2C-bus is idle, both SDA and SCL lines should be at High level. A High-to-Low transition of SDA initiates a
Start condition. A Low-to-High transition of SDA initiates a Stop condition, while SCL remains steady at High level.

I2C总线通过上拉电阻接正电源。当总线空闲时,两根线均为高电平。连到总线上的任一器件输出的低电平,都将使总线的信号变低,即各器件的SDA及SCL都是线“与”关系。

The master device always generates Start and Stop conditions. Front 7 bits address value in the data byte is
transferred through SDA line after the start condition has been initiated. This address value determines the slave
device which the bus master device has selected. The 8th bit determines the direction of the transfer (Read orWrite).

主设备控制开始与停止。当产生START后,紧接着SDA传送7位的从设备地址,第8位标识传输的方向(读或写)

The master generates START and STOP conditions.

START:

SDA:  a High-to-Low transition

SCL:   High

STOP:

SDA: a Low-to-High transition

SCL:  High

Every byte placed on the SDA line should be 8 bits in length. There is no limit to transmit bytes per transfer.

when a master initiates a START condition,it should send a slave address to notify the slave device. 1 byte of address field includes a 7-bit address and 1-bit transfer direction indicator, which shows Write or Read. When bit 8 is 0, it indicates a Write operation(TX);When bit 8 is 1, it indicates a request for data Read(Rx).

When the I2C bus is operating in master mode, master transmits the address field. An ACK bit follows each byte. The I2C controller sends first the MSB of the data and address byte to the SDA line.

Features of I2C bus interface are:

  • 9 channels multi-master, Slave I2C bus interfaces

(8 channels for general purpose, 1 channel dedicated for High Definition Multimedia Interface (HDMI).)

  • 7-bit addressing mode
  • Serial, 8-bit oriented, and bi-directional data transfer
  • Supports up to 100 kbit/s in the Standard mode
  • Supports up to 400 kbit/s in the Fast mode.
  • Supports master transmit, master receive, slave transmit, and slave receive operation
  • Supports interrupt or polling events

Flowcharts of Operations in Each Mode

Before you execute any I2C Tx/Rx operations:
1. If required, Write own Slave address on I2CADD register.
2. Set I2CCON register:
    a) Enable interrupt.
    b) Define SCL period.
3. Set I2CSTAT to enable Serial Output.

时间: 2024-10-05 20:18:33

I2c的相关文章

【资源共享】Rockchip I2C 开发指南 V1.0

2C设备的设备应用非常广泛,常见的包含重力传感器,触摸屏驱动芯片,音频解码等 这个文档是RK3399的I2C开发文档:<Rockchip I2C 开发指南 V1.0> 内容预览: 下载地址:http://developer.t-firefly.com/thread-12495-1-1.html

STM32F4XX高效驱动篇2 I2C

说到I2C很多用过STMF10X硬件I2C方式的工程师,都感觉有点头痛.大部分还是使用软件模拟的方式,I2C由于一般的工作频率是400,100KHz.所以在平凡读取,或所读数据量大时,使用这模拟的方式,还是比较浪费CPU有效工作时间的. 在之前的使用I2C的经历中,主要是I2C死锁问题让我也困扰了一段时间.不过后来经过多方资料,最后还是把这个问题解决了.以下驱动程序已集成了此功能. 什么是死锁,在I2C主设备进行读写操作的过程中.主设备在开始信号后控制SCL产生8个时钟脉冲,然后拉低SCL信号为

I2C笔记

  SCL:上升沿将数据输入到每个EEPROM器件中:下降沿驱动EEPROM器件输出数据.(边沿触发) SDA:双向数据线,为OD门,与其它任意数量的OD与OC门成"线与"关系. 一.协议 1.空闲状态 I2C总线总线的SDA和SCL两条信号线同时处于高电平时,规定为总线的空闲状态.此时各个器件的输出级场效应管均处在截止状态,即释放总线, 由两条信号线各自的上拉电阻把电平拉高. 2.起始位与停止位的定义: 起始信号:当SCL为高期间,SDA由高到低的跳变:启动信号是一种电平跳变时序信号

I2C总线介绍及AT24C02驱动编写 笔记

中断处理程序 { 清除中断 硬件自动清除 软件清除 } CPU芯片手册相关章节 -------- I2C CPU外接设备的方式 1)GPIO简洁的方式(按键,LED) 通过设置GPIO管脚的状态来完成通信(控制) gpccon gpcpud gpcdat 2)类似于内存的接口 (DDRAM norflash nand dm9000) 从硬件上看CPU和芯片 数据线 地址先  BANK 3)协议类接口 uart I2C AT24C02    EEPROM 3,如何解决CPU和设备通信的问题 I2C

温度传感器+I2C+串口+PC上位机(pyserial)例子

例子写的有点乱,主要是学习: 温度传感器DS18b20,E2PROM,I2C, 串口读写,PC上位机(pyserial)数据显示 SerialPort.py     PC串口上位机程序,可以设定上限报警温度 需要安装Python3以上,pyserial库,例子在Python3.4下写的. 上位机传给单片机上限报警温度后,单片机存入E2PROM, 单片机断电重启后,从E2PROM读取报警值. i2c.h             I2C总线读写和设定 lcd1602.h         lcd160

I2C相关知识学习

通过I2C访问的模块: SFP.XSFP.QSFP.QSFP28等等 通过MDIO访问的模块: X2.CFP/CFP2/CFP4.XENPARK等等 SDA:数据线,主机从机都能够控制. SCL:时钟线,由主机控制 数据在时钟为高电平时有效: SCL H H H H L SDA H->L L->H L H ALL FLAG Start Stop 0 1 invalid I2C中一个完整的数据包由9个字节组成: 器件地址有7位,总共地址128个,预留16个地址(0xFxxx, 0x0xxx),剩

nRF52832之硬件I2C

这几天一直在折腾nRF52832的硬件I2C,到了今天最终出现了成果,在此也印证了那句话:"耕耘就有收获" 52832的硬件I2C尽管官方提供了demo,可是自己对I2C通信理解的不够深入,再一个52832的代码也封装的太深了.可是对接口函数没有一个明白的解释(也能够说是我英文太渣,别人写了可是我没看懂. . .),这样对于首次接触nRF产品的人就造成了一定的难度 依据我的开发过程,还是先说明一下I2C的一些相关知识,由于我是先调硬件I2C搞了半天不正确头,然后再开发模拟I2C,模拟的

[I2C]pca9555应用层测试代码

驱动方面: 首先配置I2C内核驱动,将pca9555的源码built-in进入(这里根据需要可能要配thermal的驱动),然后在devicetree中根据pca9555硬件I2C地址配置节点. 测试源码: // I2C test program for a PCA9555 #include <stdint.h> #include <stdlib.h> #include <stdio.h> #include <unistd.h> #include <l

【转载】GPIO模拟i2c通信

I2C总线的通信过程(见图4-8)主要包含三个主要阶段:起始阶段.数据传输阶段和终止阶段. 1. 起始阶段 在I2C总线不工作的情况下,SDA(数据线)和SCL(时钟线)上的信号均为高电平.如果此时主机需要发起新的通信请求,那么需要首先通过SDA和SCL发出起始标志.当SCL为高电平时,SDA电平从高变低,这一变化表示完成了通信的起始条件. 在起始条件和数据通信之间,通常会有延时要求,具体的指标会在设备厂商的规格说明书中给出. 2. 数据传输阶段 I2C总线的数据通信是以字节(8位)作为基本单位

S5PV210-arm-裸机-i2c

I2C协议,是同步的,串行通信方式.有两个线,一根SCLOCK时钟线,一根SDA数据线,时钟是右SOC提供的,SOC和外设用I2C通信时,使用的是一个时钟,数据线是两者传输信息用的.一般在通信的过程中,分为主设备和从设备,如果主设备要向从设备发送信息时,从设备不可以发送东西. 可以一对一进行I2C通信,也可以一对多进行I2C通信,在一对多I2C通信时,主设备像往常一样先把SDA,SCL拉高,SCL维持高电平的这一段时间里,SDA产生了一个由高电平到低电平的变化,就成功发送了一个起始位,这时,所有