Jump to content
43oh

LCD Controller using Stellaris and MSP430


Recommended Posts

This project attempts to control a surplus LCD (http://www.goldmine-elec-products.com/prodinfo.asp?number=G18246) using a MSP430 and the Stellaris Launchpad.

 

Brief Description:

 

This project is designed to run a 320x240 monochrome LCD with minimal CPU overhead.

A seprate controller board supplies the VEE for the display, controls the Backlight and has a MSP430G2542 running as a SPI Master. The MSP also controls the clocks for moving the data to the display.

The Stellaris side sets up a 1BPP offscreen display for Grlib and also sets up a UDMA job that transfers the display buffer to the SPI port for the MSP to collect.

The SPI connection is set up to transfer 16 bits at a time, allowing for 4 pixel updates for each transfer. With the SPI clock running at 8Mhz, the display can update at ~51 Hz.

 

I had the first PCBs made by OSH park and am currently trying to iron out some bugs in the bias voltage section. As soon as that is done, I will be adding schematics and the board layout on github.

 

Code and documentation can be found here:

 

https://github.com/hvontres/LCD-Controller

 

 

Here is a picture of the current project:

 

post-137-14264605226702_thumb.jpg

 

Here is the first prototype:

post-137-14264605227047_thumb.jpg

 

a picture of just the controller:

post-137-14264605227374_thumb.jpg

 

controller mounted below launchpad:

post-137-14264605227699_thumb.jpg

 

 

Here is a video demo showing the different modes of the main application:

 

 

The video starts with the splash screen, inverts the display, animates the splashscreen using grlib, displays text using grlib functions and finally shows some test images downloaded in 8 pixel chunks from the host. The current code allows for 30 chunks per transfer, so that is why the screen updates are a little slow. I'll try to get some better video soon.

 

Link to post
Share on other sites

Very cool!  I like that you included the MSP430 as well.  

 

Does the LCD itself have memory - or are the small chips RAM?

Nope, no memory on the LCD, other than the shift registers in the controllers. The chips on the controller are a MSP4302542 to handle the data transfers between the stellaris and the lcd, a 74HCT245 used as a level shifter from 3.3V to 5V, a 4N29 isolator to turn the display on and off and a Max774 to supply the bias voltage. The framebuffer for the lcd is actually in the stellaris.

 

https://github.com/hvontres/LCD-Controller/blob/master/Docs/Controller%20Design.pdf has a more detailed description on how this thing works :)

Link to post
Share on other sites

Interesting and nice big display.

 

Looking at your (great!) documentation, I think you only send updates to the display. So the display has some kind of memory to manage refresh even though you can't read from it. Or did I miss something?

 

Is there any particular reason why you relay the communication via the MSP430 instead of connecting the Stellaris directly to the 74LS245? (other than "because I can", which is very valid too :-)

 

Thanks for sharing.

Link to post
Share on other sites

Interesting and nice big display.

 

Looking at your (great!) documentation, I think you only send updates to the display. So the display has some kind of memory to manage refresh even though you can't read from it. Or did I miss something?

 

Is there any particular reason why you relay the communication via the MSP430 instead of connecting the Stellaris directly to the 74LS245? (other than "because I can", which is very valid too :-)

 

Thanks for sharing.

 

Actually the display is really dumb. The MSP is in charge of doing the refresh and fetching the data. The Stellaris mostly supplies the memory needed to hold the display data. The Driver chips on the display have enough memory to hold one LINE of data at a time. So the max refresh rate is limited by how fast the MSP can process the data. This display was originaly meant to be driven by something like a SED1335 controller chip. But that would have been too easy :)

 

By having the MSP handle all of the display timing and refresh, the Stellaris only needs to use ~4% CPU time to manage the display, leaving plenty of CPU time for generating the Data to display.

 

Here is some more info on how to drive this particular display: http://tinyurl.com/8j9jkvv

Link to post
Share on other sites
  • 4 months later...

UPDATE:

 

I just posted the hardware docs on Github (https://github.com/hvontres/LCD-Controller/tree/master/Hardware/LCD%20Driver)

The project was done using the latest snapshot of kicad. One modification that is not shown in the current pdf documents was to remove C6. It seemed to be causing a nasty 20 Hz ripple in the -27 Bias supply that would show up as a 20Hz flicker in the display. I also found a couple of drill holes were a bit small on the first prototype. I will try to get a new version of the gerbers out soon.

Link to post
Share on other sites
  • 1 year later...

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...