GPIO Pin Map
The Cypress FX2 uses three GPIO ports for hardware control on the SkyWalker-1: Port 0 (IOA), Port 3 (IOD), and Port B (XRAM-mapped IOB). Pin assignments differ significantly between firmware versions due to PCB revisions and design changes.
Port 0 / Port A (SFR 0x80, IOA)
Section titled “Port 0 / Port A (SFR 0x80, IOA)”| Pin | v2.06 | Rev.2 v2.10 | v2.13 | Notes |
|---|---|---|---|---|
| P0.0 | — | LNB control (0x97) | DiSEqC data | DiSEqC data pin moved across versions |
| P0.1 | Power enable | Power enable | Power enable | BCM4500 power supply enable |
| P0.2 | Power disable | Power disable (init=0x84) | Power disable | BCM4500 power supply disable |
| P0.3 | 22 kHz tone | 22 kHz tone | 22 kHz tone | Gates external 22 kHz oscillator (all versions) |
| P0.4 | LNB 13V/18V | LNB 13V/18V + DiSEqC data | LNB 13V/18V | Also SET_DN_SWITCH bit-bang (all versions) |
| P0.5 | BCM4500 RESET | GPIO status input (0x98) | BCM4500 RESET | Reset and feedback pin |
| P0.6 | — | GPIO control (0x97) | — | LNB control on Rev.2 only |
| P0.7 | DiSEqC data | Streaming indicator | Streaming indicator | DiSEqC data on v2.06 only |
| Pin | Custom v3.01.0 | Notes |
|---|---|---|
| P0.0 | — | Unused |
| P0.1 | Power enable | BCM4500 power supply enable (HIGH = on) |
| P0.2 | Power disable | BCM4500 power supply disable (LOW = off) |
| P0.3 | 22 kHz tone | Gates external 22 kHz oscillator |
| P0.4 | LNB 13V/18V | Voltage select: LOW = 13V, HIGH = 18V |
| P0.5 | BCM4500 RESET | LOW = reset asserted, HIGH = released |
| P0.6 | — | Unused |
| P0.7 | DiSEqC data + streaming | DiSEqC data (matches v2.06); also streaming indicator |
Port 3 / Port D (SFR 0xB0, IOD)
Section titled “Port 3 / Port D (SFR 0xB0, IOD)”These pins are consistent across all firmware versions:
| Pin | Function | Active State | Notes |
|---|---|---|---|
| P3.0 | Init HIGH | — | Set during initialization |
| P3.4 | GPIO control | — | Used by Rev.2 FUN_CODE_1fcf |
| P3.5 | TS_EN | LOW | Transport stream enable: LOW = active, HIGH = idle |
| P3.6 | DVB mode | — | BCM4500 mode select; DiSEqC port direction (Rev.2) |
| P3.7 | BCM4500 control | HIGH (idle) | De-asserted (HIGH) when streaming stops |
Port B (XRAM-mapped IOB)
Section titled “Port B (XRAM-mapped IOB)”Port B is used exclusively by the internal debug commands 0x96—0x98. These commands are not used by the Linux or Windows drivers.
| Pin | Function | Command |
|---|---|---|
| IOB.0 | GPIO status input | GET_GPIO_STATUS (0x98) |
| IOB.1 | LNB control line 1 | SET_GPIO_PINS (0x97) |
| IOB.2 | LNB control line 2 | SET_GPIO_PINS (0x97) |
| IOB.3 | LNB GPIO mode | SET_LNB_GPIO_MODE (0x96) |
| IOB.4 | — | Unused |
| Pin | Function | Command |
|---|---|---|
| IOB.0 | — | Unused |
| IOB.1 | — | Unused |
| IOB.2 | — | Unused |
| IOB.3 | — | Unused |
| IOB.4 | LNB GPIO mode + control | SET_LNB_GPIO_MODE (0x96) + SET_GPIO_PINS (0x97) |
Rev.2 moved LNB control from Port B to Port A (P0.6, P0.0).
DiSEqC Data Pin Summary
Section titled “DiSEqC Data Pin Summary”The DiSEqC data pin assignment is the most significant change between firmware versions. The carrier pin (P0.3) remains constant.
| Firmware Version | Data Pin | Carrier Pin |
|---|---|---|
| v2.06 | P0.7 | P0.3 |
| Rev.2 v2.10 | P0.4 | P0.3 |
| v2.13 | P0.0 | P0.3 |
| Custom v3.01.0 | P0.7 | P0.3 |
The data pin is used only internally by the firmware’s Manchester encoding logic. It controls whether the 22 kHz carrier gate signal (on P0.3) is cut short or held for the full bit period during DiSEqC transmission. See DiSEqC Protocol for the encoding details.
Initial GPIO State
Section titled “Initial GPIO State”On power-up, the FX2 initialization code sets:
| Register | Value | Decode |
|---|---|---|
| IOA (P0) | 0x84 | P0.7=1 (idle), P0.2=1 (power disable active) |
| IOD (P3) | 0xE1 | P3.7:5=1 (all control lines idle), P3.0=1 |
| OEA | 0xBE | P0.1-5,7 configured as outputs |
These initial states ensure:
- The BCM4500 is held in reset (P0.5 driven by output enable, but P0 init has it low after OEA is set)
- The transport stream bus is idle (P3.5 = HIGH)
- The streaming indicator is off (P0.7 = HIGH)
- All BCM4500 control lines are de-asserted (P3.7:5 = 1)
Streaming GPIO State Changes
Section titled “Streaming GPIO State Changes”| Pin | SFR | Direction | During Streaming | Streaming Stopped | Function |
|---|---|---|---|---|---|
| P0.2 | 0x80 | Output | Set during init | — | BCM4500 config |
| P0.7 | 0x80 | Output | LOW | HIGH | Streaming status indicator |
| P3.5 | 0xB0 | Output | Pulsed LOW | HIGH | BCM4500 TS_EN (transport stream enable) |
| P3.6 | 0xB0 | Output | Controlled | HIGH | BCM4500 DVB mode control |
| P3.7 | 0xB0 | Output | Controlled | HIGH | BCM4500 control line |