c - I2C从主到从通信问题
问题描述
我使用的是 TC237 并且板子不提供 I2C 通信,所以我将它实现为 GPIO。通过寄存器读写,但没有主从通信。
根据I2C通信协议,创建了启停ACK NACK功能码。我还创建了一个 1 字节的写入和读取代码,并基于它创建代码来读取和写入从站的寄存器。
不知道怎么上传图片,但是用示波器查看SDA和SCL的时候,读的时候好像有两个字节要读,其余的都OK。第一个字节读取 0x00,下一个字节读取 0xEF。
I2C_Start();
waitTime(1*TimeConst_100us);
I2C_WriteByte((uint8)(Slave_addr|0x01));//LIDAR : 0xC5/BH1750 : 0x27
I2C_ACK();//I2C_GetACK();
I2C_ReadData_H = I2C_ReadByte();
I2C_ACK();
waitTime(1*TimeConst_100us);
I2C_ReadData_L = I2C_ReadByte();
waitTime(1*TimeConst_100us);
if(I2C_NACK() == BUSY)
{
return RESET;
}
I2C_Stop();
return SET;
结果应该由内部IC接收,但它接收到一个奇怪的值。可疑部分在读取第一个字节后似乎没有收到设备的 ACK,我该怎么办?
解决方案
推荐阅读
- rest-assured-jsonpath - 如何从以下 JSON 中提取和显示首选项节点
- c# - uwp/wpf 中的叠加视图
- wordpress - 自定义创建账户
- github - 在 GitHub Action Workflow 中安装 GitHub 存储库
- swift - 在 Swift 中暂停 AVAudioPlayer 时遇到问题
- javascript - mongoose 的 find() 函数如何保持其执行并等待其链中稍后的函数首先完成?
- windows - 如何在 Windows 10 上使用 Symfony CLI 设置环境变量
- c - fgetc 如何与输入流交互?
- node.js - Nodemon 没有从 package.json 的脚本重新启动应用程序
- android - 从列表视图位置更改图像 alpha 并保存