大家好、
我正在尝试在 Tiva 上运行 I2C5的简单示例。 我想从 SI7005读取一个字节。 在数据表中、我有此说明来读取寄存器。
我从 Tivaware 中的回送示例开始、它工作正常。 此外、在更改源代码后、我可以按预期在示波器上看到 SCL 和 SDA 信号。
我使用400kbps 作为 I2C 时钟、我在 SDA 和 SCL 中有外部上拉电阻器。
当我尝试读取该寄存器时、观察表达式中只能看到0。
代码有什么问题?
我不了解该外设的配置?
或者、 是否更有可能是硬件问题?
随附代码。
This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
大家好、
我正在尝试在 Tiva 上运行 I2C5的简单示例。 我想从 SI7005读取一个字节。 在数据表中、我有此说明来读取寄存器。
我从 Tivaware 中的回送示例开始、它工作正常。 此外、在更改源代码后、我可以按预期在示波器上看到 SCL 和 SDA 信号。
我使用400kbps 作为 I2C 时钟、我在 SDA 和 SCL 中有外部上拉电阻器。
当我尝试读取该寄存器时、观察表达式中只能看到0。
代码有什么问题?
我不了解该外设的配置?
或者、 是否更有可能是硬件问题?
随附代码。
您好、Allef、
查看您的代码、我认为您无需执行 I2CMasterSlaveAddrSet (I2C5_base、device_address、true);在发送地址/寄存器数据后。
您还应使用 I2CMasterDataGet API 获取数据、例如:pui32DataRx[ui32Index]= I2CMasterDataGet (I2C5_base);
要弄清这个问题,可能需要做更多的工作,但这最初是突出的。
对于调试、我建议您在示波器上看到 SCL/SDA 信号、您可以查看发送到 SI7005器件的通信、并将其与器件数据表中建议的信号进行比较。
确保发送0x40和0x11、然后查看是否接收到任何字节及其值。 如果地址和数据字节出现在 I2C 线路上、但 TM4C 中不存在、则可以调试接收时发生的情况。 如果数据传输不正确、则部分传输过程会混乱、如果数据正在传输但没有回复、则可能是硬件、数据包组帧或时序问题。
如果您使用"kiss!"、我建议您与"远程设备"进行通信的"初始尝试"获得成功的可能性要高得多! "kiss"表示您"开始"与最简单的 I2C 从设备进行远程设备交互。 (通常为小容量 I2C EEPROM)
您选择的(相反)更先进的器件可能会:
以上均不符合您的要求! "kiss"方法(通过小容量、简单的 EEPROM)肯定会对您的其他项目(许多)有用、并且更有可能位于您的帮助者的"轮房"内、在这里。 (您选择的器件过于专业/鲜为人知-因此(命令)重点突出、可读/复审 (来自您的助手 crüe)-谁可能不会选择做出牺牲。)
作为"远程 I2C 器件成功:"的一般指南
回想一下、"kiss"旨在"以最简单、最快捷的方式实现设计成功。" 之后是"足够的时间"到"通过细化进行"。 (早期细化(即另一个的"过早优化"是如此多的人的失败-由于供应商的"将他们从"吻"中搁置)、他们没有获得"吻!"提供的许多已知好处。