master
Ondřej Hruška 7 years ago
parent 13e2a88af4
commit 7cee780201
Signed by: MightyPork
GPG Key ID: 2C5FD5035250423D
  1. 1
      README.md
  2. 52
      UNIT_SIPO.md

@ -13,4 +13,5 @@ This repository specifies the control protocol implemented by [gex-core](https:/
- [UNIT_DO.md](UNIT_DO.md) - Digital Output - [UNIT_DO.md](UNIT_DO.md) - Digital Output
- [UNIT_DI.md](UNIT_DI.md) - Digital Input - [UNIT_DI.md](UNIT_DI.md) - Digital Input
- [UNIT_NEOPIXEL.md](UNIT_NEOPIXEL.md) - NeoPixel driver - [UNIT_NEOPIXEL.md](UNIT_NEOPIXEL.md) - NeoPixel driver
- [UNIT_SIPO.md](UNIT_SIPO.md) - Multi-cast Shift Register Driver

@ -0,0 +1,52 @@
# SIPO - Multi-cast Shift Register Driver
*SIPO stands for Serial Input Parallel Output*
- Used for building user interfaces (LED displays etc.)
- Designed for driving 74xx595 or 74xx4094
- Can drive multiple data lines in parallel
- Offers direct pin access without sending data (no clock pulse)
- Supports data latch on Store pulse (see the WRITE command for details)
- Pin polarities are configurable in the unit settings.
The `DIRECT_*` commands are mostly meant for debugging purposes when trying to communicate with an unfamiliar SIPO-based board.
## Commands
### WRITE (0x00)
Sends data to the shift registers.
After each byte, the *Shift* pin is pulsed. After the last byte and the *Shift* pulse, the *Latch* data is output followed by the *Store* pin pulse.
The *Latch* data is normally 0 and doesn't matter; however, it's possible to design
external circuitry that latches the data pins on the *Store* pulse, e.g. for brightness
control or extra LEDs.
*Request:*
- u16 - latch data to output before the Store pulse - all outputs, packed
- (u8 array) x num_outputs
- must be a multiple of the outputs count (if 1, simply the output data)
### DIRECT_DATA (0x01)
Direct write to the data pins, without any pulse.
*Request:*
- u16 - data to output, packed
### DIRECT_CLEAR (0x02)
Pulse the *Clear* output.
### DIRECT_SHIFT (0x03)
Pulse the *Shift* output.
### DIRECT_STORE (0x04)
Pulse the *Store* output.
## Events
*No events defined for this unit type.*
Loading…
Cancel
Save