您好,
我正在使用TCA9548A多路复用器与多个AD7746电容-数字转换器以及一个测试性3.2 微控制器连接。 AD7746有19个数据寄存器(0-18),当 我尝试从0 (默认寄存器)以外的任何寄存器读取数据时,遇到了许多问题。
例如,如果我想从 通道7上的设备读取,我 选择通道7并读取19字节(从寄存器0开始,每个寄存器一个字节。 但是,我注意到,这实际上是从连接到通道0的设备中为我提供数据。 下面是我的电路输出示例。 信道7上只有一个设备连接到MUX。 其它信道未连接到任何设备。 所有8个通道都具有4.7K上拉电阻器。 以下输出中冒号后面的数字都是8位数字;打印输出中不包括二进制数字上的前导零。 这些值都不匹配寄存器的默认值或我尝试写入特定寄存器的值(7,9,10,11,13,14)。
----------------
示例输出#1
----------------
来自寄存器0:0的当前数据
来自寄存器1:0的当前数据
来自寄存器2的当前数据:0
来自寄存器3的当前数据:0
来自寄存器4的当前数据:0
寄存器5:0中的当前数据
来自寄存器6:0的当前数据
来自寄存器7:0的当前数据
来自寄存器8:0的当前数据
来自寄存器9:0的当前数据
来自寄存器A的当前数据:0
来自寄存器B的当前数据:0
来自寄存器C的当前数据:0
来自寄存器D的当前数据:0
来自寄存器E的当前数据:0
来自寄存器F的当前数据:0
来自寄存器10的当前数据:0
来自寄存器11的当前数据:0
来自寄存器的当前数据12:0
----------------------------------
但是,如果我使用相同的函数并使用(1<7)而不是0,我将得到以下输出。 唯一的区别是,我写的不是0 (选择数据寄存器0),而是1000万 (二进制),我最初预期根本不起作用, 但稍后怀疑可能会导致多路复用器切换到通道7 (如果它正在写入TCA9548A上的控制寄存器,而不是修改AD7746上的地址指针)。
很明显,当我通过多路复用器从AD7746请求多字节数据时,我只是在TCA9548A控制寄存器中重复19次的字节。 AD7746地址指针在将数据传输到主寄存器后自动增加到下一个寄存器,因此我实际上应该从19个寄存器中的每个寄存器获取数据(当微控制器直接连接到不带多路复用器的AD7746时,这种方法有效)。
----------------------------------
示例输出#2
----------------------------------
来自寄存器0的当前数据:1000万
来自寄存器1的当前数据:1000万
来自寄存器2的当前数据:1000万
登记册3的当前数据:1000万
来自寄存器4的当前数据:1000万
来自寄存器5的当前数据:1000万
来自登记册6的当前数据:1000万
来自登记册7的当前数据:1000万
来自登记册8的当前数据:1000万
来自登记册9的当前数据:1000万
来自登记册A的当前数据:1000万
来自寄存器B的当前数据:1000万
来自寄存器C的当前数据:1000万
来自寄存器D的当前数据:1000万
来自登记册E的当前数据:1000万
来自登记册F的当前数据:1000万
来自登记册10的当前数据:1000万
来自登记册11的当前数据:1000万
来自登记册12的当前数据:1000万
----------------------------------
如果我尝试从信道7上的设备上的各个寄存器读取数据,我只需返回要读取的寄存器的地址。
----------------------------------
示例输出#3
----------------------------------
来自设备7:0上寄存器0的当前数据
设备7:1上寄存器1的当前数据
来自设备7:10上寄存器2的当前数据
设备7:11上寄存器3的当前数据
设备7:100上寄存器4的当前数据
来自设备7上寄存器5的当前数据:101.
来自设备7上寄存器6的当前数据:110
来自设备7寄存器7的当前数据:111.
设备7:1000上寄存器8的当前数据
设备7上寄存器9的当前数据:1001.
来自设备7上寄存器10的当前数据:1010
设备7上寄存器11的当前数据:1011
设备7:1100上寄存器12的当前数据
来自设备7寄存器13的当前数据:1101.
来自设备7寄存器14的当前数据:1110
----------------------------------
当我尝试通过多路复用器读取AD7746中的数据时,明显出现了错误。 这也意味着我无法知道是否能够向AD7746写信。 当我刚刚将微控制器连接到AD7746时,我的代码工作正常,所以我必须相信问题出在多路复用器上。 我的当前代码已被修改为对多路复用器使用正确的I2C地址,并且以100kHz时钟频率运行。
是否有人遇到类似的问题? TCA9548A是否与多寄存器I2C设备完全兼容?