微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > FPGA,CPLD和ASIC > Verilog I2C通信,新手求助!

Verilog I2C通信,新手求助!

时间:10-02 整理:3721RD 点击:

自己使用Verilog HDL写了一个I2C控制器,但是工作不正常,读不出来任何数据,也就是状态9没有任何在sda线上没有任何数据,查了各种资料,没有找到问题,希望大神帮帮忙找找问题!


上面一张是读数据的状态机状态定义



上面的一张图片是使用signal_tapII看到的波形



上面一张图片是写数据状态机的状态定义



上面一张图片是使用signal_tapII看到的实际波形

你的sda是inout类型?从机有问题,状态3出现毛刺,你是控制器,如果你控制信号给对了,没有数据那是你从机没给出来数据

如果做FPGA,一般厂家都有免费的IIC控制器用。


sda确认是inout类型的,那个毛刺有影响么?不是在SCL的上升沿采集数据么?还有就是想问下您,您所说的从机有问题指的是什么能说详细点么,谢谢了!无论如何都非常感谢您!

时钟问题,硬件连线,代码问题,都检查下


非常感谢您的热心回复,想知道下这个官方提供的I2C都是到官网下载么,您能给个例子么,就是可以在官网下载的那种,谢谢您了!


您好,您说的时钟问题具体指的是什么,scl不是产生了么,连线确认没有问题,可以跑其他的东西!



   时钟SCL100K到400K,看器件要求。看下从器件的DATASHEET时序 ,仔细对照。如果没问题 就换IC。


现在SCL的时钟频率为54k,这个时钟慢了也不行么?我试试其他频率,谢谢您了!



    从机没发出来数据,可能你给的地址是从机不识别的,也可能从机对应地址上的数据就是0x00,也还有可能从机有什么cs之类的信号没被选中,等等。你可以看一下,发给从机的信号是不是符合从机的响应要求

不懂学习啊。


非常感谢您,我用的是AT24C02,我是首先写入数据到这个地址,然后从这个地址把数据读出来!有可能是没有写入进去,也有可能是没有读取出来,但是我比照过了时序,感觉应该是没有问题的,正在查找问题中……


如果是xilinx,在ISE里面有core generator这个tool。里面有IIC controller.

I2C是OD的,也就是需要上拉,然后你只能驱动拉低,高电平是上拉。这方面不知道你考虑了没,考虑了就不是这方面原因。



用FPGA实现 IIC,物理层的收发器如何实现,还请多多指教,一直没查看到有对应的IIC(PHY)收发器。有专门的PHY层收发器么?请指教

上一篇:SDR,DDR的刷新操作
下一篇:产生翻转信号

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top