RPP-UIO-16
Contents
Universal I/O Hat for the Raspberry Pi
Features
- All GPIO lines are connected to 3.3V GVS connectors
- 16 lines of 3.3V to 5V bidirectional GVS connections
- Hat EEPROM with write enable/protect jumper
- 5V Terminal block to power the Raspberry Pi and the I/O Card
- GPIO jumpers to connect up to 16 of the 3.3V GPIO lines to the 3.3V side of the voltage translators
Example Code/Drivers
Schematic
Features
All Raspberry Pi I/O lines 16-bit bidirectional 3.3V to 5V level translator Configuration EEPROM Fuses on power External 5V Terminal Block Raspberry Pi I/O lines All of the Raspberry Pi Model B+ I/O connections are brought to GVS connectors. This is:
(17) GPIO lines on GVS connectors (2) SPI interfaces (can be used as 5 GPIO lines) (1) UART interface (can be used as 2 GPIO lines) (1) I2C interface (can be used as 2 GPIO lines)
Level translators
The RPP-UIO-16 board uses two of 8-bit wide Texas Instrument TXS0108 voltage translator to convert up to 16 of the 3.3V I/O lines to 5V I/O levels.
Voltage Translators Features
No Direction-Control Signal Needed Max Data Rates 60 Mbps (Push Pull) 2 Mbps (Open Drain) 1.2 V to 3.6 V on A Port and 1.65 V to 5.5 V on B Port (VCCA ≤ VCCB) No Power-Supply Sequencing Required – Either VCCA or VCCB Can Be Ramped First Latch-Up Performance Exceeds 100 mA Per JESD 78, Class II ESD Protection Exceeds JESD 22 (A Port) 2000-V Human-Body Model (A114-B) 150-V Machine Model (A115-A) 1000-V Charged-Device Model (C101) IEC 61000-4-2 ESD (B Port) ±6-kV Air-Gap Discharge ±8-kV Contact Discharge Voltage Translators Architecture Datasheet
The TXS0108E can be used in level-translation applications for interfacing devices or systems operating at different interface voltages with one another. The TXS0108E is ideal for use in applications where an open-drain driver is connected to the data I/Os. The TXS0108E can also be used in applications where a push-pull driver is connected to the data I/Os, but the TXB0104 might be a better option for such push-pull applications. The TXS0108E device is a semi-buffered auto-direction-sensing voltage translator design is optimized for translation applications (e.g. MMC Card Interfaces) that require the system to start out in a low-speed open-drain mode and then switch to a higher speed push-pull mode.
To address these application requirements, a semi-buffered architecture design is used and is illustrated above (see Figure 1). Edge-rate accelerator circuitry (for both the high-to-low and low-to-high edges), a High-Ron n-channel pass-gate transistor (on the order of 300 Ω to 500 Ω) and pull-up resistors (to provide DC-bias and drive capabilities) are included to realize this solution. A direction-control signal (to control the direction of data flow from A to B or from B to A) is not needed. The resulting implementation supports both low-speed open-drain operation as well as high-speed push-pull operation.
When transmitting data from A to B ports, during a rising edge the One-Shot (OS3) turns on the PMOS transistor (P2) for a short-duration and this speeds up the low-to-high transition. Similarly, during a falling edge, when transmitting data from A to B, the One-Shot (OS4) turns on NMOS transistor (N2) for a short-duration and this speeds up the high-to-low transition. The B-port edge-rate accelerator consists of one-shots OS3 and OS4, Transistors P2 and N2 and serves to rapidly force the B port high or low when a corresponding transition is detected on the A port.
When transmitting data from B to A ports, during a rising edge the One-Shot (OS1) turns on the PMOS transistor (P1) for a short-duration and this speeds up the low-to-high transition. Similarly, during a falling edge, when transmitting data from B to A, the One-Shot (OS2) turns on NMOS transistor (N1) for a short-duration and this speeds up the high-to-low transition. The A-port edge-rate accelerator consists of one-shots OS1 and OS2, Transistors P1 and N1 components and form the edge-rate accelerator and serves to rapidly force the A port high or low when a corresponding transition is detected on the B port.
Fuses
The board has Resettable fuses on the 3.3V and 5V from the Raspberry Pi. These fuses protect your Raspberry Pi from overloads. These fuses are 1 Amp PTC fuses - PTS12066V100 PTC fuses have certain advantages (they are self healing) and disadvantages (they are not like a wire fuse which acts like a switch). If you trust your wiring you may choose to solder a wire over the fuse. Care should be taken when doing so.
Configuration EEPROM
The card has a Raspberry Pi Model B+ configuration EEPROM.
3.3V Connectors
The following are all 3.3VDC connections.
Raspberry Pi B Plus GPIO Connector J8 on the Pi.
Bplus-gpio-edited.png
I2C bus GND 3.3V SDA SCL UART I/F GND 3.3V TxD RxD IO_4 GVS GND 3.3V GPIO_4 IO_18 GVS GND 3.3V GPIO_18 IO_17 GVS GND 3.3V GPIO_17 IO_27 GVS GND 3.3V GPIO_27 IO_23 GVS GND 3.3V GPIO_23 IO_22 GVS GND 3.3V GPIO_22 IO_24 GVS GND 3.3V GPIO_24 IO_25 GVS GND 3.3V GPIO_25 SPI0 (Serial Peripheral Interface) GND 3.3V MOSI MISO SCK CE0 SPI1 (Serial Peripheral Interface) GND 3.3V MOSI MISO SCK CE1 IO_5 GVS GND 3.3V GPIO_5 IO_6 GVS GND 3.3V GPIO_6 IO_12 GVS GND 3.3V GPIO_12 IO_13 GVS GND 3.3V GPIO_13 IO_19 GVS GND 3.3V GPIO_19 IO_16 GVS GND 3.3V GPIO_16 IO_26 GVS GND 3.3V GPIO_26 IO_20 GVS GND 3.3V GPIO_20 IO_21 GVS GND 3.3V GPIO_21 J22 - EEPROM Address/Write Enable Header - Rev X2 Hat Write Enable - Install header to allow writes to EEPROM Remove header to protect EEPROM contents from accidental writes J23 - Voltage translator, 3V side V3-0 = Bit 1 V3-1 = Bit 2 V3-2 = Bit 3 V3-3 = Bit 4 V3-4 = Bit 5 V3-5 = Bit 6 V3-6 = Bit 7 V3-7 = Bit 8 V3-8 = Bit 9 V3-9 = Bit 10 V3-A = Bit 11 V3-B = Bit 12 V3-C = Bit 13 V3-D = Bit 14 V3-E = Bit 15 V3-F = Bit 16
5V Connectors
The following are 5V connectors.
V5-0 - GVS connector, 5V side Ground +5V Bit0 V5-1 - GVS connector, 5V side Ground +5V Bit1 V5-2 - GVS connector, 5V side Ground +5V Bit2 V5-3 - GVS connector, 5V side Ground +5V Bit3 V5-4 - GVS connector, 5V side Ground +5V Bit4 V5-5 - GVS connector, 5V side Ground +5V Bit5 V5-6 - GVS connector, 5V side Ground +5V Bit6 V5-7 - GVS connector, 5V side Ground +5V Bit7 V5-8 - GVS connector, 5V side Ground +5V Bit8 V5-9 - GVS connector, 5V side Ground +5V Bit9 V5-A - GVS connector, 5V side Ground +5V Bit10 V5-B - GVS connector, 5V side Ground +5V Bit11 V5-C - GVS connector, 5V side Ground +5V Bit12 V5-D - GVS connector, 5V side Ground +5V Bit13 V5-E - GVS connector, 5V side Ground +5V Bit14 V5-F - GVS connector, 5V side Ground +5V Bit15
Layout
Kickstarter Edition
RPP-UIO-16-X2-CAD.PNG
Design Validation Testing - Rev X1 Board
RASPI-PLUS-GVS-CFG DVT
Factory Acceptance Tests (FAT)
Hardware
FAT requires the following:
Raspberry Pi Model B+ or equivalent (RasPi) Power supply for Raspberry Pi (5V at 1 Amp min) with Micro USB connector Monitor, Keyboard or Ethernet cable and laptop running puTTY Test Software loaded onto RasPi (2) LED-Test card Cable set Unit Under Test (UUT) Preliminary Install UUT onto RasPi Install Cables Power up card Log into RasPi pi raspberry
I2C
Install WE jumper cd ~/RasPi/RPP-UIO-16/eeprom/ sudo ./eep2flash.sh -w -t=24c32 -f=eepcfg.eep sudo ./eep2flash.sh -r -t=24c32 -f=myeep.eep rm stuff.eep ./eepdump myeep.eep stuff.eep more stuff.eep | grep vendor more stuff.eep | grep "product "
Verify: vendor "land-boards.com" # length=15 product "RPP-UIO-16" # length=10 Remove WE jumper cd ~/RasPi/RPP-UIO-16/eeprom/ sudo ./eep2flash.sh -w -t=24c32 -f=eepcfg.eep
Verify Writing... dd: writing `/sys/class/i2c-adapter/i2c-0/0-0050/eeprom': Connection timed out 0+1 records in 0+0 records out 0 bytes (0 B) copied, 0.0564552 s, 0.0 kB/s Error doing I/O operation. Ctrl-C to halt
GVS Connector - Blink LEDs Tests On RasPi console: cd ~/RasPi/RPP-UIO-16/ sudo python blinkLEDs-RPP-UIO-16.py
LEDs should cycle Combined Copy/paste cd ~/RasPi/RPP-UIO-16/eeprom/ sudo ./eep2flash.sh -w -t=24c32 -f=eepcfg.eep sudo ./eep2flash.sh -r -t=24c32 -f=myeep.eep rm stuff.eep ./eepdump myeep.eep stuff.eep more stuff.eep | grep vendor more stuff.eep | grep "product "
cd ~/RasPi/RPP-UIO-16/eeprom/ sudo ./eep2flash.sh -w -t=24c32 -f=eepcfg.eep
cd ~/RasPi/RPP-UIO-16/ sudo python blinkLEDs-RPP-UIO-16.py