Beaglebone + LIDD-capable LCD

Thanks for your reply Christopher. Yes LCD11-15 is especial but after I changed pin map and made a double check, result was same.

For the log, “unknown driver signature” is not fatal error message? I uncommented first line of ssd1289.c and got these debug information.

And Another suspect point is: my LCD has pin NC and BLCNT but all are left unwired.

For patch, I think I used an old version since I have to move function to other position manually to make compile pass. But I didn’t change one line logic of code.

Kunpeng,

I have uploaded a new version of the patch to Cemetech; it’s now 0041… rather than 0031… Please let me know if that does the trick for you. You can also post in the Cemetech thread for the patch if that’s easier. :slight_smile: No, unknown driver signature is not a fatal message, it just means the LIDD was unable to execute a read from the LCD. My LCD does the same thing, hence why it isn’t marked as a fatal event. NC is “not connected” and should be left unwired; BLCNT can just get hooked to 3.3v (VCC).

Cheers,
Christopher

Now the LCD can work, although not stable. LCD is always white backlight, then after 2 or 3 minutes, I reset the board. Then if I was lucky enough, the LCD got black and display text.

Kunpeng,

Sorry to hear of your difficulties; I’m afraid I can’t replicate those issues. Have you made any progress stabilizing the LCD?

Christopher

It is weird since it can work sometimes. And I have gave up to try since I have no idea on it. I attached the code, which was downloaded from LCD dealer and it is for SMT32. I saw there are many difference with your ssd1289.c driver. You can give a quick look and find out something.

Now I am building a compact wire connecting LCD and board.

Thanks,
Fan

LCD.zip (13.8 KB)

Fan,

That code seems to make allowances for many different types of controllers that follow the same general protocol as the SSD1289, but in the end it is not THAT different, I think. One thing you might consider is to make sure your wires are short enough and that you avoid crosstalk. I discovered that with a long cable I get a noisy/corrupted display due to crosstalk.

Christopher

Hi everyone!

I want to connect an LCD for primary display to my beaglebone black. I have not yet purchased an LCD because I am still on the process of choosing which LCD works. I don’t have a background on writing drivers and patching, but I can program and have experienced compiling a linux kernel for an amd geode singleboard computer in the past.

After searching the net about LCDs and beaglebone, I learned about the builtin LCD support of the AM335x processor. So now I looked for LCDs with similar interface and I came across this: https://www.google.com/url?sa=t&rct=j&q=&esrc=s&source=web&cd=1&ved=0CCwQFjAA&url=http%3A%2F%2Fwww.fannal.com%2Fsupport%2Fdocument-download%2Fitem%2Fdownload%2F13_f59fd9529e0ce870e8347832c9f4822a.html&ei=7DAzUvb0FYe4iAfF7IGQBw&usg=AFQjCNHINBIAaYblpZ1cBXIqXU0qyKT6ZQ&sig2=s5nJqjlkH14jVrCn-oalqw&bvm=bv.52164340,d.aGc&cad=rja

It has 24-bit TTL interface. So my questions are:

  1. Is the 24-bit TTL RGB interface stadard? That is, I can just connect this to the beaglebone with at most editing the pinmux
  2. How do I know if an LCD is compatible with the AM335x processor?
  3. According to the supplier the touch controller is SSD2532. What are the things do I need to do, to make the touch interface work? Do I have to make my own driver to interpret touch data from the I2C communication?

I am looking forward for your responses.

Thank you very much.

Sincerely,
kit

The 24 bit is standard on all 24 bit displays. There are also 8 bit displays as well. And 16 bit displays. The BBB is setup for 16 bit displays, but you can still use the 24b display.

As to whether it will work, a lot of displays can work. You nee dto get help form some one that knows the AM3359 processor.

There are several references for LCD that can be found by looking at the schematics for the LCDs that are already on the market, built, and ready to go.

http://circuitco.com/support/index.php?title=BeagleBone_Capes has a few isted and there others out there as well.

Gerald

Thank you Gerald. I’m reading about device tree because I’m using the 3.8 version of the linux kernel. I’m going to make my LCD as my main display. It has capacitive touch panel. The touch has an I2C interface and uses FT5x02 driver( I have the C source for this). I think I can understand how to make a dts base on the existing dts in the kernel source. However, I am still on the process of learning it.

Which BeagleBone do you have?

Gerald

Beaglebone black. Right now, I am building the circuit to power and connect my LCD, backlight and touch interface. My LCD has 24 pins for the data. I think I’ll just connect 16 for now and try to modify a dts of an existing lcd cape. About the touch interface, how do I let the kernel load my driver?

Ever here of Device tree? You have to disable the onboard HDMI framer to use the pins for your LCD.

http://circuitco.com/support/index.php?title=BeagleBone_Black_FAQ

Gerald

Yeah. I think I can disable the onboard HDMI framer and enable my own LCD display through the cape manager at runtime or set it in the Env.txt to do it at boot process( as I have read from here http://learn.adafruit.com/introduction-to-the-beaglebone-black-device-tree/exporting-and-unexporting-an-overlay).

Here’s what I have done so far. based here http://www.cemetech.net/forum/viewtopic.php?t=7814&postdays=0&postorder=asc&start=0

  1. cloned the angstrom setup script
  2. checkout the 2013.06 source
  3. setup using the oebb.sh for beaglebone
  4. compile the menuconfig and looked through it.
  5. bitbake virtual/kernel compile

now I can see the kernel source somewhere in the build folder
Here’s what I am planning to do.

  1. use and edit an existing device tree source in the firmware/capes (I’m gonna go with BB-BONE-LCD4-01-00A0.dts.
  2. add the touch screen driver (I’m still figuring out where and how including how to enable the kernel to know that the driver for the touch interface in the device tree is this one.)
  3. build the image.

I still can’t say if I am on the right track because I have just read about device tree since yesterday.

kit

It would be easiest to disable the onboard HDMI framer at boot time, and then you can test enabling and disabling the LCD display via the cape manager.

IE modify the DTS. Don’t even worry about touchscreen for now, just focus on graphics.

Modify and compile the DTS, place the compiled mods into the /firmware directory and then send the file name to the cape manager, ie

echo yourfilename >/sys/devices/bone_capemgr.*/slots

The file is fairly self explanatory and as long as your sticking with 16 data lines your in good shape.

From the BB-BONE-LCD4-01 file you would delete the following sections:
tsadc - this is for the touchscreen, just remove it for now to avoid errors while loading it
gpio-leds-cape-lcd4 - this is for some status led’s on the lcd. While they should not cause any problems, if you remove the section then you won’t have any problems

The panel section is the important one:

panel {
compatible = “tilcdc,panel”;

This tells Linux that it should load the tilcdc panel driver and gives the configuration information. Normally, the tilcdc driver would be loaded upon bootup and when a new device was found[either from the hdmi connection or from an i2c connection] it would auto configure based on the data. Since your just using a raw LCD panel, you have to manually load it. Make sure to adjust the panel-info and display-timings section to match your LCD configuration.

One of the really cool things with the device tree is how you should be able to configure/adjust settings for all sorts of drivers automatically. Pre-device tree tended to require a seperately compiled “driver” for every variation. Browsing through older video drivers, I find large numbers of C files that only exist to define panel timings for different models of LCD’s. These files are duplicated in lots of different video display drivers to add the panel definitions there.

Wheras with the device tree and TI’s addition of support for fragments, you can place the timing information in one DTS fragment, and then include those fragments in the DTS file on a driver by driver basis.

Thanks. I will be focusing on the display first. I am thinking of separating the dts for the LCD display and the touch screen. Is that ok?

The DTS just defines:
Pins to use and what mode the pin should be configured for
Possibly: some friendly labels to use to label the pins in the sysfs tree
Possibly: a driver to load and some configuration information for the driver

As such you can certainly have a separate DTS file for each function/driver[LCD, Touchscreen, Buttons, etc]

I built the backlight for my LCD using an LED driver. I tested it with LEDs and the LCD(not connected yet with BBB) and it lights up. I connected my LCD to the BBB with http://pastebin.com/8Mh8sRHB this device tree definition in slot 7. My LCD is not working. Not even the backlight. The LCD I used is http://www.lilliputuk.com/uploads/attachments/569GL_LCD.pdf.

Oh well, I got it working. I disconnected the PWM pin in the backlight controller an just left it pulled up. I now have a display. But it is a console. I though angstrom has gui. What angstrom should I flash my bbb to have the GUI? so that I can start with the touch screen now.

When booting up, most modern linux configurations check for a working monitor when booting. If the monitor is there it starts the windowing system. If there is no monitor it doesn’t.

Considering the window system takes a lot of memory, it just makes sense not to load it if it doesn’t do anything.

If you have a keyboard connected, try logging in and running 'startx" from the command line.

If you don’t have a keyboard connected, then you will need to SSH to the system… I’m not sure what the command is from remote…maybe try ‘startx &’ ?

Yey thanks. I got to see xterm. But I need to see the desktop view so that I can test the touch screen. Maybe I got the wrong image flashed to beaglebone. I used this to reflashed my BBB when SSH stop working: https://s3.amazonaws.com/angstrom/demo/beaglebone/BBB-eMMC-flasher-2013.06.20.img.xz

I think I should have flashed the one with gnome thingy.

I also had this problem that my dtbo is not loaded at boot time. I was able to unload the HDMI.
here’s what’s inside the uEnv.txt

optargs=quiet capemgr.disable_partno=BB-BONELT-HDMI,BB-BONELT-HDMIN
capemgr.enable_partno= name of my cape

where is replaced with the name of the cape in my dts.

This does not load my LCD. So I had to load it manual into the slots.