搜索
bottom↓
回复: 4

写一个i2c控制器,难道i2c的 数据不是 时钟边沿取数据吗?

[复制链接]

出0入0汤圆

发表于 2014-1-14 08:36:42 | 显示全部楼层 |阅读模式
写一个i2c控制器,看到 i2c协议,如下图 这样,难道i2c的 数据不是 在时钟边沿取数据吗?


本帖子中包含更多资源

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

x

阿莫论坛20周年了!感谢大家的支持与爱护!!

知道什么是神吗?其实神本来也是人,只不过神做了人做不到的事情 所以才成了神。 (头文字D, 杜汶泽)

出0入0汤圆

发表于 2014-1-14 09:25:33 | 显示全部楼层
用SCL的下降沿取。

其实如果用高电平取,也没问题,最后锁存的数据也是下降沿时刻的数据。只是这样latch的数据会可能会有毛刺而已。

出0入0汤圆

 楼主| 发表于 2014-1-14 11:06:35 | 显示全部楼层
本帖最后由 atom100 于 2014-1-14 11:17 编辑

噢,感谢,
但我看 iic的协议,严格来讲 是在 scl高电平 时候的某个 位置 采集数据,而且没说是 哪个位置,看着 不是在 scl下降沿 取数据sda?而数据sda的变化是在时钟的 低电平的中点位置

对比 SPI总线,spi总线的数据变化 可以在时钟的 下降沿变化,而 iic协议sda数据变化 不能在  时钟的边沿上。
按协议来讲 iic的数据变化时刻 不能在 时钟的上升沿吧?像下图这样,应该不是完全符合iic协议吧 ,数据在时钟的上升沿变化,?iic协议的数据变化应在时钟的 低电平中点位置,这样的话,写verilog的 代码 就有店麻烦了



iic的协议我看应该 是时钟有个位移,像下面这样 向后位移1/4时钟周期


本帖子中包含更多资源

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

x

出0入0汤圆

发表于 2014-1-14 12:46:19 | 显示全部楼层
本帖最后由 aikimi7 于 2014-1-14 12:47 编辑

I2C数据变化在时钟低电平期间,不是说一定是低电平的中点。
另外,你说的数据不能在上升沿变化,其实和仿真激励类似,可以理解为此上升沿变化的数据在下一个时钟沿有效。

出0入0汤圆

 楼主| 发表于 2014-1-14 14:01:54 | 显示全部楼层
本帖最后由 atom100 于 2014-1-14 14:09 编辑

请看 这个文章,说的是否正确 ?
http://hi.baidu.com/narshben/item/0ec93b1c373cd7f087ad4ee2





红线部分 ,三线制是 边沿触发,而二线制是 电平触发,我看很多资料写fpga接收i2c数据,都是写成下降沿锁存数据, 如果完全按 i2c 协议写verilog代码 接收数据,是不是 不能写成  下降沿锁存数据??
如果 verilog 写成上升沿改变sda数据(用于发送数据),而下降沿锁存sda的数据(用于接收数据),这样与 arm等单片机内 硬件实现的i2c模块之间通信,是否会出问题 ??

本帖子中包含更多资源

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

x
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-7-24 05:15

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

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