我将 STM LIS3DSH 加速计与 TM4C1294开发板配合使用、与 I2C 模块2通信。 LIS3DSH 有一个"谁是 i"寄存器、在该寄存器中、当被查询时、它返回一个特定的字节值。 在使用标准外设库进行通信时、我让它返回正确的字节、但在将代码移动到函数时、它不再返回正确的字节值、因此我发现 I2C 通信存在一些时序/配置问题。
经过长时间的闲置、无法使事情正常工作、我决定走另一条路:绕过标准外设库、直接从寄存器读取/写入、以查看我是否可以更深入地了解问题。 为此、我按照 TM4C1294NCPDT 数据表第18.4.1节中的"初始化和配置"说明、针对"将 I2C 模块配置为以主机身份传输单个字节"进行了操作。
然后、为了读取数据、我遵循了 TM4C1294NCPDT 数据表第18.3.6.1节中的"主单次接收"流程图。 但运气不好。 我没有得到加速计返回的预期字节、我在读取 I2C2数据寄存器时只得到一个零值。 我已验证我也没有在状态寄存器中收到错误。
我已三重检查我的代码。 我想知道、是否有人愿意再用一双眼睛来审查我的规范和/或提出任何建议。 它非常简短、评论很好、我非常感谢您的任何帮助。 我已经附加了代码、它只是一个 main.c 文件。
提前感谢、
Terence