mirror of
https://github.com/logicog/RTLPlayground.git
synced 2026-08-30 14:52:51 +08:00
140 lines
3.7 KiB
Markdown
140 lines
3.7 KiB
Markdown
# LED GPIO Utilities
|
|
|
|
This directory contains utility talking to RTL837x switch IC via I2C bus. These scripts are designed to help with monitoring, debugging GPIO, and identifying LED configurations.
|
|
|
|
## Hardware requirements
|
|
|
|
To use these utilities, you need:
|
|
|
|
- A hardware dongle that can communicate with I2C devices. One example is the [I2C-Pico-USB](https://github.com/dquadros/I2C-Pico-USB) which provides USB-to-I2C connectivity.
|
|
- Connection between the hardware dongle and the RTL837x's I2C communication port.
|
|
|
|
## Scripts
|
|
|
|
### 1. `i2c_read_rtl_gpio.py`
|
|
|
|
This script reads RTL GPIO register values via I2C and displays changes in GPIO states.
|
|
|
|
**Features:**
|
|
|
|
- Reads live RTL GPIO register values via I2C (default address 0x5C)
|
|
- Monitors GPIO changes with delta detection
|
|
- Allows specification of I2C bus, sleep interval, and ignored GPIO pins
|
|
- Shows changes in real-time with GPIO index display
|
|
|
|
**Usage:**
|
|
```bash
|
|
# Basic usage (defaults to I2C bus 1, 2s sleep interval)
|
|
python3 i2c_read_rtl_gpio.py
|
|
|
|
# Specify I2C bus
|
|
python3 i2c_read_rtl_gpio.py --i2c-bus 0
|
|
|
|
# Specify sleep interval in seconds
|
|
python3 i2c_read_rtl_gpio.py --sleep-interval 5
|
|
|
|
# Ignore specific GPIO pins
|
|
python3 i2c_read_rtl_gpio.py --ignored-ios 28 31 34 44
|
|
|
|
# Combine options
|
|
python3 i2c_read_rtl_gpio.py --i2c-bus 2 --sleep-interval 1 --ignored-ios 28 31
|
|
```
|
|
|
|
**Output Format:**
|
|
|
|
- Displays register address and data in hex format
|
|
- Shows GPIO pins that have changed since last read
|
|
- Example: `0044: 00 00 00 00 00 00 00 00`
|
|
|
|
### 2. `i2c_dump_rtl_regs.py`
|
|
|
|
This script dumps all register values from an RTL device via I2C.
|
|
|
|
**Features:**
|
|
|
|
- Dumps registers sequentially from address 0x0000 to 0xFFFF
|
|
- Reads 16 bytes at a time for efficiency
|
|
- Configurable I2C bus number
|
|
- Provides complete register dump in hex format
|
|
|
|
**Usage:**
|
|
```bash
|
|
# Basic usage (defaults to I2C bus 1)
|
|
python3 i2c_dump_rtl_regs.py >reg_dump.txt
|
|
|
|
# Specify I2C bus
|
|
python3 i2c_dump_rtl_regs.py --bus 0 >reg_dump.txt
|
|
|
|
# Or using short option
|
|
python3 i2c_dump_rtl_regs.py -b 2 >reg_dump.txt
|
|
```
|
|
|
|
**Output Format:**
|
|
|
|
- Displays address and 16 bytes of data in hex format
|
|
- Example: `0000: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00`
|
|
|
|
### 3. `dec_leds_from_dump.py`
|
|
|
|
This script decodes LED configuration from a register dump file ( the output from `i2c_dump_rtl_regs.py`).
|
|
|
|
**Features:**
|
|
|
|
- Parses register dump files (reg_dump.txt format)
|
|
- Decodes LED pad configurations and LED sets
|
|
- Maps LED types to bit positions based on configuration
|
|
- Outputs LED mux configuration and set mappings
|
|
|
|
**Usage:**
|
|
```bash
|
|
# Must be run in same directory as reg_dump.txt
|
|
python3 dec_leds_from_dump.py
|
|
```
|
|
|
|
**Output Format:**
|
|
|
|
- LED pad configuration (hex values for each pad)
|
|
- LED set configurations with descriptions of LED types
|
|
- Port selection mappings
|
|
|
|
**Requirements:**
|
|
|
|
- Requires a `reg_dump.txt` file containing the register dump output
|
|
|
|
## Requirements
|
|
|
|
All scripts require:
|
|
|
|
- Python 3
|
|
- `smbus2` Python package
|
|
|
|
Install with:
|
|
```bash
|
|
pip3 install smbus2
|
|
```
|
|
|
|
## Common Usage Patterns
|
|
|
|
### Monitoring GPIO Changes
|
|
```bash
|
|
# Monitor GPIO changes on bus 1 with 1-second intervals
|
|
python3 i2c_read_rtl_gpio.py --i2c-bus 1 --sleep-interval 1
|
|
```
|
|
|
|
### Register Analysis
|
|
```bash
|
|
# Dump all device registers
|
|
python3 i2c_dump_rtl_regs.py --bus 2 > reg_dump.txt
|
|
|
|
# Analyze the register dump to understand LED configuration
|
|
python3 dec_leds_from_dump.py
|
|
```
|
|
|
|
## Configuration
|
|
|
|
All scripts support command-line arguments for flexible configuration:
|
|
|
|
- `--i2c-bus` or `-b`: Specify I2C bus (default: 1)
|
|
- `--sleep-interval` or `-s`: Sleep between reads in seconds (default: 2)
|
|
- `--ignored-ios` or `-i`: GPIO pins to ignore (default: [28, 31, 34, 44])
|