工具与软件:
下午好!
初始化 TPL1401数字电位器时遇到问题、特别是在尝试写入 GENERAL_CONFIG 寄存器和 DPOT_POSITION 寄存器时。 我再添加一些背景信息。
与上一篇文章一样、我将使用 E2_studio 编程 IDE、而我将使用 Synergy S7G2微控制器、E2_studio 可提供可在后台控制 I2C 寻址+ R/W 的低层驱动程序! 即 bit、意味着您指定一个7位器件地址、然后根据用户使用的(写入/读取)方法、指定 R/W! 位设置为1或0:

读取 TPL1401数据表、地址字节为8位长、AD6 AD5 AD4 AD3 AD2 AD1 AD0 R/! w、与数据表相关前4位是固定的(1001)、接下来的3位取决于 A0引脚、由于我正在控制16 TPL1401、因此我完全有可能:
000
001.
010.
011.
最后、如 R/W 之前所述! 这是使用 I2C 底层方法进行控制的。 已知我必须设置从器件地址、所有可能的组合如下:
0x48 (1001 000) 7位长整型
0x49 (1001 001) 7位 long
0x4A (1001 010) 7位长
0x4B (1001 011) 7位长
如果我要执行 I2C 更新序列、我需要发送地址字节+命令字节+ MSDB + LSDB (32位)、E2_studio 在后台管理前8位、因此我作为用户、只需发送24位。
如果我要执行 I2C 读取序列、我需要发送地址字节+命令字节(写入请求)、然后发送读取请求并存储 TPL1401返回的任何内容。
现在、我可以验证是否读取 TPL1401 STATUS 寄存器和 GENERAL_CONFIG 寄存器。 当我尝试读取提到的设备时、我得到以下信息:
状态:0000 0000 0001 0100 --> 0x14、与 device_id[5:2]值匹配
GENERAL_CONFIG:0000 0001 1111 0000 ->与默认配置相匹配、DPOT_PDN[4:3]字段初始化为10 (断电至高阻抗)
因此、我假设我无法写入/读取 DPOT_POSITION 寄存器、所以逻辑操作是将 DPOT_PDN[4:3]设置为00:上电、问题是、当我尝试写入此寄存器时、似乎无法设置所需的值。
GENERAL_CONFIG 的长度为16位、因此我假设正确的寄存器配置为0000 0001 1110 0000、例如、该配置可以放置在包含两个位置的 uint8_t 数组内
//测试
DATA = 0xE0;
uint8_t i2c_data[2]={0x01、data};// MSB = 0x00、LSB = data
当我调用 i2c 方法时、似乎执行正确、但是当我尝试读取寄存器时、效果仍然与开始时一样、未应用于任何更改、因此我想知道可能缺少哪些内容、如果需要、我可以提供完整的代码。
在求和中、我的写入请求为24位长、命令字节+ MSB + LSB、但在读取相同的寄存器值时保持不变。
您好!