I2C驱动学习
来源:互联网 发布:js 设置div style 编辑:程序博客网 时间:2024/05/19 13:21
菜鸟来袭。。。
一 什么是I2C?
本Blog的I2C知识以TI的功放芯片TAS5760为例进行介绍。TAS5760地址可配,具体为110110X[R/W], 前7位110110X,其中X根据供给芯片地址引脚ADR PIN的电平高低,可配置为0或1。
二、I2C的读写时序
TAS5760支持100KHZ和400KHZ的传输速率,只能作为从器件,I2C用于读写5760的寄存器,从而对其进行功能控制和状态的获取。
地址和数据以字节(8bit)的形式进行传输,每传输一个字节会有一个ACK的应答。ACK类似一个尖峰脉冲,为0时表示正确的传输,此时在波形上表现出来的时一个很窄的尖峰,ACK为1时表示I2C传输错误,这时是一个类似数据宽度的高电平。
每个传输操作都有一个开始标志和结束标志。当SCL为高,SDA由高变成低,代表start; SCL为高,SDA由低变成。高,代表STOP。如下图Figure48,每个数据位bit在时钟线为低电平时产生,每个时钟周期产生一位bit。Master产生7位的slave地址和W/R位,然后等待一个ACK,ACK正确后开始进行下一位的传输。Start和Stop之间传输的数据位数不受限制。Master收到Stop标志位后释放I2C总线
I2C的写操作
如Figure49, 在Master对Slaver进行写操作时,先传输Master的7位地址和写W位,然后等待ACK,再传输slaver的地址,等待ACK,然后传输数据位,数据包括要写的寄存器的地址和值,图中的Date Byte不限于一个字节。
如图Figure50,在进行读操作时其实也先进行了写地址的操作,Master先传输7位的地址位和读写位(此时仍为W),等待ACK,再传输8位的slaver地址,等待ACK,再传输Master的地址位和读写位(此时为R),等待ACK,再传输数据。如要读取Slaver器件某个寄存器的值,则Date Byte可以为寄存器的地址。
- I2C驱动学习笔记
- I2C驱动学习
- linux驱动--i2c驱动学习
- linux I2C驱动学习笔记
- Linux I2C设备驱动学习
- uclinux内核中的I2C驱动学习
- uclinux内核中的I2C驱动学习
- Linux驱动学习——I2C
- linux I2C 设备驱动学习笔记
- i2c驱动--i2c总线接口
- linux驱动学习(八) i2c驱动架构(史上最全) davinc dm368 i2c驱动分析
- linux驱动学习(八) i2c驱动架构(史上最全) davinc dm368 i2c驱动分析
- linux驱动学习(八) i2c驱动架构(史上最全) davinc dm368 i2c驱动分析
- linux驱动学习(八) i2c驱动架构(史上最全) davinc dm368 i2c驱动分析
- linux驱动学习(八) i2c驱动架构 i2c驱动分析
- linux驱动学习(八) i2c驱动架构(史上最全) davinc dm368 i2c驱动分析
- linux驱动学习(八) i2c驱动架构(史上最全) davinc dm368 i2c驱动分析
- linux驱动学习(八) i2c驱动架构(史上最全) davinc dm368 i2c驱动分析
- 学习笔记-集合框架
- 日常博客系列规划
- CVTE笔试题二:判断两个字符串的拼接方式是否相同
- [问题汇总]ubuntu16.04+cuda8.0+cudnn+opencv3.2+caffe+tensorflow+SS搭建
- python 入门系列4:while 循环
- I2C驱动学习
- 学习笔记-散列表
- C++实现栈和队列
- Java 面向对象的总结 初级篇 1
- TCP-IP学习笔记(八)——RARP:逆地址解析协议
- zookeeper的永久监听
- Jenkins学习——邮件配置
- QScrollArea 用法总结
- 关于package ——java笔记