/i2c_slave

使用FPGA实现的一个I2C从机模块,可读可写,可改设备地址,可扩展,模拟摄像头内部的sensor

Primary LanguageVerilog

i2c_slave

使用FPGA实现的一个I2C从机模块,可读可写,可改设备地址,可扩展,模拟摄像头内部的sensor

有三个IP: 1、origin是从别处copy的代码,功能有限,未使用过 2、updata是我参考origin里的设计思路进行修改扩展,经过仿真与上板测试无误,可读可写,可连读连写,默认地址0x00是设备寄存器地址,可动态修改,可根据需模拟的寄存器数据填表,可根据需求再扩展 3、made by Z是同事张工的版本(https://github.com/yxgi5/i2c_slave),也可实现updata功能,未加入动态修改地址功能,但逻辑较复杂,代码可读性emmmmmmm

在动态设备地址实验测试时,在图莫斯工具下,发现地址0x78、0x79、0x7a有问题,设备地址改了,但从机没有回复与应答

通过逻辑分析仪发现,scl时钟线一直被拉低

![1676440148616](image/README/1676440148616.png)

![1676440268494](image/README/1676440268494.png)

正常情况下

Device addr为77,通过地址0x000改变地址为78,可看到scl正常时钟线

![1676440338851](image/README/1676440338851.png)

通过查资料发现

![1676440395321](image/README/1676440395321.png)

https://www.cnblogs.com/schips/p/i2c-addresses.html

但在zynq上可以正常访问并读写到0x78,结论图莫斯工具将其限制了

2023.6.26

增加了部分fake 摄像头的IP,对于模拟摄像头的嵌入数据,可不加入嵌入数据IP,而是先抓取一帧图像数据,确认嵌入数据是哪些,再将嵌入数据填入vdma即可,可参考德赛模拟摄像头