找回密码
 注册
关于网站域名变更的通知
查看: 648|回复: 2
打印 上一主题 下一主题

转——凔海笔记之FPGA(九):Verilog描述IIC单字节读写协议

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2019-4-3 12:05 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您登录!

您需要 登录 才可以下载或查看,没有帐号?注册

x
转——凔海笔记之FPGA(九):Verilog描述IIC单字节读写协议

8 y6 D( f+ n1 _9 `' [+ s* A2 p* [
一、简介AT24C04- ]/ E; R. P' z  f" q5 g1 L( ~
      AT24C04是小容量(4KB)IIC总线EPROM存储元件。这句话说得很有内容呀。首先,AT24c04是存储元件,还是EPROM即可擦写可编程只读存储器,而且断电可保存。其次,对AT24c04的控制是采用IIC协议的,也就是说,IIC≠AT24C04,曾几何时,傻傻的以为IIC=AT24CXX。
( e% ~2 d' ]/ H# Q& r, y3 r
! W$ a. l. P  j* @5 }
那接下来,就先说一下AT24C04吧。/ q, V& W5 b  z$ z0 E+ O8 k" v6 x3 t

+ k/ k# I  F. x5 T+ d/ gA0空引脚,不是地址设置引脚,A1/A2器件地址设置引脚,是用来设置器件地址的,可以挂4个AT24c04。WP写保护,低电平可对整个AT24c04的512字节进行读写操作,高电平则会使前256个地址受保护,只读不能写,后面的则爱咋地咋地了。SDA数据总线,是一个双向口,SCL则是时钟线。
/ u. c9 |+ L$ L( @4 V3 uIIC总线采用两线制,由数据线SDA和时钟线SCL构成。IIC总线对数据通信时序进行了严格的定义,主要包括起始、应答、结束还有数据读写的时序。. @, S: c% y/ M- K7 J* S$ }. X
下面,就看看IIC单字节读写操作吧。n(*≧▽≦*)n
0 M, v4 m6 q7 @7 _4 x# A
. G: I# \$ U7 @: K. K
可见,写IIC协议就是玩拼图,拼的好与坏,就看咱对时序的分析了。3 X/ ], X0 a  k5 w: C
但在玩拼图之前咱还是先了解一下IIC协议的一些基本知识。8 k) I- d* G3 F, `: r4 k8 N
1、起始信号
9 U# C) M) y# @3 {9 q    SCL保持高电平的状态下,SDA出现下降沿定义为I2C总线的起始信号,它是由主控器主动建立的一种电平跳变时序信号,标志着一次数据传输的开始,而在建立该信号之前IIC总线必须处于空闲状态。瞧下图9 T  Z& R1 r+ q- z, `9 d, X+ I3 \3 I6 Q
5 j" p0 E6 j& A( A( s% S/ ~
* S8 x: D. R, ]1 L  V
2、写地址
/ s0 {0 l- e7 k/ [    写地址包括写设备地址和写数据地址。就如同笔者兼职家教,得先找到人家在哪个小区哪个楼,再找到人家在哪个单元等。然后才能去输出自己的知识(数据)。/ m( M! Z5 v$ i9 _7 }
写地址有固定的格式:! ~6 ]( ]% Y- a4 ?; ~# d

+ c) H7 j* G. \6 \. K
硬件ID:就是知道是哪个小区,它会随着厂商设备的种类不同而改变,例如:AT24C04是4’b1010。
+ r2 @7 ?( _, E0 G硬件地址:就是芯片上的A0\A1\A2,A0空引脚(why?),A1/A2器件地址设置引脚,是用来设置器件地址的,可以挂4个AT24c04。
- ]9 c, i& F6 `6 h2 k( z4 q5 ]访问方向:写为1读是0。) x- c; _9 g2 n: E( ]2 ?8 m( H' U
写数据地址:AT24C04可以对512字节进行读写操作,而数据地址只有8位!也就是说,只能读写256字节,肿么破??????????????这时候会不会想到A0为什么说是空引脚呢?没错,它就是来凑数的,实现对512字节的读写。对此,我不得不说
! H) y- C  F1 Q0 B

8 w/ c% d5 p& \: u% A( w
还得补充一句,写数据是新的下降沿跟新数据,上升沿锁存/读取数据。1 G5 f- x: e7 w/ G- ]1 P3 Y+ q* a
3、应答信号  ~4 j: M, l. p/ |8 c! {7 g% s. n
 IIC总线上的所有数据都是以8位字节传送的,发送器每发送一个字节,就在下一个时钟脉冲释放数据线,由主机反馈一个应答信号。读数据就无视应答位。5 D. {: B' g$ v; G" b) _* S# h
  应答信号为低电平时,规定为有效应答位(ACK简称应答位),表示主机已经成功地接收了该字节;应答信号为高电平时,规定为非应答位(NACK),一般表示主机接收该字节没有成功。+ p5 _3 ]. k* d& t
) P0 F, v1 Y7 u& T) e
4、读写数据:
& j* X1 l* {5 W  O& F写数据就是写数据是新的下降沿跟新数据,上升沿锁存/读取数据,并且高位在前
  h( F  Y3 j, y# G6 n' G" ~- F读数据可以看做重复读取8次应答位,SCL的下降沿使从机跟新数据,然后主机在SCL的上升沿读取数据,此外,从机也会由高到低更新数据位。2 @' s/ u+ |4 ^7 [' [/ \' m% z) ]
结束位:& Y4 i: {+ |; O) Z- i
    在时钟线SCL保持高电平期间,数据线SDA被释放,使得SDA返回高电平(即正跳变),称为I2C总线的停止信号,它标志着一次数据传输的终止。# s0 T$ t) ^' ~
    停止信号也是一种电平跳变时序信号,而不是一个电平信号,停止信号也是由主控器主动建立的,建立该信号之后,I2C总线将返回空闲状态。
* @( x9 e8 [, S; l* ^
5 k$ k( r, p, ^& N$ x$ B
所谓的空闲状态就是I2C总线总线的SDA和SCL两条信号线同时处于高电平时,规定为总线的空闲状态。此时各个器件的输出级场效应管均处在截止状态,即释放总线,由两条信号线各自的上拉电阻把电平拉高。: p) J6 c0 m# d  f
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

推荐内容上一条 /1 下一条

EDA365公众号

关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

GMT+8, 2025-10-29 21:20 , Processed in 0.140625 second(s), 26 queries , Gzip On.

深圳市墨知创新科技有限公司

地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

快速回复 返回顶部 返回列表