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.
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.
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.
> Gibt es da eine SW die das kann? Was benötigt man an HW?
Microchip Serial Analyzer
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
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.
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.
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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.