使用 I2C 连接 MCP4651-502E 数字电位器
Interfacing MCP4651-502E digital potentiometer using I2C
我正在使用两个 MCP4651 双数字电位器,我想通过 I2C 从 Arduino Uno 控制它们。这是 MCP4651 的数据表,因此您无需查找:http://www.farnell.com/datasheets/1789212.pdf
我也会附上PCB原理图,但是我的名气不够
我正在尝试将我的值写入数据表第 49 页上的抽头 1 寄存器。但是我尝试的每个命令都没有得到确认。我还附上了示波器的截图。
这是我的代码:
#include <Wire.h>
void setup()
{
Wire.begin();
}
void loop()
{
Wire.beginTransmission(40);
Wire.write(0b10010000);
Wire.write(0b10000000);
Wire.endTransmission(40);
delayMicroseconds(500);
}
I2C 协议显然有效,否则我不会得到确认地址,我尝试了两个电位器,两个雨刮器,写入,递增和递减。没有一个成功。如果有人知道我做错了什么,我将不胜感激。
数据表的第 49 页详细介绍了一般调用的详细信息。
广播呼叫命令详见第48页。这些命令在您使用广播呼叫地址(0)同时与所有设备通信时使用。
您正在尝试与总线上的单个设备通信,因此您应该注意从第 51 页开始详细说明的命令,尤其是 Table7-1、7-2 和图 7- 1.
我正在使用两个 MCP4651 双数字电位器,我想通过 I2C 从 Arduino Uno 控制它们。这是 MCP4651 的数据表,因此您无需查找:http://www.farnell.com/datasheets/1789212.pdf
我也会附上PCB原理图,但是我的名气不够
我正在尝试将我的值写入数据表第 49 页上的抽头 1 寄存器。但是我尝试的每个命令都没有得到确认。我还附上了示波器的截图。
这是我的代码:
#include <Wire.h>
void setup()
{
Wire.begin();
}
void loop()
{
Wire.beginTransmission(40);
Wire.write(0b10010000);
Wire.write(0b10000000);
Wire.endTransmission(40);
delayMicroseconds(500);
}
I2C 协议显然有效,否则我不会得到确认地址,我尝试了两个电位器,两个雨刮器,写入,递增和递减。没有一个成功。如果有人知道我做错了什么,我将不胜感激。
数据表的第 49 页详细介绍了一般调用的详细信息。
广播呼叫命令详见第48页。这些命令在您使用广播呼叫地址(0)同时与所有设备通信时使用。
您正在尝试与总线上的单个设备通信,因此您应该注意从第 51 页开始详细说明的命令,尤其是 Table7-1、7-2 和图 7- 1.