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

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

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
转——凔海笔记之FPGA(九):Verilog描述IIC单字节读写协议
$ O# e" r% q5 X- e; e( k7 O
+ Z9 Z9 ]7 n1 H% S) |; h0 u2 h4 P  I
一、简介AT24C04% o1 \% `+ I+ }2 r3 u4 k
      AT24C04是小容量(4KB)IIC总线EPROM存储元件。这句话说得很有内容呀。首先,AT24c04是存储元件,还是EPROM即可擦写可编程只读存储器,而且断电可保存。其次,对AT24c04的控制是采用IIC协议的,也就是说,IIC≠AT24C04,曾几何时,傻傻的以为IIC=AT24CXX。: t2 w  \; F  g: L- q
/ L8 j/ E( q2 ]. v! N0 U
那接下来,就先说一下AT24C04吧。6 S$ T: ?6 R! `5 M

  F6 {2 J8 o$ b/ B3 ^4 i# S; x2 TA0空引脚,不是地址设置引脚,A1/A2器件地址设置引脚,是用来设置器件地址的,可以挂4个AT24c04。WP写保护,低电平可对整个AT24c04的512字节进行读写操作,高电平则会使前256个地址受保护,只读不能写,后面的则爱咋地咋地了。SDA数据总线,是一个双向口,SCL则是时钟线。
+ d0 n$ T1 P; D# E- G( p1 N  sIIC总线采用两线制,由数据线SDA和时钟线SCL构成。IIC总线对数据通信时序进行了严格的定义,主要包括起始、应答、结束还有数据读写的时序。1 O1 ?/ |5 H3 U% v; W, B
下面,就看看IIC单字节读写操作吧。n(*≧▽≦*)n
- P1 N1 z* y5 H3 c1 v+ o# G0 l

& V) D; U( g4 B: i6 P. \
可见,写IIC协议就是玩拼图,拼的好与坏,就看咱对时序的分析了。
0 K) e# ^2 N) G: Y( S* l但在玩拼图之前咱还是先了解一下IIC协议的一些基本知识。
4 ]! t, z" C. ]1 k, u( n$ h9 O+ X1、起始信号! }: D# H$ n8 S: v, i9 ?
    SCL保持高电平的状态下,SDA出现下降沿定义为I2C总线的起始信号,它是由主控器主动建立的一种电平跳变时序信号,标志着一次数据传输的开始,而在建立该信号之前IIC总线必须处于空闲状态。瞧下图; Y1 m" B( m# X% N2 ~
) K1 {9 g- W" D8 A' D
) `! r  Z, ?& H
2、写地址
+ Z; \6 J- N# E! V6 y9 h- P    写地址包括写设备地址和写数据地址。就如同笔者兼职家教,得先找到人家在哪个小区哪个楼,再找到人家在哪个单元等。然后才能去输出自己的知识(数据)。
& v6 p( w" V8 D; \: P5 h写地址有固定的格式:
+ B# q& H: r% ?( Y$ M5 Z
" r. q1 a* F9 y" p/ ~
硬件ID:就是知道是哪个小区,它会随着厂商设备的种类不同而改变,例如:AT24C04是4’b1010。. Z/ G' G  F8 m3 Y3 X' [2 G2 x
硬件地址:就是芯片上的A0\A1\A2,A0空引脚(why?),A1/A2器件地址设置引脚,是用来设置器件地址的,可以挂4个AT24c04。5 v$ k9 B* B; Q  U
访问方向:写为1读是0。
0 i/ c. Z( P1 a8 a  h6 ?# H写数据地址:AT24C04可以对512字节进行读写操作,而数据地址只有8位!也就是说,只能读写256字节,肿么破??????????????这时候会不会想到A0为什么说是空引脚呢?没错,它就是来凑数的,实现对512字节的读写。对此,我不得不说
; y* L' o4 Y0 `$ `3 m# n5 U

: p" n# n3 V  x8 @9 x# }8 n4 @7 a( Z$ E
还得补充一句,写数据是新的下降沿跟新数据,上升沿锁存/读取数据。
4 i7 J9 |# v$ S. M- W( Y1 |3、应答信号6 y8 z# G2 f/ w6 {# _
 IIC总线上的所有数据都是以8位字节传送的,发送器每发送一个字节,就在下一个时钟脉冲释放数据线,由主机反馈一个应答信号。读数据就无视应答位。
8 b6 e5 l; k+ U: }  应答信号为低电平时,规定为有效应答位(ACK简称应答位),表示主机已经成功地接收了该字节;应答信号为高电平时,规定为非应答位(NACK),一般表示主机接收该字节没有成功。
8 I3 V( B& y) A1 _; S8 g
4 ~% K8 o$ a) [# q8 Y4 P6 Q
4、读写数据:) _: V+ [) M) s& m5 k: g
写数据就是写数据是新的下降沿跟新数据,上升沿锁存/读取数据,并且高位在前
1 u4 t. |. |& }1 _' S6 q# H" \读数据可以看做重复读取8次应答位,SCL的下降沿使从机跟新数据,然后主机在SCL的上升沿读取数据,此外,从机也会由高到低更新数据位。( a% p9 X( y0 b4 r  X
结束位:
9 Z, w% {: `: m* u, d    在时钟线SCL保持高电平期间,数据线SDA被释放,使得SDA返回高电平(即正跳变),称为I2C总线的停止信号,它标志着一次数据传输的终止。
) ?2 o7 ]: {0 h" ?    停止信号也是一种电平跳变时序信号,而不是一个电平信号,停止信号也是由主控器主动建立的,建立该信号之后,I2C总线将返回空闲状态。6 ~( V" l) A) V& z0 n

5 Z+ C$ B0 S6 ]  j
所谓的空闲状态就是I2C总线总线的SDA和SCL两条信号线同时处于高电平时,规定为总线的空闲状态。此时各个器件的输出级场效应管均处在截止状态,即释放总线,由两条信号线各自的上拉电阻把电平拉高。
0 y4 f5 t0 A7 e$ j
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

EDA365公众号

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

GMT+8, 2025-8-3 12:50 , Processed in 0.125000 second(s), 26 queries , Gzip On.

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

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

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