Erste Schritte mit der Wokwi Custom Chips C API
Die Chips API ist momentan in der Beta. Bitte teile deine Tests und gib im #custom-chips
Kanal auf unserem Discord Server Feedback.
Einleitung
Die Custom Chips API ermöglicht es dir, neue Simulationsmodelle zu erstellen und die Funktionalität von Wokwi zu erweitern. Du kannst neue Sensoren, Displays, Speicher, Testgeräte und sogar eigene Hardware simulieren.
Benutzerdefinierte Chips werden normalerweise in C erstellt, aber du kannst jeder Sprache nutzen, die zu WebAssembly kompiliert wird (z.B. Rust). Zusätzlich gibt es experimentellen Support für Chips in Verilog.
Tutorials
- Video Tutorial - Drei Beispiele in 15 Minuten
- Step-by-step blog tutorial - 7-Segment Display Treiberchip von Anfang an
Erste Schritte
Öffne ein beliebiges Wokwi Projekt (oder erstelle ein neues Projekt) und klicke auf das blaue "+" im Editor. Wähle "Custom Chip" in der Liste aus.
Gib im Dialog den Namen des Chips sowie die Sprache ein. Als Sprache wird C empfohlen. Klicke anschließend auf "Create Chip", um den Chip zu erstellen.
Der Chip wird zur Grafik hinzugefügt und diese beiden Dateien werden erstellt:
- eine JSON Datei mit den Pins und Einstellungen des Chips (Name, Autor, etc.)
- eine C (bzw. Rust/Verilog) Datei mit dem Code für den Chip
Die JSON Datei hat Standardmäßig vier Pins ("VCC", "GND", "IN", "OUT"). Die Name und Anzahl der Pins kannst du in der JSON Datei jederzeit ändern.
Am Anfang besteht die C Datei nur aus Beispielcode. Du kannst deinen Code in der chip_init()
Funktion hinzufügen. Jeder Chip ruft diese Funktion am Anfang auf und du kannst sie nutzen, um den Zustand, Timer oder Aktionen an Pins zu definieren.
Der Beispielcode enthält auch die Struktur chip_state_t
, in der du die Zustände speichern kannst, die dein Chip braucht. Du kannst das Feld user_data
von i2c_config_t
, timer_config_t
, etc. nutzen, um Pointer zur Stuktur zu speichern.
Benutzerdefinierten Chip debuggen
Du kannst mit der Standard C Funktion printf()
Debug Nachrichten senden. Achte darauf, stdio.h
einzubinden. Die Nachrichten werden im "Chips Console" Tab unter der Konsole erscheinen:
Zusätzlich kannst du den Wokwi Logic Analyzer nutzen, um die Kommunikation mit dem Chip zu debuggen.
Achte darauf, einen Zeilenumbruch ("\n") am Ende von jeder printf()
Nachricht einzufügen. Der Simulator zeigt Nachrichten erst, wenn ein Zeilenumbruch kommt.
Chips API reference 📖
- GPIO pins API
- Analog API
- Time simulation API
- UART API
- I2C Device API
- SPI Device API
- Attributes
- Framebuffer API
Beispiele
Basics
- Digital Inverter - Inverts the input signal
- XOR gate - Implements a XOR gate
- Timer Chip - Showing how to use the Time API and create timers
Kommunikation
- SPI Chip - A basic ROT13 cipher over SPI
- UART Chip - A basic ROT13 cipher over UART
- I2C Chip - Simple counter with interrupt output
- EEPROM Chip - Simple I2C memory with 256 kbits by Benny Meisels
Displays
- Framebuffer Chip - Shows how to implement a custom display driver chip
- SSD1306 Display - 128x64 monochrome OLED display chip (using I2C)
- IL9163 Display - 128x128 color LCD display chip (using SPI)
Sensoren
- LM75A Chip - I2C digitaler Temperatursensor
- I2C Keypad Driver Example by Yewolf
- DS18B20 Chip - Dallas Semi DS18B20 Temperature Sensor over OneWire by Bonny Rais
Komplexe Chips
- CD4051B Multiplexer Example - Analog Multiplexer by Chris Schmidt
- PCA9685 Chip - 16-channel PWM driver over I2C by Bonny Rais