Forum: Mikrocontroller und Digitale Elektronik I2C-HW/SW zum effizienten Test


von Bernd G. (Gast)


Lesenswert?

Ich frage folgendes in die Runde nach einem Tipp:

Ich suche nach einer Testsoftware mit der ich I2C-Geräte durchtesten 
kann. Es handelt sich um mehre Systemkomponenten, die in einem Bussystem 
zusammen geschaltet sind und an unterschiedlichen I2C-Bussen hängen. 
Diese will ich abklemmen und testen. Das soll möglichst einfach und 
effektiv laufen, da per SW automatisierbar. Benötigt wird z.B. eine 
Software für den PC, die ein Script abarbeiten kann und die auch 
stückchenweise vorgeht und prüft.

Ein Fall ist z.B. dass ein Gerät mit unterschiedlichen Parametern per 
I2C konfiguriert wird und dann Daten auf ein anderes geschoben werden, 
wobei ich die Status Infos aus dem zweiten Geräte lesen muss, was real 
ein Prozessor tut. Es sollen dann alle Grenzfälle durchgefahren werden 
und gescheckt werden, ob bei den Eingangsdaten (Druckgrößen) die Grenzen 
erkannt und Überläufe detektiert werden. Es geht da um ca 5x2 x 7x2 = 
140 Kombinationen für die die Antworten aufgezeichnet werden müssen.

Gibt es da eine SW die das kann? Was benötigt man an HW? Ich nehme an 2 
USB I2C Kabel-Konverter?

Bevor Fragen kommen - wir haben CAN aus dem System geschmissen und alles 
auf I2C umgestellt.

von Purzel H. (hacky)


Lesenswert?

Mit Seriewiderstaenden auf der Leitung kann man Signale aufdruecken. Per 
Teststecker, oder Nadeladapter.
Ich wuerd Nadeladapter empfehlen. Ich wuerd's mit einem Controller, 
welcher per USB Serial mit dem PC verbunden ist loesen. Der kann dann 
irgendwelches Timing einhalten, welches man dem PC nicht anvertrauen 
sollte.

von Crazy Harry (crazy_h)


Lesenswert?

Schau dir das mal an
https://de.elv.com/elv-usb-i2c-interface-komplettbausatz-inkl-gehaeuse-bearbeitet-und-bedruckt-usb-kabel-3-anschlusskabel-084123

Ich würde das eher mit einem uC-Board machen und zur PC-Seite hin nur 
Status-/Testinformationen senden.

von Motopick (motopick)


Lesenswert?

> Gibt es da eine SW die das kann? Was benötigt man an HW?

Microchip Serial Analyzer

von Bernd G. (Gast)


Lesenswert?

Motopick schrieb:
> Microchip Serial Analyzer
Danke

von Max G. (l0wside) Benutzerseite


Lesenswert?

Das ELV-Ding fand ich eher fürchterlich durch den Protokolloverhead.

Raspberry Pi + Python ist meines Erachtens das Mittel der Wahl. 
Vielleicht noch einen Pegelwandler zwischenschalten, damit die Raspi-I/O 
eine erhöhte Überlebenschance haben.

Grüße Max

von Peter D. (peda)


Lesenswert?

Bernd H. schrieb:
> wir haben CAN aus dem System geschmissen und alles
> auf I2C umgestellt.

Echt jetzt?
Nachdem Philips seine 8051 mit I2C ausrangiert hat, habe ich derart 
massive Problem mit I2C bekommen, daß wird auf CAN umgestiegen sind.
Insbesondere die 8051 und AVR von Atmel sind sowas von buggy. Und beim 
P89C668 Nachbau von Tekmos lief das I2C überhaupt nicht.

Neben dem großen Vorteil, daß sich bei CAN schon die Hardware um alles 
kümmert (Kollision, Arbitration, CRC, Retry, Puffer) kann man die 
Signale auch viel einfacher galvanisch trennen.
CAN läuft völlig problemlos.

I2C läuft bei Dir wohl auch nicht stabil, sonst würdest Du ja keinen 
Tester benötigen.

von Crazy Harry (crazy_h)


Lesenswert?

Peter D. schrieb:
> I2C läuft bei Dir wohl auch nicht stabil, sonst würdest Du ja keinen
> Tester benötigen.

Das kann auch nur einfach für eine Abnahmemessung/einen Abnahmetest 
sein.

von Bernd G. (Gast)


Lesenswert?

Crazy H. schrieb:
> Das kann auch nur einfach für eine Abnahmemessung/einen Abnahmetest
> sein.
Vor allem auch Entwicklung.

Peter D. schrieb:
> I2C läuft bei Dir wohl auch nicht stabil, sonst würdest Du ja keinen
> Tester benötigen.
NeNe, erst mal brauchen wir überhaupt genug Tester und dann eben einen, 
der die ganzen Szenarien durchrattern kann. Auf I2C bin ich festgelegt. 
Die massenhaft verbauten Sensoren gibt es nur in I2C. Da ist nichts zu 
rütteln.

Dass man den Rest auch entfernt hat, liegt wohl auch an Kosten. Nach 
meinem Wissen ist die Haupttriebfeder, dass die ehemalige GUI-Einheit 
nicht mehr mit CAN, sondern über Ethernet zuppelt. Da liefen dann 
CAN-Aapter, die zu teuer geworden sind.

von Steve van de Grens (roehrmond)


Lesenswert?

Hardware
https://www.az-delivery.de/products/digispark-board

Firmware
https://github.com/harbaum/I2C-Tiny-USB/blob/master/digispark

Zum Firmware-Upload brauchst du dieses Programm:
https://github.com/micronucleus/micronucleus/releases

Das Ding wird vom Linux Kernel unterstützt, du kannst deinen Testautomat 
daher in jeder beliebigen Programmiersprache schrieben, gerne auch als 
Bash Script.

Ich habe mir dazu folgende Notizen gemacht:

The following commands must be executed as root.

Upload firmware:
1
micronucleus --run --dump-progress --type intel-hex main.hex

Install I2C Tools and load the kernel driver:
1
apt install i2c-tools
2
modprobe i2c-dev

Scan for I2C busses:
1
root@stefanspc:~# i2cdetect -l
2
i2c-0  smbus       SMBus I801 adapter at 5040        SMBus adapter
3
i2c-1  i2c         nvkm-0000:01:00.0-bus-0000        I2C adapter
4
i2c-2  i2c         nvkm-0000:01:00.0-bus-0001        I2C adapter
5
i2c-3  i2c         nvkm-0000:01:00.0-bus-0002        I2C adapter
6
i2c-4  i2c         nvkm-0000:01:00.0-bus-0005        I2C adapter
7
i2c-5  i2c         nvkm-0000:01:00.0-bus-0006        I2C adapter
8
i2c-6  i2c         nvkm-0000:01:00.0-bus-0007        I2C adapter
9
i2c-7  i2c         nvkm-0000:01:00.0-bus-0008        I2C adapter
10
i2c-8  i2c         nvkm-0000:01:00.0-bus-0009        I2C adapter
11
i2c-9  i2c         nvkm-0000:01:00.0-aux-000a        I2C adapter
12
i2c-10  i2c         nvkm-0000:01:00.0-aux-000b        I2C adapter
13
i2c-11  i2c         nvkm-0000:01:00.0-aux-000c        I2C adapter
14
i2c-12  i2c         nvkm-0000:01:00.0-aux-000d        I2C adapter
15
i2c-13  i2c         i915 gmbus dpc                    I2C adapter
16
i2c-14  i2c         i915 gmbus dpb                    I2C adapter
17
i2c-15  i2c         i915 gmbus dpd                    I2C adapter
18
i2c-16  i2c         AUX A/DDI A/PHY A                 I2C adapter
19
i2c-17  i2c         i2c-tiny-usb at bus 001 device 109  I2C adapter

Check capabilities of the I²C adapter:
1
root@stefanspc:~# i2cdetect -F 17
2
3
Functionalities implemented by /dev/i2c-17:
4
I2C                              yes
5
SMBus Quick Command              yes
6
SMBus Send Byte                  yes
7
SMBus Receive Byte               yes
8
SMBus Write Byte                 yes
9
SMBus Read Byte                  yes
10
SMBus Write Word                 yes
11
SMBus Read Word                  yes
12
SMBus Process Call               yes
13
SMBus Block Write                yes
14
SMBus Block Read                 no
15
SMBus Block Process Call         no
16
SMBus PEC                        no
17
I2C Block Write                  yes
18
I2C Block Read                   yes

Scan the I2C bus:
1
root@stefanspc:~# i2cdetect 17
2
3
WARNING! This program can confuse your I2C bus, cause data loss and worse!
4
I will probe file /dev/i2c-17.
5
I will probe address range 0x08-0x77.
6
Continue? [Y/n] Y
7
8
     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
9
00:                         -- -- -- -- -- -- -- -- 
10
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
11
20: 20 -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
12
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
13
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
14
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
15
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
16
70: -- -- -- -- -- -- -- --

Send data:
1
i2cset 17 0x20 0x12 1
This example sends the value 1 to address 0x12 on slave 0x20 at bus 17.

Receive data:
1
i2cget 17 0x20 0x12 i 5
This example receives 5 bytes from address 0x12 on slave 0x20 at bus 17.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.