第二十六章 linux-i2c子系统一

简介: 第二十六章 linux-i2c子系统一

i2c总线协议

  • 12C(lnter—lntegrated Circuit),PHILIPS公司丿发的两线式半双工同步串行总线,具有接口线少,控制方式简单,通信速率较高等优点。
  • 可以用来连接存储器(EEPROM、FLASH)、A/D、D/A转换器、LCD驱动器、传感器等等。
  • i2C是一个多主机的总线,每个设备既可以当主控器或被控器,又可作为发送器或接收器,一条总线上可以有多个主机,但同一时刻只允许一个主机工作。
  • i2c总线有两根信号线:
    双向数据线(SDA)/时钟线(SCL)

总线通信基本概念

  • 通信方问划分
    全双工:收发数据可以同时进行
    半双工:不能同时收发数据,数据发时不能接收,比如i2c
  • 同步通讯 共用时钟信号线
    比如:i2C、SPI,USB3.0
    一般不支持远距离传输,通常是板级间的距离小于50cm的TTL电平
    同等条件下比异步通讯要快一些
  • 异步通讯
    比如uart,usb2.0,RJ45
    通距会稍远一些.通常是主机设备之间的通信
    为了实现跟远距离通讯,一般走差分号.比如:232、485、422、CAN
  • 串行通信 一个并发数包被分成多次传输,大多数表现为以bit位为单位收发数据

i2c通讯特点

  • 因为没有片选信号,所以选择从机是通过地址来实现的
  • 通过启起和终止信号来标识一次完整的通信过程
  • 通讯过程:
  1. 主机发起启始信号(时钟高电平期间,数据产生一个下降沿)
  2. 发送地址,通信之前先通过从机地址选中要通信的从机设备
  • 地址一般从模块芯片数据手册中获得
  • 有的也提供外I/O来手动指定
  • 通常是7位表示,也有10位的地址
  1. 主机接收对应从机的应答(ACK表示正确应答NACK表示异常应答)
  2. 开始传输数据,且每传输8bit数据应答一位
  3. 主机发起停止信号(时钟高电平期间,数据产生一个上升沿)
  4. 本次通信结束
  • 数据传输先发高位,再发低位
  • i2c是电平触发数据传输,不同于spi的边沿触发
  • 时钟低电平准备数据,时钟高电平采集数据
  • 位速率可达400kbit/s

应答信号:

接收器收到每个字节后的第9个时钟周期会发送一个应答信号(ACK)或非应答信号(NACK)

设备地址

每个支持i2c总线的设备,它都会有一个可以代表自己的地址。这个地址是唯一的,用7位或10位来表示,在出厂时己经确定固化。

i2c数据传输办法

i2C为电平触发方式(数据先发高位,再发低位)SDA线上的数据必须在SCL的高电平周期保持稳定。SDA线的电平状态在为低电平周期才可以改变。

i2c时序

i2c传输格式(写数据)

i2c几种工作模式

  • 标准模式:位速率100kbit/s。
  • 快速模式:位速率可达400kbit/s,向下兼容。
  • 高速模式:位速率可达3,4Mbit/s,向下兼容。
目录
相关文章
|
6月前
|
Ubuntu Linux
Win10 Ubuntu子系统(内嵌ubuntu18.04)运行32bit Linux原生程序 解决Exec format error错误
Win10 Ubuntu子系统(内嵌ubuntu18.04)运行32bit Linux原生程序 解决Exec format error错误
120 0
|
9月前
|
Linux
找不到自己Win10的Linux子系统的根目录?在这里哟!
找不到自己Win10的Linux子系统的根目录?在这里哟!
203 0
找不到自己Win10的Linux子系统的根目录?在这里哟!
|
8月前
|
安全 Linux
Linux内核OverlayFS子系统权限提升漏洞(CVE-2023-0386)
Linux内核OverlayFS子系统权限提升漏洞,在Linux内核的 OverlayFS子系统中,当用户将一个具有权限的文件从一个nosuid挂载点复制到另一个挂载点时,未经授权的攻击者可以执行setuid文件,导致权限提升。
105 1
|
5月前
|
算法 Ubuntu Linux
实现一个进程管理子系统-Linux课程设计1
实现一个进程管理子系统-Linux课程设计
114 0
|
4月前
|
Linux Windows Ubuntu
Windows 使用 Linux 子系统,轻轻松松安装多个linux
Windows 使用 Linux 子系统,轻轻松松安装多个linux
56 0
Windows 使用 Linux 子系统,轻轻松松安装多个linux
|
4月前
|
算法 Linux 芯片
Linux驱动-I2C子系统基本分析
Linux驱动-I2C子系统基本分析
33 0
|
4月前
|
消息中间件 存储 Linux
嵌入式Linux系统中SPI 子系统基本实现
嵌入式Linux系统中SPI 子系统基本实现
36 0
|
4月前
|
存储 Ubuntu 关系型数据库
在Windows WSL (Linux的Windows子系统)上运行的Ubuntu 20.04安装Bacula失败
Bacula 是一个开源的跨平台网络备份工具,提供基于客户端/服务器(CS)架构的企业级备份解决方案。它支持对数据进行备份、恢复以及完整性校验,并且可以运行在多种操作系统上,包括 Windows 和 Linux 等。
27 0
|
4月前
|
算法 Linux API
一文聊聊Linux Kernel的加密子系统【Crypto Subsystem】
一文聊聊Linux Kernel的加密子系统【Crypto Subsystem】
104 1
|
5月前
|
算法 Ubuntu Shell
实现一个进程管理子系统-Linux课程设计2
实现一个进程管理子系统-Linux课程设计
47 0

热门文章

最新文章