使用树莓和arduino的i2c工具和定制芯片

时间:2018-07-25 09:31:57

标签: i2c

关于我的工程师论文,我遇到了一个小问题。 我正在使用树莓作为与自定义芯片进行通信的接口-我正在使用i2c工具(i2cdetect i2cget和i2cset)。 芯片-之所以称为定制芯片,是因为我不了解制造商和型号(芯片本身被黑色液体覆盖,因此无法识别)。我找到了负责通信的引脚(因此我找到了Vcc GND SDA和SCL)。使用i2cdetect,我发现芯片的地址为0x73。

我想使用i2cdump从芯片读取某些内容,但是数据一直在变化,并且看起来每个读取的差异都不同:

No size specified (using byte-data access)
     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f    0123456789abcdef
00: XX 00 XX 00 00 XX 00 XX XX 00 XX XX 00 XX XX XX    X.X..X.XX.XX.XXX
10: XX 00 00 XX 00 00 XX XX XX 00 00 XX XX XX XX 00    X..X..XXX..XXXX.
20: XX XX 00 XX XX 00 00 XX XX 00 XX XX XX 00 00 XX    XX.XX..XX.XXX..X
30: 00 00 00 00 XX XX 00 XX 00 00 00 00 XX 00 XX 00    ....XX.X....X.X.
40: 00 00 XX 00 00 XX XX XX 00 00 00 XX XX XX XX 00    ..X..XXX...XXXX.
50: XX XX 00 00 XX XX XX XX 00 00 XX 00 XX XX XX 00    XX..XXXX..X.XXX.
60: XX 00 00 00 XX XX XX XX 00 XX XX XX 00 XX XX XX    X...XXXX.XXX.XXX
70: 00 00 00 00 XX 00 XX 00 00 XX 00 XX XX XX XX XX    ....X.X..X.XXXXX
80: 00 XX XX XX 00 XX 00 XX 00 00 XX 00 00 XX XX XX    .XXX.X.X..X..XXX
90: 00 00 00 XX 00 XX XX XX XX 00 00 XX XX XX XX 00    ...X.XXXX..XXXX.
a0: XX 00 00 XX 00 00 XX XX XX 00 00 XX XX XX 00 XX    X..X..XXX..XXX.X
b0: XX 00 00 XX XX XX 00 XX XX XX 00 XX XX XX XX 00    X..XXX.XXX.XXXX.
c0: XX XX XX XX XX 00 00 00 XX 00 00 00 XX XX 00 XX    XXXXX...X...XX.X
d0: XX XX XX XX XX XX XX XX 00 XX XX XX 00 XX XX 00    XXXXXXXX.XXX.XX.
e0: XX XX XX XX XX XX XX XX 00 XX XX XX 00 XX XX XX    XXXXXXXX.XXX.XXX
f0: 00 00 XX XX 00 XX 00 00 00 00 XX XX 00 XX 00 00    ..XX.X....XX.X..

No size specified (using byte-data access)
     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f    0123456789abcdef
00: XX 00 00 XX XX 00 00 XX XX XX XX XX XX XX XX XX    X..XX..XXXXXXXXX
10: 00 00 XX XX XX XX XX XX XX XX XX XX XX 00 00 XX    ..XXXXXXXXXXX..X
20: XX XX 00 XX 00 XX XX 00 XX XX XX 00 XX XX XX XX    XX.X.XX.XXX.XXXX
30: XX XX XX XX XX XX 00 XX XX 00 XX 00 00 00 XX XX    XXXXXX.XX.X...XX
40: 00 XX XX XX XX XX XX XX XX 00 00 XX XX 00 XX 00    .XXXXXXXX..XX.X.
50: XX 00 XX 00 XX XX XX 00 XX XX XX 00 00 00 XX XX    X.X.XXX.XXX...XX
60: XX XX XX XX XX XX XX XX 00 00 XX XX 00 XX XX 00    XXXXXXXX..XX.XX.
70: 00 00 XX 00 XX XX XX 00 XX 00 XX XX XX 00 00 XX    ..X.XXX.X.XXX..X
80: XX XX XX 00 00 XX XX XX XX 00 XX XX XX XX XX XX    XXX..XXXX.XXXXXX
90: 00 XX 00 XX 00 XX 00 00 XX XX XX XX XX XX XX XX    .X.X.X..XXXXXXXX
a0: 00 XX XX 00 XX 00 XX 00 00 XX XX XX XX XX XX XX    .XX.X.X..XXXXXXX
b0: XX XX XX 00 XX 00 XX XX XX XX XX XX XX 00 00 XX    XXX.X.XXXXXXX..X
c0: 00 XX 00 XX XX XX XX 00 00 00 XX XX 00 00 XX 00    .X.XXXX...XX..X.
d0: 00 XX XX XX XX XX XX XX XX XX XX 00 XX 00 00 XX    .XXXXXXXXXX.X..X
e0: XX XX 00 XX XX XX XX 00 00 XX XX 00 XX XX XX 00    XX.XXXX..XX.XXX.
f0: 00 XX 00 XX 00 XX XX XX XX 00 XX 00 XX 00 XX XX    .X.X.XXXX.X.X.XX

我在Arduino上也有某种嗅探器。因此,我模拟了相同的地址(0x73),并连接到使用该芯片的计算机。我看到必须进行某种身份验证才能解锁芯片以进行读取,因为每次机器向芯片发送以下消息时:

- --MESSAGE---
CC
B9
--END MESSAGE--
Request
- --MESSAGE---
E5
87
D4
D5
B2
76
--END MESSAGE--
Request
- --MESSAGE---
FE
8B
--END MESSAGE--
Request
- --MESSAGE---
17
75
25
F0
49
1A
--END MESSAGE--
Request
- --MESSAGE---
30
45
--END MESSAGE--
Request
- --MESSAGE---
49
2B
7A
29
DE
5
--END MESSAGE--
Request
- --MESSAGE---
62
17
--END MESSAGE--
Request
- --MESSAGE---
7B
19
4F
0
E3
B6
--END MESSAGE--
Request
- --MESSAGE---
94
E1
--END MESSAGE--
Request
- --MESSAGE---
AD
CF
98
8D
C0
E
--END MESSAGE--
Request

也许可以解释一下嗅探器的工作原理。它显示到达我们所连接地址的所有消息(数据包)为(0x73)。 例如,如果嗅探器的地址为0x73,我们发送以下命令:

i2cget -y 1 0x73 0xff

我们将得到这样的答案:

- --MESSAGE---
FF
--END MESSAGE--
Request

当我们发送时:

i2cset -y 1 0x73 0xff 0x01 0x02 0x03

我们得到:

- --MESSAGE---
FF
1
2
3
--END MESSAGE--

因此,如果机器发出请求,则嗅探器显示“请求”。 如果有要设置的内容,我们可以看到它,因为第一个字节是要设置的内存地址,其余字节是要设置的数据。

现在,机器如何立即发送数据以进行设置和请求?

- --MESSAGE---
E5
87
D4
D5
B2
76
--END MESSAGE--
Request

我正在尝试解锁该芯片以重置其值和/或更改它。我没有足够的经验,这是问题所在,但我学得很快。我也无法在互联网上找到有关此案的更多信息。

有什么帮助或想法吗?也许有些事情我做错了,对此我一无所知?

0 个答案:

没有答案