Linux – Connect Marsboard with Touch Panel and access GPIO pins

armdisplaylinuxmicrocontrollertouchscreen

I am thinking about using a MarsBoard A10 and LCD Touch Panel for low volume commercial product but I have to confirm some capabilities first.

Firstly, what would it entail to get the Marsboard A10 http://www.marsboard.com/ set up to display to and receive touch input from a http://www.hotmcu.com/43-inch-480×272-tft-lcd-display-touch-panel-standard-40-pin-p-43.html?cPath=6_16. It appears as if though their "A20 Linux" http://www.marsboard.com/download.html (which I am not sure will run on the A10) supports the display and if the Marsboard does have all the pins correlating to those on the display but I need confirmation as to exactly what would be required to form a connection. For example what physical connector will I have to use and will any extra software or hardware drivers be required?

I would then also like to know how many digital IO, PWM and analog input pins I will have available on the Marsboard after I have connected the screen (I am struggling to find any reference as to what is available with or without the screen) as well as how I will be able to control them from a program running in the Linux OS on the Marsboard?

PS. I want the entire operating system to interface with the display panel and not only just an application running inside the operating system.

Best Answer

but I need confirmation as to exactly what would be required to form a connection.

For the majority of the LCD output signals, simply connecting the pins from the Marsboard to the LCD display would be enough. A single, smaller (22-68 ohms) resistor in series with the lines could serve as a safety measure against ringing caused by the stray inductance of longer lines and strong output drivers of the processor.

The LCD datasheet says the backlight LEDs want ~20V, so you'll probably need some kind of extra power supply, or a DC-DC converter. A constant-current (CC) step-up boost converter might be the best choice.

I don't know much about the touch panel interface, though. The pin naming (X1/X2/Y1/Y2) suggests there should not be too much difficulty connecting them (the processors has pins with the same name).

For example what physical connector will I have to use

The LCD datasheet says HIROSE FH19SC-40S-0.5SH(05) or similar. A quick check shows it is available at least from Farnell, so I guess it should not be difficult to find it anywhere (probably other, cheaper models would work as well, check the physical properties of this connector).

You'll also need a pair of 2mm headers to connect the Marsboard to your PCB. This may be a little more difficult get, as they are using 2x35-pin headers. Buying 2x40-pin headers and cutting off the extra pins may be acceptable for a DIY project or a prototype build, but definitely sounds bad for a commercial project.

I would then also like to know how many digital IO, PWM and analog input pins I will have available on the Marsboard after I have connected the screen

Unfortunately, Allwinner is not that much keen on distributing documentation and demo code related to their chips. This means you have to work a little bit to gather all the little pieces of information from the net. First, you should get the schematics of the board, it's nice and simple design. Then you should look at the documentation available for projects at other sites made with Allwinner Axx chips. Olimex produced open-source designs with A10S, A13 & A20. Their project directories also have some chip documentation (data sheets) they've got or found. You can also use google (allwinner a10 ext:pdf). From all those sources, reading the PDFs, checking the schematics of different projects, you can compile the list of the pins of the device, with the functions available on them. Then you can correlate this with the CPU pins connected to the headers on your board. There are >100 pins available connected to the headers, most of them can be used as a GPIO if not used for a specific functionality.

The limitations that I currently see with your usage:

  • the chip contains two PWM outputs, but only one of them is connected to the pin headers, so you only have a single PWM output,

  • there is an audio codec with stereo line inputs, and two low-resolution (6-bit) slow (250Hz) ADC inputs (called LRADC), and no more ADC beyond these.

If you need "classic" microcontroller functionality (PWM outputs, ADC inputs), you'll have to connect some external peripherals, a small microcontroller, or some external ADC, for example. There are several I2C and SPI interfaces available for this purpose.

A few links that I've found regarding the booting and the hardware configuration of the device:

http://elinux.org/Hack_A10_devices

http://rhombus-tech.net/allwinner_a10/a10_boot_process/

http://linux-sunxi.org/Fex_Guide

http://forum.doozan.com/read.php?6,8481

Related Topic