Difference between revisions of "CI20 Hardware"

From eLinux.org
Jump to: navigation, search
(Dedicated UART header: Convert pinout to wiki table)
(Primary expansion header: Convert pinout to wiki table)
Line 387: Line 387:
 
==== Primary expansion header ====
 
==== Primary expansion header ====
 
Pinout diagram for the main CI20 0.1" pitch 26 pin header
 
Pinout diagram for the main CI20 0.1" pitch 26 pin header
[[File:Ci20-expansion-connector.png|800px|Secondary CI20 expansion connector]]
+
{| style="border-collapse:collapse"
 +
|-
 +
! style="width:100px" | 2nd func
 +
! style="width:100px" | GPIO
 +
! style="width:100px" | schematic
 +
! style="width:100px" | pin
 +
! style="width:100px" | pin
 +
! style="width:100px" | schematic
 +
! style="width:100px" | GPIO
 +
! style="width:100px" | 2nd func
 +
! style="width:100px" | 3rd func
 +
! style="width:100px" | 4th func
 +
|-
 +
|colspan=2|
 +
|style="background-color: #C7C7C7; text-align:right"| +3v3
 +
!style="border-left: solid; border-top: solid"| 1
 +
!style="border-right: solid; border-top: solid"| 2
 +
|style="background-color: #C7C7C7"| 5V_IN
 +
|-
 +
|
 +
|style="background-color: #FCD4B4; text-align:right"| PD30
 +
|style="background-color: #8DB4E2; text-align:right"| I2C1_SDA
 +
!style="border-left: solid"| 3
 +
!style="border-right: solid"| 4
 +
|style="background-color: #C7C7C7"| 5V_IN
 +
|-
 +
|
 +
|style="background-color: #FCD4B4; text-align:right"| PD31
 +
|style="background-color: #8DB4E2; text-align:right"| I2C1_SCK
 +
!style="border-left: solid"| 5
 +
!style="border-right: solid"| 6
 +
|style="background-color: #C7C7C7"| GND
 +
|-
 +
|style="background-color: #D7E3BC; text-align:right"| UART1_TXD
 +
|style="background-color: #FCD4B4; text-align:right"| PD28
 +
|style="background-color: #FCD4B4; text-align:right"| GPIO1
 +
!style="border-left: solid"| 7
 +
!style="border-right: solid"| 8
 +
|style="background-color: #ECF1DD"| UART0_TXD
 +
|style="background-color: #FCD4B4"| PF3
 +
|-
 +
|colspan="2"|
 +
|style="background-color: #C7C7C7; text-align:right"| GND
 +
!style="border-left: solid"| 9
 +
!style="border-right: solid"| 10
 +
|style="background-color: #ECF1DD"| UART0_RXD
 +
|style="background-color: #FCD4B4"| PF0
 +
|style="background-color: #CBC0D8"| <strike>GPS_CLK</strike>
 +
|-
 +
|style="background-color: #D7E3BC; text-align:right"| UART1_RXD
 +
|style="background-color: #FCD4B4; text-align:right"| PD26
 +
|style="background-color: #FCD4B4; text-align:right"| GPIO2
 +
!style="border-left: solid"| 11
 +
!style="border-right: solid"| 12
 +
|style="background-color: #C4BD96"| <strike>PWM</strike>
 +
|style="background-color: #FCD4B4"| PF5
 +
|style="background-color: #C4BD96"| <strike>PWM5</strike>
 +
|style="background-color: #C3D79A"| UART3_TXD
 +
|style="background-color: #D99593"| <strike>SCLK_RSTN</strike>
 +
|-
 +
|style="background-color: #D7E3BC; text-align:right"| UART1_CTS
 +
|style="background-color: #FCD4B4; text-align:right"| PD27
 +
|style="background-color: #FCD4B4; text-align:right"| GPIO3
 +
!style="border-left: solid"| 13
 +
!style="border-right: solid"| 14
 +
|style="background-color: #C7C7C7"| GND
 +
|-
 +
|style="background-color: #D7E3BC; text-align:right"| UART1_RTS
 +
|style="background-color: #FCD4B4; text-align:right"| PD29
 +
|style="background-color: #FCD4B4; text-align:right"| GPIO4
 +
!style="border-left: solid"| 15
 +
!style="border-right: solid"| 16
 +
|style="background-color: #FCD4B4"| GPIO5
 +
|style="background-color: #FCD4B4"| PF1
 +
|style="background-color: #ECF1DD"| UART0_CTS
 +
|style="background-color: #CBC0D8"| <strike>GPS_MAG</strike>
 +
|-
 +
|colspan=2|
 +
|style="background-color: #C7C7C7; text-align:right"| +3v3
 +
!style="border-left: solid"| 17
 +
!style="border-right: solid"| 18
 +
|style="background-color: #FCD4B4"| GPIO6
 +
|style="background-color: #FCD4B4"| PF2
 +
|style="background-color: #ECF1DD"| UART0_RTS
 +
|style="background-color: #CBC0D8"| <strike>GPS_SIG</strike>
 +
|-
 +
|style="background-color: #E5B6B5; text-align:right"| SSI1_DT
 +
|style="background-color: #FCD4B4; text-align:right"| PE17
 +
|style="background-color: #E5B6B5; text-align:right"| SSI0_DT
 +
!style="border-left: solid"| 19
 +
!style="border-right: solid"| 20
 +
|style="background-color: #C7C7C7"| GND
 +
|-
 +
|style="background-color: #E5B6B5; text-align:right"| SSI1_DR
 +
|style="background-color: #FCD4B4; text-align:right"| PE14
 +
|style="background-color: #E5B6B5; text-align:right"| SSI0_DR
 +
!style="border-left: solid"| 21
 +
!style="border-right: solid"| 22
 +
|style="background-color: #FCD4B4"| GPIO7
 +
|style="background-color: #FCD4B4"| PE8
 +
|style="background-color: #C4D79B"| UART3_CTS
 +
|style="background-color: #D89592"| <strike>BCLK_AD</strike>
 +
|-
 +
|style="background-color: #E5B6B5; text-align:right"| SSI1_CLK
 +
|style="background-color: #FCD4B4; text-align:right"| PE15
 +
|style="background-color: #E5B6B5; text-align:right"| SSI0_CLK
 +
!style="border-left: solid"| 23
 +
!style="border-right: solid"| 24
 +
|style="background-color: #E5B6B5"| SSI0_CE0
 +
|style="background-color: #FCD4B4"| PE16
 +
|style="background-color: #E5B6B5"| SSI1_CE0
 +
|-
 +
|colspan=2|
 +
|style="background-color: #C7C7C7"| GND
 +
!style="border-left: solid; border-bottom: solid"| 25
 +
!style="border-right: solid; border-bottom: solid"| 26
 +
|style="background-color: #E5B6B5"| SSI0_CE1
 +
|style="background-color: #FCD4B4"| PE18
 +
|style="background-color: #E5B6B5"| SSI1_CE1
 +
|}
 +
 
 +
 
 +
{| style="border-collapse:collapse"
 +
!style="width:100px" | Key
 +
|style="width:100px; background-color: #C7C7C7" | Power
 +
|style="width:100px; background-color: #ECF1DD" | UART0
 +
|style="width:100px; background-color: #D7E3BC" | UART1
 +
|style="width:100px; background-color: #C4D79B" | UART3
 +
|style="width:100px; background-color: #E5B6B5" | SSI
 +
|-
 +
|
 +
|style="width:100px; background-color: #CBC0D8" | <strike>GPS</strike>
 +
|style="width:100px; background-color: #8DB4E2" | I2C
 +
|style="width:100px; background-color: #D89592" | <strike>I2S</strike>
 +
|style="width:100px; background-color: #FCD4B4" | GPIO
 +
|style="width:100px; background-color: #C4BD96" | <strike>PWM</strike>
 +
|-
 +
! Version
 +
| 1.5
 +
|}
 +
 
 +
# Note that the PWM facility is unavailable as this PWM unit is used by the Linux kernel SMP timer code
 +
# Note that the GPS interface is unavailable as it is (believed to be) electrically incompliant
 +
# Note that the I2S block is not useable on the header as not all I2S pins are brought out
  
 
==== Camera ====
 
==== Camera ====

Revision as of 15:12, 15 August 2014

This page details the technical specifications and components of the MIPS Creator CI20 development board.

Tech Spec overview

Ethernet RJ45Eth DM9000ButtonHDMIUART 4EJTAGAudio In/Out5V DC InUSB EHCI/OHCIUSB OTG HostExpansion 2USB OTG SelectUSB OTG DeviceSD CardPower LEDIRCameraDDRDDRJZ4780Boot SelExpansion 1View of the top of the CI20 board
About this image
DDRDDRNANDPMUBT/WiFiAntennaRTCMicrophone SwitcherView of the bottom of the CI20 board
About this image
Feature Details
SoC Ingenic JZ4780
CPU Dual 1.2GHz XBurst MIPS32 little endian
Caches 32kI + 32kD per core, 512K shared L2
RAM 1Gbyte DDR3
NAND 8Gbytes NOR
SDcard 1x full size slot + 1x slot via expansion
USB 1xUSB otg + 1xUSB host
Ethernet 1x 10/200
Wifi IW8103 wifi-? + BT4, built in ceramic aerial
GPU SGX540
Video Hardware video decode upto 1080p60
Display HDMI, upto 2k resolution
Camera ITU645 dedicated connector
GPIO 23 available on headers
SPI 2 ports on headers, with 4 chip selects
I2C One port on header
ADC 7 inputs on header, including 5-wire touch and battery monitoring functions
UART 1 on dedicated header, 2 vi pin headers
Audio Audio in and out via 3.5mm 4-wire connector
JTAG Standard 14-pin MIPS EJTAG header
Transport Stream Interface Via pin header
Power 5V via 4mm (shield) x 1.7mm (pin) center positive connector
Size Apprx 90x95mm

Files

The following links provide information (predominantly PDF files) about the SoC, board and components for the MIPS Creator CI20.

SoC Information

Overview on the Imagination web site

English page on the Ingenic web site

FTP download from the Ingenic ftp site

JZ4780 pdf datasheet from the CI20 file archive

Programmers Manual

JZ4780 pdf datasheet from the CI20 file archive

Schematic

Schematic pdf from the CI20 file archive

Board components and identification

Board/component (BOM) identication pdf from the CI20 file archive

DDR chip manual CI20 file archive

Ethernet chip manual CI20 file archive

NAND chip manual CI20 file archive

Power Management Unit (PMU) chip manual CI20 file archive

Real Time Clock (RTC) chip manual CI20 file archive

Expander pinouts

Main expander pinout and function diagram pdf from the CI20 file archive

Secondary expander pinout and function diagram pdf from the CI20 file archive

Dedicated UART header pinout and function diagram pdf from the CI20 file archive

Source code

The source code is hosted on github, and in the process of being upstreamed.

Please see the Dev Zone page for details.

SDcard images

Please see the Downloads page for links to the SDcard images.

Connectors

Overview

Starting with the power connector, going anti-clockwise (ish) as you face the front of the board:

Connector Schem Name Details
Power MK5 4mm shield x 1.7mm pin 5V centre positive
Audio J9 3.5mm 4-pin (stereo out + mic in), with auto-sense chip to handle both OMTP and CTIA headsets
EJTAG J58 Standard MIPS 14pin EJTAG connector
Secondary 0.1" expansion header J5 Carries 5v and 3.3v power out, transport stream, ADC, GPIO, SynchronousSerial(SPI) and MSC(SDcard) functions
HDMI J3 Full size HDMI out, including audio support
Button SW1 Boot time selector (see boot selector table). Can also be read from software, and create GPIO interrupt/ Note, this is not a reset button!
Ethernet J11 Standard RJ45 connector, with built in link and activity lights
Boot mode selector JP3 Used to choose auto-boot from NAND or SDcard slot, predominantly.
Primary expansion connector JP4 26-pin (2x13) 'RPi compatible' 0.1" pitch expansion connector, carrying power, UART, SynchronousSerial, I2C and GPIO functions.
Camera J6 24-pin DVP camera connector
IR U15 Infrared receiver
LED D5 bi-colour status LED (red/blue), wired to USB power enable line
SDcard J13 Full size SDcard slot, can be used for storage and/or direct boot
USB mini-OTG connector J8 Paralleled with the full size A connector next to it.
OTG VBUS jumper JP2 Selects VBUS enabling on OTG port to enable master or slave functionality
USB A connector (left) J24 Paralleled with the mini OTG connector (note, they are not separate ports - do not plug into both at once!)
USB A connector (right) J23 From the EHCI host controller block
UART J57 Dedicated 4-pin UART header

Power

The power connector is a 5V 4mm (shield) x 1.7mm (pin) center positive connector. It takes 5V only.

When somebody measures the current draw - maybe add it here?

Audio

Standard 4-pin headset connector, with auto OMTP/CTIA detection (so should work with any standard 4-pin headset).

EJTAG

14-pin MIPS EJTAG headers. See projects for proposed OpenOCD/wiggler support project.

Secondary 0.1" expansion header

Pinout diagram for the secondary CI20 0.1" pitch 16 pin header

3nd func 2nd func GPIO schematic pin pin schematic GPIO 2nd func 3rd func
+3v3 1 2 5V_IN
TSFRM MSC2_D3 PB31 SSI1_CE0 3 4 SSI1_CLK PB28 MSC2_CLK TSCLK
TSSTR MSC2_CMI PB29 SSI1_DT 5 6 SSI1_DR PB20 MSC2_D0 TSDIO
TSDI1 MSC2_D1 PB21 SSI1_CE1 7 8 SSI1_GPC PB30 MSC2_D2 TSFAIL
XP 9 10 XN
YP 11 12 YN
AUX1 13 14 AUX2
VBAT 15 16 GND


Key Power TSSI ADC GPIO SSI MSC
Version 1.2

HDMI

Full sized HDMI connection with audio out support as well. Can somebody confirm the HDMI version support (1.2a?), and also the number of audio out channels? (2, 5.1 ???).

Button

The button between HDMI and Ethernet is not a reset button.

It is boot_select0. Combined with JP3, it can be used to boot the CI20 from the USB.

It can also be used as a gpio once the CI20 is powered up. The boot_sel0 pin is connected to PD17.

Pinmux options can be checked to see which gpio is PD17 in kernel you booted.

In the 3.15 kernel, the gpio is number 113.

You can export the gpio via

echo 113 > /sys/class/gpio/export

And then use it.

Ethernet

10/100 RJ45, connects to the DM9000 chipset.

Boot mode selector

See the silkscreen on the board and the section at the end of the JZ4780 programmers manual. Fundamentally you can boot from the on-board NAND or direct off the SDcard without having to press the button during boot. There is also a USB boot function available, but it is not a standard DFU type boot, and requires JZ4780 specific host support.

Boot Source BOOT_SEL (JP3) Jumper Button
NAND Pins 1 & 2 shorted Not pressed
SD Card Pins 2 & 3 shorted Not pressed
USB Pins 1 & 2 shorted Pressed
MSC0 Pins 2 & 3 shorted Pressed

Primary expansion header

Pinout diagram for the main CI20 0.1" pitch 26 pin header

2nd func GPIO schematic pin pin schematic GPIO 2nd func 3rd func 4th func
+3v3 1 2 5V_IN
PD30 I2C1_SDA 3 4 5V_IN
PD31 I2C1_SCK 5 6 GND
UART1_TXD PD28 GPIO1 7 8 UART0_TXD PF3
GND 9 10 UART0_RXD PF0 GPS_CLK
UART1_RXD PD26 GPIO2 11 12 PWM PF5 PWM5 UART3_TXD SCLK_RSTN
UART1_CTS PD27 GPIO3 13 14 GND
UART1_RTS PD29 GPIO4 15 16 GPIO5 PF1 UART0_CTS GPS_MAG
+3v3 17 18 GPIO6 PF2 UART0_RTS GPS_SIG
SSI1_DT PE17 SSI0_DT 19 20 GND
SSI1_DR PE14 SSI0_DR 21 22 GPIO7 PE8 UART3_CTS BCLK_AD
SSI1_CLK PE15 SSI0_CLK 23 24 SSI0_CE0 PE16 SSI1_CE0
GND 25 26 SSI0_CE1 PE18 SSI1_CE1


Key Power UART0 UART1 UART3 SSI
GPS I2C I2S GPIO PWM
Version 1.5
  1. Note that the PWM facility is unavailable as this PWM unit is used by the Linux kernel SMP timer code
  2. Note that the GPS interface is unavailable as it is (believed to be) electrically incompliant
  3. Note that the I2S block is not useable on the header as not all I2S pins are brought out

Camera

Closeup of compatible camera
Camera unit fitted

The camera connector is 24 pin (26 pins on the schematic - two of which are the side ground solder tabs on the connector itself - the actual cable interface is 24 pin), and CMOS DVP 8-bit camera compatible. The Omnivision OV5640 5Mpixel unit can be used with the CI20 (often labelled FD5640 on the actual part)

IR

Receive only. Anybody got details on the protocols supported by hardware, and if pure software can be used to support other protocols?

LED

The CI20 board features a dual colour red & blue LED. It is controlled by GPIO PF15, which also controls the USB VBUS supply. When PF15 is high the LED lights red, when PF15 is low it lights blue. Software cannot power off the LED. A simple way to toggle the LED colour is to write to the PFPAT0S & PFPAT0C registers from the U-boot shell, in order to toggle the PF15 GPIO. The following example will toggle the colours rapidly, leading to the LED appearing purple:

while true; do mw.l 0xb0010548 0x8000; mw.l 0xb0010544 0x8000; done

SDcard

Standard pinout full sized SD/MMC slot. Can be used for direct booting, or for bulk storage (standard MTD support under Linux). Is wired to the MSC0 block in the SoC.

USB mini-OTG connector

Is paralleled with the left hand USB A connector - do not plug into both of these at once. Has the OTG VBUS controlled by the jumper next to it.

OTG VBUS jumper

Controls the VBUS for the OTG ports - would somebody like to describe the difference between having the connector fitted or not please.

USB A connector (left)

Paralleled with the mini-OTG connector.

USB A connector (right)

Connected to the EHCI USB controller in the SoC.

Dedicated UART header

Pinout and other functions of the dedicated UART header. This is uart4 of the SoC. Note that uart0 is on the 26pin main expansion header.

pin schematic GPIO 2nd func 3rd func
1 +3v3
2 TXD PC10 LCD_SPL LCD_G0
3 GND
4 RXD PC20 LCD_CLS LCD_R0


Key UART GPIO LCD Power
Version 1

Test Points

Description of the (rather small little silver dot) test points on the board, derived from the schematic.

Label Function
TP9 LCD PCLK output
TP72 TEST_TE input
TP10 DRVVBUS
TP8 CLK32K
TP19 BOOT_SEL2 boot mode setting - pulled high to 3.3V with a 10K resistor.
TP20 BOOT_SEL1 boot mode setting - shared with JP3 (the boot mode jumper)
TP21 BOOT_SEL0 boot mode setting - shared with SW1 (the button)
TP24 VDDMEM
TP25 VDDCORE
TP26 +3.3V rail
TP27 +2.5V rail
TP23 VRTC18/WKUP_N through 100K resistor
TP22 VRTC18/RST_N through 200K resistor
TP62 DEVICE_VBUS
TP63 OTG_DM
TP64 OTG_DP
TP65 Ground
TP66 HOST_5V
TP67 USB_DM
TP68 USB_DP
TP69 Ground
TP77 WIFI_IO
TP136 Wifi chip RF_SW_CTRL_3 pin
TP137 Wifi chip RF_SW_CTRL_6 pin

Components

SoC

Ia an Ingenic JZ4780 - see the data sheet and programmers manuals referenced on this page.

DDR/RAM

Comprises of four H5TQ2G83DFR-H9C 2Gbit DDR3 chips, providing 8 bits of data each, providing a 32bit DDR3 memory bus to the SoC. Anybody have details of the standard clock rate?

ROM/NAND

Is provided by a single Samsung K9GBG08UOA NAND flash, using an 8bit data interface to the SoC.

Ethernet

Is provided by a Davicom DM9000C connected vi an 8-bit interface to the SoC, providing 10/100 ethernet.

WiFi/BT

Is provided by an Ingenic IW8103, based on a Broadcom BCM43362/4330, connected via SDIO to the SoC MSC1 port.

PMU

Is an active-semo ACT8600 specifically designed for the Ingenic JZ family of SoCs.

RTC

Is provided by a Pericom PT7C4337UE connected to the SoC via the I2C_4 bus.

Microphone switcher

The automatic 4-pin microphone switching/detection is provided by a Fairchild FSA8049 audio jack detection device.

OTP and MAC address formats

The following data is stored in the JZ4780 OTP ROM/efuse. This data can be accessed from Linux via the sysfs path of

/sys/devices/platform/jz4780-efuse/

The C definition of the actual efuse area data format is:

struct __packed__ otp {
    uint32 serial_number;  /* As a decimal, huge range */
    uint32 date; /* ISO8601 yyyymmdd format-ish as an int – for instance ‘20140527’d for May 27th 2014 */
    char manufacturer[2];  /* ascii 2-character encoding of manufacturer – ‘NP’ == Nopa */
    unsigned char mac[6]; /* six byte/48bit MAC address strored as 8-bit integers */
};