ImageVerifierCode 换一换
格式:DOCX , 页数:16 ,大小:407.27KB ,
资源ID:9622970      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/9622970.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(I2C 主控器规范译文.docx)为本站会员(b****8)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

I2C 主控器规范译文.docx

1、I2C 主控器规范译文I2C 主控器规范 作者:Richard Herveille 2003年7月3日1 介绍I2C是一种两线式双向串行总线,在设备间提供一种简单有效的数据交换方式。它最适合应用在一个临时的短距离多设备间的通信请求。I2C总线标准是一个真正的多主机总线,它包括冲突检测和仲裁,在两个或两个以上的主机试图同时控制总线时防止数据损坏。该接口定义了三种传输速率:-标准模式:100Kbps-快速模式:400Kbps-高速模式:3.5Mbps直接支持100Kbps和400Kbps模式。对于高速模式,特殊的IOS是必须的。如果这些IOS是可用的,那么高速模式也同样支持。特点:兼容飞利浦I2C

2、总线标准多主机操作软件可编程时钟频率时钟延展和等待软件可编程响应中断或传输数据的循环仲裁丢失中断,自动取消传送启动/停止/重启动/确认位启动/停止/重复开始检测总线繁忙检测支持7和10位寻址模式可在各种运作中输入时钟频率静态同步设计完全仿真2. IO端口2.1核心参数2.1.1 ARST_LVL异步复位水平可被设定为高电平有效( 1b1 ) ,或低电平有效( 1b0 ) 。2.2 WISHBONE总线接口信号核心采用了WISHBONE RevB.3,兼容WISHBONE总线的经典界面。包含了所有输出信号。每次访问需要2个时钟周期.arst_i不是WISHBONE总线兼容的信号。它提供了针对FP

3、GA实现的工具。用 arst_i 替代 wb_rst_i 可以降低模块使用和提高性能,因为大多数FPGA提供一个专用的异步复位路径。配合其他的一个否定位使用 arst_i 或 wb_rst_i 。 2.3外部链接I2C总线接口采用串行数据线(SDA)和一个串行时钟线(SCL)传输数据。所有设备连接到这两个信号线上,而且必须连接开路漏电极或开路集电极。两个信号线都必须通过外部电阻器连接到VCC上。SCL和SDA信号线的三态缓冲器必须连接高电平上,连接图见下图为FPGA设计的编译器使用下列代码可以自动插入这些缓冲器VHDL 代码:scl = scl_pad_o when (scl_padoen_o

4、e = 0) else Z;sda = sda_pad_o when (sda_padoen_oe = 0) else Z;scl_pad_i = scl;scl_pad_i = sda;Verilog 代码:assign scl = scl_padoen_oe ? 1bz : scl_pad_o;assign sda = sda_padoen_oe ? 1bz: sda_pad_o;assign scl_pad_i = scl;assign sda_pad_i = sda;3 寄存器3.1 寄存器列表3.2寄存器描述3.2.1分频寄存器这种寄存器是用来预定SCL时钟线的频率的。由于I2C接口

5、的结构,芯片采用5倍的SCL内部时钟。分频寄存器必须在5倍的SCL频率下编程 。只有当EN位被清除时,才可以改变寄存器的值。例: wb_clk_i = 32MHz,想要得到SCL = 100KHz频率=32MHZ/(5*100KHZ)-1=63(dec)=3F(hex)重置值: 0xFFFF3.2.2控制寄存器只有当EN位被设置时存储器才会响应新的命令。在停止命令后,当没有数据传输或在命令寄存器内设置一个停止位时清除EN位。当传输突然停止时,存储器可以暂停I2C总线。3.2.3传输寄存器复位值:0x003.2.4接收寄存器复位值:0x003.2.5命令寄存器复位值:0x00STA, STO,

6、RD, WR, 和 IACK位自动清除。这些位总是为零3.2.6位寄存器复位值:0x00请注意,所有保留位改为零。为了确保相互兼容,就应该写为0 。4. 操作4.1 系统配置在I2C总线系统采用串行数据线( SDA)和串行时钟线(SCL)传输数据时,所有设备连接到这两个信号上,而且必须连接开放漏电极或开放集电极输出,都必须连接到一个外部上拉电阻。数据通过SCL和SDA信号线在主机和设备之间进行同步传输。每一个数据字节是8位长。一个SCL时钟脉冲里每个数据位的最高有效位被首先发送。每个传输字节后面都有一个响应位。在SCL高电平时数据有效;因此,在SCL低电平时SDA的高低状态允许改变,在SCL高

7、电平时SDA状态必须保持稳定。4.2 I2C协议一般来说,一个标准的通信包括四个部分:1)开始信号2)从设备地址传输3) 数据传输4) 停止信号4.2.1开始信号当总线是空置/闲置,这意味着没有主机在使用总线(包括SCL线和SDA线都是高电平) , 一个主机通过发送一个开始信号开始传输数据,。一个开始信号,通常称为S位,被定义为当SCL为高电平时,SDA有高电平向低电平转换。这个开始信号表示一个新数据传送的开始。可以产生重复开始信号而不产生一个停止条件。主机通过这种方式与其他从设备通信,设备通过反方向与主机通信(如:从一个设备写到从一个设备读)当命令寄存器的STA位被设置为有效,RD或WR位被

8、设置为有效时产生一个开始信号。根据SCL的现实状态产生开始信号或重复开始信号。4.2.2从器件地址传送在开始信号之后是从器件地址,后面是主机要传送数据的首字节。在7位地址之后是一个读写位。这个读写位标志着器件数据传输的方向。两个从器件不可能有相同的地址。只有从器件地址相匹配,才能在第9个SCL时钟周期接受一个由主机产生的SDA线为低电平的响应位。注:支持10位地址扩展。详细的信息请看飞利浦I2C总线规格。 芯片对从器件地址传输与写操作相同。在传输寄存器中保存从器件的地址,WR位设置为有效。芯片将在总线上传输从器件地址。4.2.3数据传输 在获得从器件地址之后,数据输出的进行可以通过由主机发出的

9、RW位来确定传输的方向。每个传输字节后的第9个SCL时钟周期是一个响应位。如果没有响应位,则主机可能产生一个停止信号中断数据传输,或者产生一个重复开始信号开始一个新的传输过程。如果主机作为接收设备,则从器件不响应,从器件释放SDA线用来使主机产生停住信号或重复开始信号。写操作,在传输寄存器中存放传输数据,并将WR设置为有效。读操作,要将RD位设置为有效。在传输数据时芯片要设置TIP标示,表示正在传输数据。当输出结束时要将TIP标示复位,当TIP标示设置为有效时,产生一个中断信号。在接收寄存器包含有效数据之后TIP标示被设置为有效。当TIP标示复位后使用者才能发出一个新的读或写的命令。4.2.4

10、停止信号 主机可以通过停止信号终止通信产生。停止信号,通常被称为是P位,被定义当SCL线位于高电平时,SDA线由低向高电平的转换。4.3仲裁 4.3.1时钟同步 I2C总线是一个真正的多主机总线,允许一个以上的主机连接它。如果两个或两个以上的主机试图同时控制总线,时钟同步程序确定总线时钟。由于连接在I2C总线上的线路电平由高到低的转换将影响所有连接在总线上的设备。因此,SCL线由高到低的转换与有关设备在低电平时的状态有关。但是如果另一个时钟仍处于低电平周期,这个时钟由低到高电平的切换不会改变SCL线的状态,因此SCL线被有最长低电平周期的器件保持低电平,有最短高电平周期的设备保持高电平。4.3

11、.2时钟延展 从器件可以使用时钟同步机制,以减缓传输比特率。在主机完成SCL为低电平之后,从器件可以在规定期间内使SCL为低电平,然后释放。如果从器件的SCL线低电平期大于主机的SCL线低电平,由此插入等待位产生SCL线的时钟延展5. 体系结构I2C总线的芯片建立四个主要模块:时钟发生器,字节命令控制器,位命令控制器令和数据转移寄存器,其他的模块用于接口或存储临时值。5.1时钟发生器 该时钟发生器产生一个4 * F SCL内部时钟信号,触发位于位命令控制中的所有同步元件。它也处理所需要时钟伸展的从器件。 5.2字节命令控制器 字节命令控制器使用于处理I2C的字节传输。它是数据按照正确的次序逐个

12、由命令寄存器中传输。通过在命令寄存器中设置START, STOP, 和 READ位来实现。例如,字节命令控制器生成一个序列,从而产生一个开始信号,从器件读一个字节,然后产生一个停止信号。为此,它会将每个字节操作分为单独位操作,然后发送到位命令控制器。5.3位命令控制器 位命令控制器通过控制SCL线和SDA的线路处理实际传输的数据和产生开始,重复开始,停止信号。字节命令控制器控制位命令控制器进行操作。对于单字节读取,位命令控制器收到8个独立读取命令。每个位操作分为5个阶段(闲置和A ,B ,C和D) ,除停止操作外分为4个阶段(闲置和A ,B和C) 。5.4 数据转移寄存器 数据移位寄存器包含当

13、前要转移的相关数据。在读操作中,数据通过SDA线转移。在一个字节被读取后,其内容被复制到接收寄存器。在写操作中,发送寄存器的内容复制到数据移位寄存器中,然后通过SDA线传输。6. 编程示例示例1 写一位数据。从器件地址= 0x51 (b”1010001”),数据= 0xACI2C总线序列: 1 )生成启动命令 2 )写入从地址+写位 3 )从器件接收响应 4 )写入数据 5 )从器件接收响应 6 )产生停止命令命令:1 )写入0xA2(地址+ 写位)到传送寄存器,设置STA位和WR位。 -等待中断或取消TIP标志- 2 )从状态寄存器中读取RxACK位,应为0 。 写0xAC到传送寄存器,设置

14、STO位和WR位。-等待中断或取消TIP标志- 3)从状态寄存器读取RxACK位,应为0。请注意,时间中断程序没有在这里显示。它是假定的ISR比I2C总线周期时间快,因此可忽略。示例2 从一个I2C存储设备读取一个字节数据。 从器件地址= 0x4E,读取内存位置= 0x20 I2C总线序列: 1 )产生启动信号 2 )写入从地址+写位 3 )从器件接收响应 4 )写入内存位置 5 )从器件接收响应6 )产生重复启动信号 7 )写入从地址+读位 8 )从器件接收响应 9 )从从器件读取字节10 )写入不响应位( NACK )到从器件,说明传输结束 11 )产生停止信号命令:1 )写入0x9C (地址+写位)到传送寄存器,设置STA位和WR位。 -等待中断或取消TIP标志- 2 )从状态寄存器读取RxACK位,应为0 。 写入0x20到传送寄存器,设置WR位。 -等待中断或取消TIP标志- 3 )从状态寄存器读取RxACK位,应为0 。 写入0x9D(地址+读位)到传送寄存器,设置STA位和WR位。 -等待中断或取消TIP标志- 4 )设置RD位,设定ACK为1 ( NACK ) ,设置STO位请注意,时间中断程序没有在这里显示。它是假定的ISR比I2C总线周期时间快,因此可忽略。附录A 仿真结果仿真工具: Synplify Pro

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1