Difference between revisions of "RPP-UIO-16"
Blwikiadmin (talk | contribs) |
Blwikiadmin (talk | contribs) |
||
Line 93: | Line 93: | ||
Bplus-gpio-edited.png | Bplus-gpio-edited.png | ||
− | I2C bus | + | === I2C bus === |
+ | |||
GND | GND | ||
3.3V | 3.3V | ||
SDA | SDA | ||
SCL | SCL | ||
− | UART I/F | + | |
+ | === UART I/F === | ||
+ | |||
GND | GND | ||
3.3V | 3.3V | ||
TxD | TxD | ||
RxD | RxD | ||
− | IO_4 GVS | + | |
+ | === IO_4 GVS === | ||
+ | |||
GND | GND | ||
3.3V | 3.3V | ||
GPIO_4 | GPIO_4 | ||
− | IO_18 GVS | + | |
+ | === IO_18 GVS === | ||
+ | |||
GND | GND | ||
3.3V | 3.3V | ||
GPIO_18 | GPIO_18 | ||
− | IO_17 GVS | + | |
+ | === IO_17 GVS === | ||
+ | |||
GND | GND | ||
3.3V | 3.3V | ||
GPIO_17 | GPIO_17 | ||
− | IO_27 GVS | + | |
+ | === IO_27 GVS === | ||
+ | |||
GND | GND | ||
3.3V | 3.3V | ||
GPIO_27 | GPIO_27 | ||
− | IO_23 GVS | + | |
+ | === IO_23 GVS === | ||
+ | |||
GND | GND | ||
3.3V | 3.3V | ||
GPIO_23 | GPIO_23 | ||
− | IO_22 GVS | + | |
+ | === IO_22 GVS === | ||
+ | |||
GND | GND | ||
3.3V | 3.3V | ||
GPIO_22 | GPIO_22 | ||
− | IO_24 GVS | + | |
+ | === IO_24 GVS === | ||
+ | |||
GND | GND | ||
3.3V | 3.3V | ||
GPIO_24 | GPIO_24 | ||
− | IO_25 GVS | + | |
+ | === IO_25 GVS === | ||
+ | |||
GND | GND | ||
3.3V | 3.3V | ||
GPIO_25 | GPIO_25 | ||
− | SPI0 (Serial Peripheral Interface) | + | |
+ | === SPI0 (Serial Peripheral Interface) === | ||
+ | |||
GND | GND | ||
3.3V | 3.3V | ||
Line 142: | Line 163: | ||
SCK | SCK | ||
CE0 | CE0 | ||
− | SPI1 (Serial Peripheral Interface) | + | |
+ | === SPI1 (Serial Peripheral Interface) === | ||
+ | |||
GND | GND | ||
3.3V | 3.3V | ||
Line 149: | Line 172: | ||
SCK | SCK | ||
CE1 | CE1 | ||
− | IO_5 GVS | + | |
+ | === IO_5 GVS === | ||
+ | |||
GND | GND | ||
3.3V | 3.3V | ||
GPIO_5 | GPIO_5 | ||
− | IO_6 GVS | + | |
+ | === IO_6 GVS === | ||
+ | |||
GND | GND | ||
3.3V | 3.3V | ||
GPIO_6 | GPIO_6 | ||
− | IO_12 GVS | + | |
+ | === IO_12 GVS === | ||
+ | |||
GND | GND | ||
3.3V | 3.3V | ||
GPIO_12 | GPIO_12 | ||
− | IO_13 GVS | + | |
+ | === IO_13 GVS === | ||
+ | |||
GND | GND | ||
3.3V | 3.3V | ||
GPIO_13 | GPIO_13 | ||
− | IO_19 GVS | + | |
+ | === IO_19 GVS === | ||
+ | |||
GND | GND | ||
3.3V | 3.3V | ||
GPIO_19 | GPIO_19 | ||
− | IO_16 GVS | + | |
+ | === IO_16 GVS === | ||
+ | |||
GND | GND | ||
3.3V | 3.3V | ||
GPIO_16 | GPIO_16 | ||
− | IO_26 GVS | + | |
+ | === IO_26 GVS === | ||
+ | |||
GND | GND | ||
3.3V | 3.3V | ||
GPIO_26 | GPIO_26 | ||
− | IO_20 GVS | + | |
+ | === IO_20 GVS === | ||
+ | |||
GND | GND | ||
3.3V | 3.3V | ||
GPIO_20 | GPIO_20 | ||
− | IO_21 GVS | + | |
+ | === IO_21 GVS === | ||
+ | |||
GND | GND | ||
3.3V | 3.3V | ||
GPIO_21 | GPIO_21 | ||
− | J22 - EEPROM Address/Write Enable Header - Rev X2 Hat | + | |
+ | === J22 - EEPROM Address/Write Enable Header - Rev X2 Hat === | ||
+ | |||
Write Enable - Install header to allow writes to EEPROM | Write Enable - Install header to allow writes to EEPROM | ||
Remove header to protect EEPROM contents from accidental writes | Remove header to protect EEPROM contents from accidental writes | ||
− | J23 - Voltage translator, 3V side | + | |
+ | === J23 - Voltage translator, 3V side === | ||
+ | |||
V3-0 = Bit 1 | V3-0 = Bit 1 | ||
V3-1 = Bit 2 | V3-1 = Bit 2 |
Revision as of 14:36, 24 January 2020
Contents
- 1 Universal I/O Hat for the Raspberry Pi
- 2 Board Design
- 3 Features
- 4 Example Code/Drivers
- 5 Schematic
- 6 Configuration EEPROM
- 7 3.3V Connectors
- 7.1 I2C bus
- 7.2 UART I/F
- 7.3 IO_4 GVS
- 7.4 IO_18 GVS
- 7.5 IO_17 GVS
- 7.6 IO_27 GVS
- 7.7 IO_23 GVS
- 7.8 IO_22 GVS
- 7.9 IO_24 GVS
- 7.10 IO_25 GVS
- 7.11 SPI0 (Serial Peripheral Interface)
- 7.12 SPI1 (Serial Peripheral Interface)
- 7.13 IO_5 GVS
- 7.14 IO_6 GVS
- 7.15 IO_12 GVS
- 7.16 IO_13 GVS
- 7.17 IO_19 GVS
- 7.18 IO_16 GVS
- 7.19 IO_26 GVS
- 7.20 IO_20 GVS
- 7.21 IO_21 GVS
- 7.22 J22 - EEPROM Address/Write Enable Header - Rev X2 Hat
- 7.23 J23 - Voltage translator, 3V side
- 8 5V Connectors
- 9 Layout
- 10 Design Validation Testing - Rev X1 Board
- 11 Factory Acceptance Tests (FAT)
- 12 Assembly Sheet
Universal I/O Hat for the Raspberry Pi
Board Design
This board is modeled on the Arduino Sensor Shields, also known as GVS shields. Arduino Sensor Shields bring out the pins of the Arduino to GVS (set of Ground, Voltage and Signal) pins. Unfortunately, the Raspberry Pi can't work with the same 5V GVS sensors and devices as the Arduino since the Raspberry Pi has 3.3V I/O.
The RasPi-Plus-GVS-Cfg card allows the Raspberry Pi Model B+ to communicate with the same 5V sensors by performing voltage translation from the 3.3V of the Raspberry Pi to 5V.
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)
Example Code/Drivers
Schematic
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