Arduino 使用I2C接口MCP4651-502E数字电位器

Arduino 使用I2C接口MCP4651-502E数字电位器,arduino,i2c,Arduino,I2c,我使用两个MCP4651双数字电位器,我想从Arduino Uno到I2C控制。以下是MCP4651的数据表,因此您无需查找: 我也会附上PCB原理图,但我没有足够的声誉 我正试图将我的值写入雨刮器1寄存器,如数据表第49页所示。但我尝试的每一个命令都没有得到认可。我还附上了示波器的截图 这是我的密码: #包括 无效设置() { Wire.begin(); } void循环() { 导线开始传输(40); 线写(0b10010000); 连线写入(0b10000000); 线端传动(40);

我使用两个MCP4651双数字电位器,我想从Arduino Uno到I2C控制。以下是MCP4651的数据表,因此您无需查找:

我也会附上PCB原理图,但我没有足够的声誉

我正试图将我的值写入雨刮器1寄存器,如数据表第49页所示。但我尝试的每一个命令都没有得到认可。我还附上了示波器的截图

这是我的密码:

#包括
无效设置()
{
Wire.begin();
}
void循环()
{
导线开始传输(40);
线写(0b10010000);
连线写入(0b10000000);
线端传动(40);
延迟微秒(500);
}

I2C协议显然是有效的,否则我将无法得到确认的地址,我尝试了两个电位器,两个刮水器,写入,递增和递减。没有一个成功。如果有人知道我做错了什么,我将不胜感激。

数据表第49页详细介绍了一般通话详情

一般调用命令详见第48页。当您使用常规呼叫地址(0)同时与所有设备通信时,将使用这些命令


您正在尝试与总线上的单个设备通信,因此您应该注意从第51页开始的详细命令,特别是表7-1、7-2和图7-1。

第49页是通用调用-此处的地址应为0,而不是0x28(40)哪个是从机地址查看第55页,了解如何处理从机地址命令。啊,谢谢,我明白了,所以对于雨刮器1,设备内存地址0b1001仅用于一般调用,0b0001用于使用从机地址。这就是我认为数据表读作是的。如果事情仍然不顺利,请发表评论,如果还有其他问题,请提出另一个问题。