iMX233-OLinuXino with LCD 4.3″ and touchscreen


Image

iMX233-OLinuXino uses TQFP version of the iMX233 and in the datasheet is written that this package do not support other than 8-bit LCD interface. So as this is written in the datasheet by the manufacturer we just trusted it and didn’t plan to release LCD for it, as the 8-bit interface limit the choice only to intelligent LCDs with internal RAM.

Claude Schwartz though proven the datasheet info wrong! He wrote on the irc #olimex channel that he made iMX233-OLinuXino-MAXI to work with both dummy and intelligent LCDs in 18 bit mode, so we sent him one A13-LCD4.3TS LCD to check and he sent us the picture above one day after he received the LCD.

This is iMX233-OLinuXino-MAXI wired with A13-LCD4.3TS LCD in dumb 18 bit mode, he attached USB-TV dongle to iMX233-OLinuXino-MAXI and actually this is TV stream from ZDF, iMX233 power is limited so he got only 3 pictures per second and this is more like slide show than TV stream.

Then he decided to do another test and compiled DOOM game for 320×240 pixel resolution and run it on iMX233-OLinuXino-MAXI with LCD, the result is here: http://www.youtube.com/watch?v=JR3N2SycEXM

So despite datasheets write we can’t use dumb LCDs with the iMX233 in TQFP package, this is proven to be wrong.

Now the next challenge is to make the LCD touchscreen to work as iMX233 in TQFP package have only 3 ADC inputs, as Claude already prove the hard things are easy to solve, the impossible (according to the datasheets) just take some more time, so the touchscreen support is just matter of some more time.

Next step if touchscreen is complete? Building small board with iMX233+4.3″LCD+LiPo battery to create low cost Game console!

13 Comments (+add yours?)

  1. David
    Dec 17, 2012 @ 20:58:15

    Hi,
    Is there any documentation or source code available for this?

    Thanks!

    Reply

  2. Mikeloto
    Dec 17, 2012 @ 22:46:40

    Esto esta de puta madre….. !!!
    It’s awesome !!
    I will work on 3.5″ screens and CAN-BUS device based on that…..

    Reply

  3. Phuong
    Dec 19, 2012 @ 17:06:40

    Hello,

    Good news.

    For touch screen, we can use the ADS7843E, and connect it with IMX233 via SPI bus. Linux kernel allows creating slow speed SPI bus via GPIO.

    Here is my source code (linux-2.6.35.3)

    - mx23evk.c :

    /* Touchscreen support */
    #if defined(CONFIG_TOUCHSCREEN_ADS7846) || defined(CONFIG_TOUCHSCREEN_ADS7846_MODULE)

    #define TS_PENIRQ MXS_PIN_TO_GPIO(PINID_GPMI_CE1N)
    #define TS_MISO MXS_PIN_TO_GPIO(PINID_GPMI_CE0N)
    #define TS_MOSI MXS_PIN_TO_GPIO(PINID_GPMI_RDN)
    #define TS_SCK MXS_PIN_TO_GPIO(PINID_LCD_DOTCK)
    #define TS_CS MXS_PIN_TO_GPIO(PINID_GPMI_WPN)

    struct spi_gpio_platform_data mx23evk_spi_gpio_platform_data = {
    .sck = TS_SCK,
    .mosi = TS_MOSI,
    .miso = TS_MISO,
    .num_chipselect = 1,
    };

    struct platform_device mx23evk_spi_gpio_device = {
    .name = “spi_gpio”,
    .id = 3,
    .dev = {
    .platform_data = &mx23evk_spi_gpio_platform_data,
    },
    };

    static int ads7843_penirq_init(void)
    {

    if (gpio_request(TS_PENIRQ, “TS_PENIRQ”) < 0) {
    printk(KERN_ERR "can't get TS_PENIRQ\n");
    return -1;
    }
    gpio_direction_input(TS_PENIRQ);

    set_irq_type(gpio_to_irq(TS_PENIRQ), IRQ_TYPE_EDGE_FALLING);

    return gpio_to_irq(TS_PENIRQ);
    }

    static int ads7843_pendown_state(void)
    {
    return !gpio_get_value(TS_PENIRQ); /* Touchscreen PENIRQ */
    }

    static struct ads7846_platform_data ads_info = {
    .model = 7843,
    .x_min = 150,
    .x_max = 3830,
    .y_min = 190,
    .y_max = 3830,
    .vref_mv = 3300, /* KM233 using vref 3.3V */
    .vref_delay_usecs = 100,
    .x_plate_ohms = 450,
    .y_plate_ohms = 250,
    .pressure_max = 15000,
    .debounce_max = 1,
    .debounce_rep = 0,
    .debounce_tol = (~0),
    .get_pendown_state = ads7843_pendown_state,
    };

    static struct spi_board_info spi_ads7846_info[] __initdata = {
    { /* Touchscreen support */
    .modalias = "ads7846",
    .max_speed_hz = 100000,
    .bus_num = 3,
    .controller_data = (void *) TS_CS,
    .platform_data = &ads_info,
    },
    };

    #endif /* CONFIG_TOUCHSCREEN_ADS7846 */

    …..

    static void spi_device_init(void)
    {

    #if defined(CONFIG_TOUCHSCREEN_ADS7846) || defined(CONFIG_TOUCHSCREEN_ADS7846_MODULE)
    platform_device_register(&mx23evk_spi_gpio_device);
    spi_ads7846_info[0].irq = ads7843_penirq_init();
    spi_register_board_info(spi_ads7846_info, ARRAY_SIZE(spi_ads7846_info));
    #endif

    #if defined(CONFIG_ENC28J60) || defined(CONFIG_ENC28J60_MODULE)
    spi_en28j60_info[0].irq = gpio_to_irq(MXS_PIN_TO_GPIO(PINID_SSP1_DATA1));
    spi_register_board_info(spi_en28j60_info, ARRAY_SIZE(spi_en28j60_info));
    #endif

    }

    Regards

    Reply

    • OLIMEX Ltd
      Dec 19, 2012 @ 17:12:14

      everybody knows with external IC ;) the challenge here is to make it without external IC

      Reply

      • Do Not Spam Me
        Dec 20, 2012 @ 05:37:08

        There is a patch in the Linux-IIO mailing list for LRADC touchscreen support for MX28. I tested it on DENX M28EVK and it works. As for LCD, that’s supported in upstream kernel (3.7) already.

  4. lz2ilr
    Feb 01, 2013 @ 20:43:37

    is there anything to stop this working with the 233 micro? i have a great idea but space will be very limited to cram 233 micro and touchscreen into a already packed out ham radio.

    Reply

  5. sven
    Mar 23, 2013 @ 21:32:31

    When will the documentation or source code be available for this?

    Reply

  6. David Aparicio
    Jul 14, 2013 @ 13:21:33

    Any news? I have a iMX233-MINI and a LCD4.3TS, and plan to try this.
    It is clear the RGB connections, but I have some doubts on the control pins. before I fry my hardware, I would like some confirmation on the proper connections. This is my plan:
    iMX233:LCD_ENABLE -> 4.3TS:LCD_DE
    iMX233:LCD_DOTCLK -> 4.3TS:LCD_CLK

    There are
    * 4.3TS:LCD_PWRE that I think can be ignored if we change jumper CTRL/EN to ENABLE (short 1-2).
    * 4.3TS:LCD_BKL that seems a backlight control so I *guess* I can connect to 3.3V for maximum white and to GND for black (as a second step, i *guess* I could connect to iMX233:PWM2-P27)

    Can someone confirm before I blow the hardware? :)

    thank you

    Reply

  7. jaydcarlson
    Aug 23, 2013 @ 08:45:52

    I’m not sure why Olimex was unaware that you can interface an LCD (in 18-bit mode) to this board. Table 37-3 “Pin Multiplexing for 128-Pin QFP Packages” in the reference manual clearly indicates what the pin multiplexing is for lcd_d0 through lcd_d17. This is the appropriate pinout to use for interfacing with an LCD.

    Reply

  8. hariprasad
    Dec 03, 2013 @ 09:24:21

    can anyone tell me that the imx233-olinuxino-maxi that run qt application with 3.5″ touch screen lcd interfacing…

    Reply

  9. Santiago
    Jan 02, 2014 @ 23:01:11

    Please, there is a place where I can download a kernel image in witch the A13-LCD4.3 is supported for the iMX233-OLINUXINO-MAXI?
    Thanks

    Reply

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

Follow

Get every new post delivered to your Inbox.

Join 506 other followers

%d bloggers like this: