[[PageOutline]] = Venice MIPI DSI / CSI Hardware The Venice family of rugged and industrial Single Board Computers feature MIPI Display Serial Interface (DSI) and Camera Serial Interface (CSI) signals on many of the boards. This allows for displays and cameras or video input to the SBC. *** Note: GW71xx, GW72xx and GW73xx mated with a GW702x i.MX8M Plus SOM does not support MIPI CSI / DSI. There are 1000s of LCD displays from 5inches to 20 inches on the market and each may require a custom integration with the Gateworks MIPI DSI connector. Gateworks has pre-tested and pre-approved the following displays [#rpi here] [[Image(venicelcd.jpg,300px)]] == 50-pin MIPI Media Connector [[Image(7300mipi.png,300px)]] A 50-pin MIPI Media Connector is available on the Venice GW720x/GW730x/GW740x SBCs with the following signalling: - 4-lane (4D+C) CSI (supports a maximum bitrate of 1.5Gbps on IMX8MM) - Allows for camera / video input to the SBC - 4-lane (4D+C) DSI (supports a maximum bitrate of 1.5Gbps on IMX8MM; up to 1080p60 display) - Allows for a LCD Display to be connected to the SBC - Bi-directional I2S audio - I2C - 4x GPIO * '''Note: If using a GW7200, revision C or newer is required''' *** Note: GW71xx, GW72xx and GW73xx mated with a GW702x i.MX8M Plus SOM does not support MIPI CSI / DSI. ==== MIPI Sample Schematic and Pinouts Please also view the hardware manual of the respective SBC. ''' Please note the GW702x i.MX8M Plus SOM does not route any MIPI signals. GW700x i.MX8M Mini SOM Required ''' GW72xx/GW73xx:[[BR]] [[Image(mipischematic.png)]] * with IMX8MM GW700x SOM (gw72xx-0x, gw73xx-0x): - GPIO1 - IMX8MM_SAI1_RXD2 (GPIO4_04) - GPIO2 - IMX8MM_SAI1_RXD1 (GPIO4_03) - GPIO3 - IMX8MM_SAI1_RXC (GPIO4_01) - GPIO4 - IMX8MM_GPIO1_01 (GPIO1_01 or PWM1_OUT) GW74xx (IMX8MP SoC):[[BR]] [[Image(gw74xx-mipi.png)]] * MIPI_PWM - IMX8MP_GPIO1_IO00 (GPIO1_IO00 or CCM_EXT_CLK1) * MIPI_GPIO2 - IMX8MP_GPIO1_IO01 (GPIO1_IO01, PWM1_OUT, or CCM_EXT_CLK2) * MIPI_GPIO3 - GPIO1_IO03 (GPIO1_IO03) * MIPI_GPIO4 - GPIO1_IO04 (GPIO1_IO04) ==== MIPI Mounting Hole [[Image(mipihole.png,300px)]] [=#rpi] == Raspberry Pi Display & Camera Not every Raspberry Pi Display will work out of the box. Any RPi display or camera requires the Gateworks GW16136 Raspberry Pi Adapter board Below are screens Gateworks has evaluated using the required GW16136 MIPI Adapter board. * [https://www.digikey.com/en/products/detail/dfrobot/DFR0550/9608214 5-inch DFR0550 LCD Touchscreen Display] * [https://www.digikey.com/en/products/detail/dfrobot/DFR0678/13688357 7-inch DFR0678 LCD Touchscreen Display] [[Image(DFR0678-1.jpg,300px)]] Gateworks has tested with a Raspberry Pi Camera Module 2 as a demo, please see more information here: [wiki:venice/multimedia#Compatiblecapturedevices Venice Capture Devices - RPi Camera] [[Image(rpicam.jpg,300px)]] === GW16136 !RaspberryPi Camera and Display Adapter [[Image(gw16136.png,300px)]] [[Image(gw16136-bottom.png,300px)]] The GW16136 !RaspberryPi Camera and Display Adapter connects to the GW720x and GW730x boards 50-pin MIPI Media connector and provides the following (see [https://datasheets.raspberrypi.com/rpi4/raspberry-pi-4-reduced-schematics.pdf RaspberryPi v4 schematics for details]): * 15pin Camera Interface with 2-lane MIPI CSI, 1x GPIO, 1x I2C (MX8MM I2C3)  - MIPI_GPIO4 is IMX8MM GPIO1_01  - Note the pin numbers on the connector silkscreen are flipped * 15pin Display Interface with 3-lane MIPI CSI, 1x I2C (MX8MM I2C3)  - MIPI_GPIO3 is connected to IMX8MM GPIO4_01 via 1Kohm  - MIPI_GPIO1 is connected to IMX8MM GPIO4_04 via 1Kohm  - Note the pin numbers on the connector silkscreen are flipped This adapter plugs into the 50-pin MIPI Media header on the Gateworks SBC. The adapter brings all the DSI signals to one connector and CSI to another. The adapter was built in mind to be used with Raspberry Pi displays and cameras. Below is a diagram showing the connections for the 15-pin flat cable connectors. [[Image(GW16136pinout.png,500px)]] Additional Linux kernel driver support is required for various MIPI, I2C and I2S devices. Purchase the GW16136 on the Gateworks shop: [https://shop.gateworks.com/index.php?route=product/product&path=70_86&product_id=236] === Adding a New Venice MIPI DSI Display Densitron [https://www.densitron.com/products/tft-displays/mipi-tft MIPI Displays] makes several MIPI based displays with touchscreen options. Densistron can also customize the display's adapter board for volume projects to connect directly with the Venice MIPI DSI/CSI connector. Please note these screens will require software driver integration. Read more about the software effort to add a display here: [wiki:venice/multimedia#SoftwaretoAddaNewDisplay] == GW16145 MIPI Media Breakout board [[Image(gw16145top.jpg,300px)]] [[Image(gw16145bottom.jpg,300px)]] This adapter plugs into the 50-pin MIPI Media header on the Gateworks SBC. The adapter brings all the signals to a 50 pin header that allows for a cable to be connected. Connector used on the GW16145: Hirose DF20F-50DP-1V(56). The GW16145 50-pin connector mapping is as follows: [[Image(50pin.JPG,400px)]] To make a cable that plugs into the GW16145, use Hirose DF20A-50DS-1C (Note also requires crimps) * https://www.digikey.com/en/products/detail/hirose-electric-co-ltd/DF20A-50DS-1C/679773 Additional Linux kernel driver support is required for various MIPI, I2C and I2S devices. For boards using the GW7020 SOM based on the i.MX8M Plus, the MIPI signals were used to support CAN bus so this connector can be used to access those signals. Note the CAN signals are 3.3V TTL level and an external transceiver would need to be added to support CAN signaling. ||= GW16145 50-Pin No. =||= Signal Name =|| || 25 || CAN1_TXD || || 27 || CAN1_RXD || || 8 || CAN2_TXD || || 10 || CAN2_RXD || For additional CAN bus info see the following link: [wiki:canbus] == Audio The MIPI connector contains SAI (synchronous audio interface) audio signals that support I2S. It is recommended to choose a desired codec chip and build an adapter that connects onto the MIPI header to implement audio. It should be noted that audio can also be implemented over USB. Read more about USB audio here: [wiki:venice/multimedia#Audio] Audio code examples could include: * Texas Instrument TLV320AIC3105IRHBR * Maxim 98089 low-power stereo codec * Cirrus Logic WM8904CGEFL * Cirrus Logic WM8524 For development, a GW16145 adapter could be cabled to an audio codec breakout board such as from [https://www.sparkfun.com/categories/343 Sparkfun] Gateworks can also be hired to create custom audio designs. === GW16157 Audio Adapter [[Image(gw16157.jpg,300px)]] The GW16157 Audio card was designed for a specific use case and connects to the MIPI connector of a GW73xx/GW72xx providing: - NXP SGTL5000 audio codec - MIC to connector - LINEOUT_L to TPA3110D2 15W Class D amplifier with auto-fault recovery and GPIO control to shutdown via MIPI_GPIO1 (GPIO4_IO4 on IMX8MM) Power Amplifier * Texas Instruments TPA3110D2 * Class D Amplifier w/PBTL Mono Output * 15W @ 4 ohm with 10% THD * 8-26V Supply Voltage (24VDC recommended) Codec * NXP SGTL5000XNBA3 * Programmable MIC Gain and MIC Bias Support * MIC ADC 85dB SNR * Digital Audio Processing: * NXP Surround, Bass and Tone Control * !Parametric/Graphic Equalizer * Digital Mixer ==== GW16157 Software - Kernel drivers/modules: (recommended to set static if possible) * snd-soc-fsl-sai CONFIG_SND_SOC_FSL_SAI SND_IMX_SOC * snd-soc-sgtl5000 CONFIG_SND_SOC_SGTL5000 * snd-soc-simple-card CONFIG_SND_SIMPLE_CARD * CONFIG_SND_IMX_SOC - Device tree overlays are required and would be something like the following: * GW72xx: imx8mm-venice-gw72xx-0x-gw16157.dtbo * GW73xx: imx8mm-venice-gw73xx-0x-gw16157.dtbo * GW74xx: imx8mp-venice-gw74xx-gw16157.dtbo * More about device tree overlays here: [wiki:linux/devicetree#overlay] * Example bootloader command for GW72xx: * {{{ setenv fdt_overlays imx8mm-venice-gw72xx-0x-gw16157.dtbo saveenv }}} A sample script used for testing: {{{#!bash cat /proc/asound/cards # show card # enable lineout for 30% volume amixer set Lineout on amixer set Lineout 30% aplay /usr/share/sounds/alsa/Front_Center.wav # set capture gain to 8. Valid values: 1-15 amixer set Capture 8 # turn on capture amixer set Capture cap #set mic volume to 50% amixer set Mic 50 # make sure digital input mux is set to I2S. Setting it to ADC routes the microphone to the speaker # and causes intense feedback amixer set "Digital Input Mux" I2S echo "Recording..." arecord -d 5 -f dat -r 48000 -vvv -c1 /tmp/test.wav echo "Playback..." aplay -f dat /tmp/test.wav }}} ==== GW16157 Hardware J1 = Microphone Input. * Example Microphone: PUI Audio POW-3535L-3-LW100-B-R Link * Pin 1 = Ground * Pin 2 = MIC Output + * Pin 3 = Ground J2 = Mono Speaker Output * Example Speaker: Peerless TC5FC07-04 (4 ohm @ 5W) Link * Pin 1 = Speaker - * Pin 2 = Ground (no connect) * Pin 3 = Speaker + J3 = Vin Pass Through * This connector can be used to simplify cabling and provide Vin to the SBC baseboard. * Pin 1 = Vin * Pin 2 = GND * Pin 3 = Vin * Pin 4 = GND J4 = Voltage Input for Audio Amplifier (8-26V, 24V recommended) This should be connected to an external supply and is used by the on board audio amplifier. * Pin 1 = Vin * Pin 2 = GND * Pin 3 = Vin * Pin 4 = GND On Board Headers: * J1 & J2 = TE Connectivity 2MM-HSP-S03-VT-02-H-TB * J3 & J4 = TE Connectivity 2MM-HSP-S04-VT-02-H-TB Mating Housing: * J1 & J2 = TE Connectivity 2MM-RCP-S03-BX = 2316104-3 * J3 & J4 = TE Connectivity 2MM-RCP-S04-BX = 2316104-4 Crimps for Housing: * 2MM-RT-M-T-ST (Tin) = 2-2316113-2 * 2MM-RT-M-F-ST (Gold Flash) = 3-2316113-3 * 2MM-RT-M-M-ST (Gold 0.38um) = 4-2316113-4 * 2MM-RT-M-H-ST (Gold 0.76um) = 5-2316113-5 [=#software] == Venice MIPI DSI / CSI Software '''This wiki page covers all hardware related information to the Venice MIPI interfaces. Software is also a very important aspect, and all software information is covered on the [wiki:venice/multimedia] page.''' == MIPI-CSI Camera Support Gateworks has tested with a Raspberry Pi camera as a demo, please see more information here: [wiki:venice/multimedia#Compatiblecapturedevices Venice Capture Devices - RPi Camera]