TS-4100 FPGA: Difference between revisions

From embeddedTS Manuals
(Removed Spare 3 and 4 pins)
(Clean up and clarification of FPGA registers.)
Line 1: Line 1:
The TS-4100 FPGA registers are accessed over I2C.  The /sys/class/gpio driver provides access to the IO using these registers.  See the [[#GPIO|GPIO]] section for more information on the recommended method for IO access.
The TS-4100 FPGA provides additional DIO (that are connected to a [[#Crossbar|Crossbar MUX]]), some miscellaneous system peripherals, and the [[#ZPU|32-bit ZPU microcontroller]]. The FPGA is a Lattice MachXO2.  


The FPGA is available at I2C addresses 0x28-0x2F.  Accessing the registers requires a chip address write, then a 16-bit register address write, then 8-bit data values.
See the [[#GPIO|GPIO section]] for information on accessing the FPGA DIO.


We provide a simple access mechanism to the FPGA using the 'tshwctl' utility.
The FPGA registers are accessed via an I2C bus. The FPGA emulates an I2C EEPROM, allowing for a simple and standard communication protocol to the FPGA. The FPGA is available at I2C addresses 0x28-0x2F.  Accessing individual registers requires a chip address write, a 16-bit register address write, then 8-bit data values. A read or write stream can occur; every every byte read or written the internal register pointer moves to the next sequential register. This allows for reading or writing multiple registers without having to re-issue the chip and register address sequence.


The first registers 0-127 are used to control the GPIO. Registers 128-255 control the crossbar for the various pins. Use the IO offsets int the second table for the GPIO and CROSSBAR registers.
We provide a simple access mechanism to the FPGA using the 'tshwctl' utility. This utility can read or write arbitrary registers, return some information about the FPGA, as well as configure the [[#Crossbar|Crossbar MUX]]. Sources for 'tshwctl' and other utilities specific to the TS-4100 can be found in the [https://github.com/embeddedarm/ts4100-utils TS-4100 utilities github repository].


The register map is broken in to a few different sections:
{| class="wikitable"
{| class="wikitable"
|+ GPIO_n Register
! Section
|-
! Address
! Address
! Bits
! Bits
! Description
! Description
|-
|-
| rowspan=4 | 0-127
| rowspan=4 | GPIOn
| rowspan=4 | 0x0000-0x00FF
| 7:3
| 7:3
| Reserved (Write 0)
| Reserved (Write 0)
Line 27: Line 28:
| GPIOn Output Enable  
| GPIOn Output Enable  
|-
|-
| rowspan=2 | 128-255
| rowspan=2 | CROSSBARn
| rowspan=2 | 0x0080-0x00FF
| 7
| 7
| CROSSBARn GPIO mode
| CROSSBARn GPIO mode
Line 34: Line 36:
| CROSSBARn Value
| CROSSBARn Value
|-
|-
| 256-271
| rowspan=3 | BANKn
| 0x0100-0x010F
| 7:0
| 7:0
| GPIOn Bank Input
| GPIOn Bank Input
|-
|-
| 272-287
| 0x0110-0x011F
| 7:0
| 7:0
| GPIOn Bank Output Data
| GPIOn Bank Output Data
|-
|-
| 288-303
| 0x0120-0x012F
| 7:0
| 7:0
| GPIOn Bank Output Enable (1=out)
| GPIOn Bank Output Enable
|-
|-
| 304
| rowspan=4 | Misc
| 0x0130
| 7:0
| 7:0
| Model Number MSB (0x41)
| Model Number MSB (0x41)
|-
|-
| 305
| 0x0131
| 7:0
| 7:0
| Model Number LSB (0x00)
| Model Number LSB (0x00)
|-
|-
| 306
| 0x0132
| 7:0
| 7:0
| FPGA Rev
| FPGA Rev
|-
|-
| 307-8191
| 0x0133-0x1FFF
| 7:0
| 7:0
| Reserved
| Reserved
|-
|-
| 8192-16384
| ZPU
| 0x1FFF-0x2FFF
| 7:0
| 7:0
| [[#ZPU|ZPU RAM access]]
| [[#ZPU|ZPU RAM access]]
|}
|}


In the above table the GPIO, Crossbar, and Bank registers will use the following IO. The bank registers should divide the IO number by 8 to get the offset, and use the modulus to get the bit number.
'''GPIOn'''
 
Registers 0x00-0x7F provide DIO control. The GPIO can be manipulated via the sysfs GPIO interface, information on this can be found [[#GPIO|in the GPIO section]] which is the recommended way to manipulate these pins. Each register in this section manipulates a different DIO pin. See the "FPGA I/O" table below for the register offset for this section. For example, to set "DIO_1" to a low output, the value 0x1 would be written to FPGA register 0x26 (the I/O number of "DIO_1").
{{Note|The sysfs GPIO interface is recommended because it guarantees a clean state transition. When setting a GPIOn register, modifying multiple bits simultaneously creates a race condition between the output and output enable bits. This may result in a short glitch on the pin as it transitions. The sysfs GPIO driver will only manipulate a single bit at a time resulting in a clean and guaranteed transition.}}
 
 
'''CROSSBARn'''
 
Registers 0x80-0xFF provide control for the [[#Crossbar|Crossbar MUX]]. Like GPIOn above, each register represents a single DIO pin which are listed in the "FPGA I/O" table below. In order to change the MUX setting of any individual pin, its corresponding register is written to. For example, to set "UARTA_TXD" to output the data from "UART2_TXD", write the value of 0x5 (the I/O number of "UART2_TXD") to register (0x80+0x21) = 0xA1 (the I/O number of "UARTA_TXD" plus the CROSSBARn section starting register). The 'tshwctl' utility provides an easy abstraction for this process. See the [[#Crossbar|Crossbar MUX]] section for more information on this process as well as a breakdown of Crossbar assignments.
 
 
'''BANKn'''
 
Registers 0x100-0x12F provide banked DIO access. The banked DIO allows for manipulating multiple pins simultaneously. Each bank register has 8 bits that represent 8 DIO pins. There are 48 bank registers total, 16 for GPIO input, 16 for GPIO output, and 16 for GPIO output enable. The bank and bit position of any given DIO listed in the "FPGA I/O" table below can be calculated by dividing the I/O number by 8 to get the bank number and then taking the modulus of that same calculation to get the bit position. The BANKn registers are not intended for normal use and exist to allow the [[#ZPU|ZPU]] to readily manipulate GPIO pins.
 
 
'''Misc'''
 
Registers 0x130-0x132 provide the model number and FPGA software revision. Registers 0x133-0x1FFF are reserved.
 
 
'''ZPU'''
 
Registers 0x2000-0x3FFF are RAM intended for use by the [[#ZPU|ZPU]]. Normally unused unless the ZPU is loaded and run, these registers can be used for volatile storage if wanted.
 
 


{| class="wikitable sortable"
{| class="wikitable sortable"
|+ FPGA IO
|+ FPGA I/O
|-
|-
! IO Number
! I/O Number
! Pad
! Signal name
! Crossbar support
! Crossbar support
! Direction
! Direction
|-
|-
| 1
| 1
| SPARE_1_PAD
| SPARE_1
| Y
| Y
| GPIO
| I/O
|-
|-
| 2
| 2
| SPARE_2_PAD
| SPARE_2
| Y
| Y
| GPIO
| I/O
|-
| 3
| Reserved
| N/A
| N/A
|-
| 4
| Reserved
| N/A
| N/A
|-
|-
| 5
| 5
| UART3_TXD_PAD (ttymxc2)
| [[#UARTs|UART2_TXD]]
| Y
| Y
| Input
| Input
|-
|-
| 6
| 6
| UART3_RTS_PADn (ttymxc2)
| [[#UARTs|UART2_RTS]]
| Y
| Y
| Input
| Input
|-
|-
| 7
| 7
| UART4_TXD_PAD (ttymxc3)
| [[#UARTs|UART3_TXD]]
| Y
| Y
| Input
| Input
|-
|-
| 8
| 8
| UART7_TXD_PAD (ttymxc6)
| [[#UARTs|UART6_TXD]]
| Y
| Y
| Input
| Input
|-
|-
| 9
| 9
| UART3_RXD_PAD
| [[#UARTs|UART2_RXD]]
| Y
| Y
| Output
| Output
|-
|-
| 10
| 10
| UART3_CTS_PAD
| [[#UARTs|UART2_CTS]]
| Y
| Y
| Output
| Output
|-
|-
| 11
| 11
| UART4_RXD_PAD
| [[#UARTs|UART3_RXD]]
| Y
| Y
| Output
| Output
|-
|-
| 12
| 12
| UART7_RXD_PAD
| [[#UARTs|UART6_RXD]]
| Y
| Y
| Output
| Output
|-
|-
| 13
| 13
| WIFI_RXD_PAD
| [[#UARTs|WIFI_RXD]]
| Y
| Y
| Input
| Input
|-
|-
| 14
| 14
| WIFI_RTS_PAD
| [[#UARTs|WIFI_RTS]]
| Y
| Y
| Input
| Input
|-
|-
| 15
| 15
| WIFI_IRQ_PADN
| WIFI_IRQ
| Y
| Y
| Input
| Input
|-
|-
| 16
| 16
| WIFI_TXD_PAD
| [[#UARTs|WIFI_TXD]]
| Y
| Y
| Output
| Output
|-
|-
| 17
| 17
| WIFI_CTS_PAD
| [[#UARTs|WIFI_CTS]]
| Y
| Y
| Output
| Output
|-
|-
| 18
| 18
| ZPU_BREAK
| [[#ZPU|ZPU_BREAK]]
| N
| N
| Input
| Input
|-
|-
| 19
| 19
| ZPU_RESET
| [[#ZPU|ZPU_RESET]]
| N
| N
| Output
| Output
|-
|-
| 20
| 20
| EN_WIFI_PWR_PAD
| EN_WIFI_PWR
| DIO
| DIO
| Output
| Output
|-
|-
| 21
| 21
| WIFI_RESET_PAD
| WIFI_RESET
| DIO
| DIO
| Output
| Output
|-
|-
| 22
| 22
| EN_USB_HOST_5V_PAD
| EN_USB_HOST_5V
| DIO
| DIO
| Output
| Output
|-
|-
| 23
| 23
| EN_LCD_3V3_PAD
| EN_LCD_3V3
| DIO
| DIO
| Output
| Output
|-
|-
| 24
| 24
| EN_SD_POWER_PAD
| EN_SD_POWER
| DIO
| DIO
| Output
| Output
|-
|-
| 25
| 25
| OFF_BD_RESET_PADN
| OFF_BD_RESET
| DIO
| DIO
| Output
| Output
|-
|-
| 26
| 26
| EN_SW_3V3_PAD
| EN_SW_3V3
| DIO
| DIO
| Output
| Output
|-
|-
| 27
| 27
| GREEN_LED_PADN
| GREEN_LED
| DIO
| DIO
| Output
| Output
|-
|-
| 28
| 28
| RED_LED_PADN
| RED_LED
| DIO
| DIO
| Output
| Output
|-
|-
| 29
| 29
| UART_A_RXD_PAD
| [[#UARTs|UARTA_RXD]]
| UART+Spares
| UART+Spares
| GPIO
| I/O
|-
|-
| 30
| 30
| UART_B_RXD_PAD
| [[#UARTs|UARTB_RXD]]
| UART+Spares
| UART+Spares
| GPIO
| I/O
|-
|-
| 31
| 31
| UART_C_RXD_PAD
| [[#UARTs|UARTC_RXD]]
| UART+Spares
| UART+Spares
| GPIO
| I/O
|-
|-
| 32
| 32
| UART_D_RXD_PAD
| [[#UARTs|UARTD_RXD]]
| UART+Spares
| UART+Spares
| GPIO
| I/O
|-
|-
| 33
| 33
| UART_A_TXD_PAD
| [[#UARTs|UARTA_TXD]]
| UART+Spares
| UART+Spares
| GPIO
| I/O
|-
|-
| 34
| 34
| UART_B_TXD_PAD
| [[#UARTs|UARTB_TXD]]
| UART+Spares
| UART+Spares
| GPIO
| I/O
|-
|-
| 35
| 35
| UART_C_TXD_PAD
| [[#UARTs|UARTC_TXD]]
| UART+Spares
| UART+Spares
| GPIO
| I/O
|-
|-
| 36
| 36
| UART_D_TXD_PAD
| [[#UARTs|UARTD_TXD]]
| UART+Spares
| UART+Spares
| GPIO
| I/O
|-
|-
| 37
| 37
| DIO_0
| [[#GPIO|DIO_0]]
| UART+SPARE pins
| UART+SPARE pins
| GPIO
| I/O
|-
|-
| 38
| 38
| DIO_1
| [[#GPIO|DIO_1]]
| UART+SPARE pins
| UART+SPARE pins
| GPIO
| I/O
|-
|-
| 39
| 39
| DIO_2
| [[#GPIO|DIO_2]]
| UART+SPARE pins
| UART+SPARE pins
| GPIO
| I/O
|-
|-
| 40
| 40
| DIO_3
| [[#GPIO|DIO_3]]
| UART+SPARE pins
| UART+SPARE pins
| GPIO
| I/O
|-
|-
| 41
| 41
| DIO_4
| [[#GPIO|DIO_4]]
| UART+SPARE pins
| UART+SPARE pins
| GPIO
| I/O
|-
|-
| 42
| 42
| DIO_5
| [[#GPIO|DIO_5]]
| UART+SPARE pins
| UART+SPARE pins
| GPIO
| I/O
|-
|-
| 43
| 43
| DIO_6
| [[#GPIO|DIO_6]]
| UART+SPARE pins
| UART+SPARE pins
| GPIO
| I/O
|-
|-
| 44
| 44
| DIO_7
| [[#GPIO|DIO_7]]
| UART+SPARE pins
| UART+SPARE pins
| GPIO
| I/O
|-
|-
| 45
| 45
| DIO_8
| [[#GPIO|DIO_8]]
| UART+SPARE pins
| UART+SPARE pins
| GPIO
| I/O
|-
|-
| 46
| 46
| DIO_9
| [[#GPIO|DIO_9]]
| UART+SPARE pins
| UART+SPARE pins
| GPIO
| I/O
|-
|-
| 47
| 47
| DIO_10
| [[#GPIO|DIO_10]]
| UART+SPARE pins
| UART+SPARE pins
| GPIO
| I/O
|-
|-
| 48
| 48
| DIO_11
| [[#GPIO|DIO_11]]
| UART+SPARE pins
| UART+SPARE pins
| GPIO
| I/O
|-
|-
| 49
| 49
| DIO_12
| [[#GPIO|DIO_12]]
| UART+SPARE pins
| UART+SPARE pins
| GPIO
| I/O
|-
|-
| 50
| 50
| DIO_13
| [[#GPIO|DIO_13]]
| UART+SPARE pins
| UART+SPARE pins
| GPIO
| I/O
|-
|-
| 51
| 51
| DIO_14
| [[#GPIO|DIO_14]]
| UART+SPARE pins
| UART+SPARE pins
| GPIO
| I/O
|-
|-
| 52
| 52
| DIO_15
| [[#GPIO|DIO_15]]
| UART+SPARE pins
| UART+SPARE pins
| GPIO
| I/O
|-
|-
| 53
| 53
| DIO_16
| [[#GPIO|DIO_16]]
| UART+SPARE pins
| UART+SPARE pins
| GPIO
| I/O
|-
|-
| 54
| 54
| DIO_17
| [[#GPIO|DIO_17]]
| UART+SPARE pins
| UART+SPARE pins
| GPIO
| I/O
|-
|-
| 55
| 55
| DIO_18
| [[#GPIO|DIO_18]]
| UART+SPARE pins
| UART+SPARE pins
| GPIO
| I/O
|-
|-
| 56
| 56
| DIO_19
| [[#GPIO|DIO_19]]
| UART+SPARE pins
| UART+SPARE pins
| GPIO
| I/O
|-
|-
| 57
| 57
| DIO_20
| [[#GPIO|DIO_20]]
| UART+SPARE pins
| UART+SPARE pins
| GPIO
| I/O
|-
|-
| 58
| 58
| DIO_21
| [[#GPIO|DIO_21]]
| UART+SPARE pins
| UART+SPARE pins
| GPIO
| I/O
|-
|-
| 59
| 59
| DIO_22
| [[#GPIO|DIO_22]]
| UART+SPARE pins
| UART+SPARE pins
| GPIO
| I/O
|-
|-
| 60
| 60
| DIO_23
| [[#GPIO|DIO_23]]
| UART+SPARE pins
| UART+SPARE pins
| GPIO
| I/O
|-
|-
| 61
| 61
| DIO_24
| [[#GPIO|DIO_24]]
| UART+SPARE pins
| UART+SPARE pins
| GPIO
| I/O
|-
|-
| 62
| 62
| DIO_25
| [[#GPIO|DIO_25]]
| UART+SPARE pins
| UART+SPARE pins
| GPIO
| I/O
|-
|-
| 63
| 63
| DIO_26
| [[#GPIO|DIO_26]]
| UART+SPARE pins
| UART+SPARE pins
| GPIO
| I/O
|-
|-
| 64
| 64
| DIO_27
| [[#GPIO|DIO_27]]
| UART+SPARE pins
| UART+SPARE pins
| GPIO
| I/O
|-
|-
| 65
| 65
| DIO_28
| [[#GPIO|DIO_28]]
| UART+SPARE pins
| UART+SPARE pins
| GPIO
| I/O
|-
|-
| 66
| 66
| DIO_29
| [[#GPIO|DIO_29]]
| UART+SPARE pins
| UART+SPARE pins
| GPIO
| I/O
|-
|-
| 67
| 67
| DIO_30
| [[#GPIO|DIO_30]]
| UART+SPARE pins
| UART+SPARE pins
| GPIO
| I/O
|-
|-
| 68
| 68
| DIO_31
| [[#GPIO|DIO_31]]
| UART+SPARE pins
| UART+SPARE pins
| GPIO
| I/O
|-
|-
| 69
| 69
| DIO_32
| [[#GPIO|DIO_32]]
| UART+SPARE pins
| UART+SPARE pins
| GPIO
| I/O
|-
|-
| 70
| 70
| DIO_33
| [[#GPIO|DIO_33]]
| UART+SPARE pins
| UART+SPARE pins
| GPIO
| I/O
|-
|-
| 71
| 71
| DIO_34
| [[#GPIO|DIO_34]]
| UART+SPARE pins
| UART+SPARE pins
| GPIO
| I/O
|-
|-
| 72
| 72
| DIO_35
| [[#GPIO|DIO_35]]
| UART+SPARE pins
| UART+SPARE pins
| GPIO
| I/O
|-
|-
| 73
| 73
| DIO_36
| [[#GPIO|DIO_36]]
| UART+SPARE pins
| UART+SPARE pins
| GPIO
| I/O
|-
|-
| 74
| 74
| DIO_37
| [[#GPIO|DIO_37]]
| UART+SPARE pins
| UART+SPARE pins
| GPIO
| I/O
|-
|-
| 75
| 75
| DIO_38
| [[#GPIO|DIO_38]]
| UART+SPARE pins
| UART+SPARE pins
| GPIO
| I/O
|-
|-
| 76
| 76
| DIO_39
| [[#GPIO|DIO_39]]
| UART+SPARE pins
| UART+SPARE pins
| GPIO
| I/O
|-
|-
| 77
| 77
| DIO_40
| [[#GPIO|DIO_40]]
| UART+SPARE pins
| UART+SPARE pins
| GPIO
| I/O
|-
|-
| 78
| 78
| DIO_41
| [[#GPIO|DIO_41]]
| UART+SPARE pins
| UART+SPARE pins
| GPIO
| I/O
|-
|-
| 79
| 79
| DIO_42
| [[#GPIO|DIO_42]]
| UART+SPARE pins
| UART+SPARE pins
| GPIO
| I/O
|-
|-
| 80
| 80
| DIO_43
| [[#GPIO|DIO_43]]
| UART+SPARE pins
| UART+SPARE pins
| GPIO
| I/O
|-
|-
| 81
| 81
| DIO_44
| [[#GPIO|DIO_44]]
| UART+SPARE pins
| UART+SPARE pins
| GPIO
| I/O
|-
|-
| 82
| 82
| DIO_45
| [[#GPIO|DIO_45]]
| UART+SPARE pins
| UART+SPARE pins
| GPIO
| I/O
|-
|-
| 83
| 83
| DIO_46
| [[#GPIO|DIO_46]]
| UART+SPARE pins
| UART+SPARE pins
| GPIO
| I/O
|}
|}


<References />
<References />

Revision as of 17:03, 13 June 2019

The TS-4100 FPGA provides additional DIO (that are connected to a Crossbar MUX), some miscellaneous system peripherals, and the 32-bit ZPU microcontroller. The FPGA is a Lattice MachXO2.

See the GPIO section for information on accessing the FPGA DIO.

The FPGA registers are accessed via an I2C bus. The FPGA emulates an I2C EEPROM, allowing for a simple and standard communication protocol to the FPGA. The FPGA is available at I2C addresses 0x28-0x2F. Accessing individual registers requires a chip address write, a 16-bit register address write, then 8-bit data values. A read or write stream can occur; every every byte read or written the internal register pointer moves to the next sequential register. This allows for reading or writing multiple registers without having to re-issue the chip and register address sequence.

We provide a simple access mechanism to the FPGA using the 'tshwctl' utility. This utility can read or write arbitrary registers, return some information about the FPGA, as well as configure the Crossbar MUX. Sources for 'tshwctl' and other utilities specific to the TS-4100 can be found in the TS-4100 utilities github repository.

The register map is broken in to a few different sections:

Section Address Bits Description
GPIOn 0x0000-0x00FF 7:3 Reserved (Write 0)
2 GPIOn Input Data
1 GPIOn Output Data
0 GPIOn Output Enable
CROSSBARn 0x0080-0x00FF 7 CROSSBARn GPIO mode
6:0 CROSSBARn Value
BANKn 0x0100-0x010F 7:0 GPIOn Bank Input
0x0110-0x011F 7:0 GPIOn Bank Output Data
0x0120-0x012F 7:0 GPIOn Bank Output Enable
Misc 0x0130 7:0 Model Number MSB (0x41)
0x0131 7:0 Model Number LSB (0x00)
0x0132 7:0 FPGA Rev
0x0133-0x1FFF 7:0 Reserved
ZPU 0x1FFF-0x2FFF 7:0 ZPU RAM access

GPIOn

Registers 0x00-0x7F provide DIO control. The GPIO can be manipulated via the sysfs GPIO interface, information on this can be found in the GPIO section which is the recommended way to manipulate these pins. Each register in this section manipulates a different DIO pin. See the "FPGA I/O" table below for the register offset for this section. For example, to set "DIO_1" to a low output, the value 0x1 would be written to FPGA register 0x26 (the I/O number of "DIO_1").

Note: The sysfs GPIO interface is recommended because it guarantees a clean state transition. When setting a GPIOn register, modifying multiple bits simultaneously creates a race condition between the output and output enable bits. This may result in a short glitch on the pin as it transitions. The sysfs GPIO driver will only manipulate a single bit at a time resulting in a clean and guaranteed transition.


CROSSBARn

Registers 0x80-0xFF provide control for the Crossbar MUX. Like GPIOn above, each register represents a single DIO pin which are listed in the "FPGA I/O" table below. In order to change the MUX setting of any individual pin, its corresponding register is written to. For example, to set "UARTA_TXD" to output the data from "UART2_TXD", write the value of 0x5 (the I/O number of "UART2_TXD") to register (0x80+0x21) = 0xA1 (the I/O number of "UARTA_TXD" plus the CROSSBARn section starting register). The 'tshwctl' utility provides an easy abstraction for this process. See the Crossbar MUX section for more information on this process as well as a breakdown of Crossbar assignments.


BANKn

Registers 0x100-0x12F provide banked DIO access. The banked DIO allows for manipulating multiple pins simultaneously. Each bank register has 8 bits that represent 8 DIO pins. There are 48 bank registers total, 16 for GPIO input, 16 for GPIO output, and 16 for GPIO output enable. The bank and bit position of any given DIO listed in the "FPGA I/O" table below can be calculated by dividing the I/O number by 8 to get the bank number and then taking the modulus of that same calculation to get the bit position. The BANKn registers are not intended for normal use and exist to allow the ZPU to readily manipulate GPIO pins.


Misc

Registers 0x130-0x132 provide the model number and FPGA software revision. Registers 0x133-0x1FFF are reserved.


ZPU

Registers 0x2000-0x3FFF are RAM intended for use by the ZPU. Normally unused unless the ZPU is loaded and run, these registers can be used for volatile storage if wanted.


FPGA I/O
I/O Number Signal name Crossbar support Direction
1 SPARE_1 Y I/O
2 SPARE_2 Y I/O
5 UART2_TXD Y Input
6 UART2_RTS Y Input
7 UART3_TXD Y Input
8 UART6_TXD Y Input
9 UART2_RXD Y Output
10 UART2_CTS Y Output
11 UART3_RXD Y Output
12 UART6_RXD Y Output
13 WIFI_RXD Y Input
14 WIFI_RTS Y Input
15 WIFI_IRQ Y Input
16 WIFI_TXD Y Output
17 WIFI_CTS Y Output
18 ZPU_BREAK N Input
19 ZPU_RESET N Output
20 EN_WIFI_PWR DIO Output
21 WIFI_RESET DIO Output
22 EN_USB_HOST_5V DIO Output
23 EN_LCD_3V3 DIO Output
24 EN_SD_POWER DIO Output
25 OFF_BD_RESET DIO Output
26 EN_SW_3V3 DIO Output
27 GREEN_LED DIO Output
28 RED_LED DIO Output
29 UARTA_RXD UART+Spares I/O
30 UARTB_RXD UART+Spares I/O
31 UARTC_RXD UART+Spares I/O
32 UARTD_RXD UART+Spares I/O
33 UARTA_TXD UART+Spares I/O
34 UARTB_TXD UART+Spares I/O
35 UARTC_TXD UART+Spares I/O
36 UARTD_TXD UART+Spares I/O
37 DIO_0 UART+SPARE pins I/O
38 DIO_1 UART+SPARE pins I/O
39 DIO_2 UART+SPARE pins I/O
40 DIO_3 UART+SPARE pins I/O
41 DIO_4 UART+SPARE pins I/O
42 DIO_5 UART+SPARE pins I/O
43 DIO_6 UART+SPARE pins I/O
44 DIO_7 UART+SPARE pins I/O
45 DIO_8 UART+SPARE pins I/O
46 DIO_9 UART+SPARE pins I/O
47 DIO_10 UART+SPARE pins I/O
48 DIO_11 UART+SPARE pins I/O
49 DIO_12 UART+SPARE pins I/O
50 DIO_13 UART+SPARE pins I/O
51 DIO_14 UART+SPARE pins I/O
52 DIO_15 UART+SPARE pins I/O
53 DIO_16 UART+SPARE pins I/O
54 DIO_17 UART+SPARE pins I/O
55 DIO_18 UART+SPARE pins I/O
56 DIO_19 UART+SPARE pins I/O
57 DIO_20 UART+SPARE pins I/O
58 DIO_21 UART+SPARE pins I/O
59 DIO_22 UART+SPARE pins I/O
60 DIO_23 UART+SPARE pins I/O
61 DIO_24 UART+SPARE pins I/O
62 DIO_25 UART+SPARE pins I/O
63 DIO_26 UART+SPARE pins I/O
64 DIO_27 UART+SPARE pins I/O
65 DIO_28 UART+SPARE pins I/O
66 DIO_29 UART+SPARE pins I/O
67 DIO_30 UART+SPARE pins I/O
68 DIO_31 UART+SPARE pins I/O
69 DIO_32 UART+SPARE pins I/O
70 DIO_33 UART+SPARE pins I/O
71 DIO_34 UART+SPARE pins I/O
72 DIO_35 UART+SPARE pins I/O
73 DIO_36 UART+SPARE pins I/O
74 DIO_37 UART+SPARE pins I/O
75 DIO_38 UART+SPARE pins I/O
76 DIO_39 UART+SPARE pins I/O
77 DIO_40 UART+SPARE pins I/O
78 DIO_41 UART+SPARE pins I/O
79 DIO_42 UART+SPARE pins I/O
80 DIO_43 UART+SPARE pins I/O
81 DIO_44 UART+SPARE pins I/O
82 DIO_45 UART+SPARE pins I/O
83 DIO_46 UART+SPARE pins I/O