vhdl - 如何从 adv7513 i2c 获得响应
问题描述
我想将 hdmi 显示器与 cyclone V GX 板一起使用,但我没有从i2c 总线上的adv7513得到确认。
我认为我在 i2c 交易开始时发送的地址有问题(我没有收到地址确认)我找不到有关 PD/AD 是低还是高的信息。另外我不确定我应该使用 7 位还是 8 位地址,所以我想解释一下。
我使用了我在网上找到的 i2c 控制器: https ://www.digikey.com/eewiki/pages/viewpage.action?pageId=10125324
解决方案
我假设您还没有阅读ADV7513 编程指南
ADV7513 使用四个 I2C 寄存器映射。主寄存器映射的 SDA/SCL 编程地址为 0x72 或 0x7A,这取决于电源接通时 PD/AD 是拉高(10KΩ 电阻到电源 = 0x7A)还是拉低(10KΩ 电阻到 GND = 0x72)用品。在电源为高电平后,用户应等待 200 毫秒以确定地址,然后再尝试使用 I2C 与 ADV7513 通信
I2C 地址是 7 位或 10 位而不是 8 位。在这种情况下,它是 7 位的。请参阅I2C 规范。因此,如果 PD/AD 为高电平,则 7 位地址为 0x7A。在二进制中,您的 7 位将是:1111010
. R/W 位是第一个 I2C“地址”字节的最后一位,但您发布的 vhd 代码不需要将其作为地址的一部分,这是单独完成的。
addr : IN STD_LOGIC_VECTOR(6 DOWNTO 0); --address of target slave
rw : IN STD_LOGIC; --'0' is write, '1' is read
如果您仍然有问题,请检查您的上拉电阻、I2C SCL 时钟速率,确保主机允许时钟延长。您发布的 VHDL 代码包含大量有关如何使用的信息,因此请重新阅读。
或者向电气工程堆栈交换提出问题并获取 SDA/SCL 的一些示波器读数。
推荐阅读
- https - 如何使用 cURL 在 cpp 程序中登录 Gitlab
- c# - 捕获组中的正则表达式捕获组
- vue.js - Vuetify在工具栏/应用程序栏中对齐堆叠元素
- grafana - 使用 influxdb/grafana 在正确的时间绘制导数
- c++ - 如何修复 C++ 中重载加法运算符的堆栈溢出问题
- bazel - 使用不同的编译器标志编译外部依赖项
- pandas - 使用 pandas json_normalize 解析深度嵌套的 JSON
- bash - __git_ps1 如何更新 bash 提示符?
- php - 在 PHP 中使用 bind_param() 准备语句
- c++ - 在 windows docker 容器中编译 Qt5 项目