This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

LP-MSPM0G3507: LCD drive using GPIOs

Part Number: LP-MSPM0G3507
Other Parts Discussed in Thread: SYSCONFIG

Hi,

I'm trying to drive segment LCD using GPIO ports, is there are any reference design that used with MSPM0 SDK? LCD specs are

1/3 bias - 3 coms and 21 segments.

Thank you in advance 

  • Hello Staneslouse,

    In the next update the MSPM0 SDK, we will be including a software based solution for driving extern LCD segment displays. This SDK should be coming within the month. The accompanying application note that explains the example is still pending. Please contact your TI Sales representative for more information.

  • hi Jace,

    I have download the new SDK that includes with LCD example. I'm wonder this version will support for custom segmented LCD displays?

    Kind regards

    Stanes

  • Stanes,

    It would need to be modified to fit displays that are less than 4 COM lines. Adding any number of Segments is no issue with this solution. 

    The basic flow would be the same, but would need to change the state machine and your mapping buffers to fit with 3 COMs. This may mean that your table mapping procedure may differ as well. I'm guessing here as I haven't gone through the exercise of an odd COM line configuration. 

  • hi Jace,

    yes I can understand, its possible to share the application note with me if you have one.

    Kind regards

    Stanes

  • Stanes,

    The application note associated with this code is still being developed and is not currently available. 

  • Hi Jace,

    I received draft app note and I have tried with lcd_multiport example also, scope the COM lines and I'm wonder that haven't see any voltage deviations - I think COM port should generate multi voltage level wave pattern if I wrong please correct me.

    Thank you,

    Kind regards

    Staneslouse

  • Hello Staneslouse,

    Have you attached external pullups to the COM pins? Those are needed for proper operation. 

  • Hi Jace,

    Yes I have attached COMs to external voltage dividers 

  • Staneslouse,

    I'll have to look into this further later this week. Are you using the single port or multi-port version? Did you chan geany of the Sysconfig settings before trying out the code? 

  • Hi Jace,

    I have tried multiport version, I didn't change any Sysconfig settings to this. but I have tried single port with modified Sysconfig to our custom display. -both gave me same results.

    Kind regards

    Staneslouse

  • Staneslouse,

    I see what the issue is with the version of code available. Within the Sysconfig of the project, modify the timer and click the "Start Timer" checkbox and under "Interrupt Configuration" enable the "Zero event" interrupt. It seems these settings did not get copied over. 

  • hi Jace,

    I have correct the above mistakes as per your suggestion,  I have noticed some improvements on COMs waveforms but, not like what I thought, please see attached image and suggest me is this COMs waveforms are correct.

    and please elaborate more on  this command #define SEGMENT_LINE_PORT_SPLIT 6, I think this can separate two ports un evenly is it?

    Kind regards

    Staneslouse

    Purple - COM2 / Blue - COM1 / Sky-blue - COM0

  • Staneslouse,

    I would double check your connections from Launchpad to your breadboard (assumption) here. Also ensure there are no conflicts on the LP with your chosen pin (remove jumpers elsewhere on board). I was having an issue today as well, but turned out to be a bad wire form my LP to my breadboard.

    SEGMENT_LINE_PORT_SPLIT is utilized for the multi-port example only. It denotes in the SW where you are splitting your segments in relation to your ports (where PORTA segments end and PORTB segments start). Keep in mind, segments must be in pairs. Seg 0+1 , Seg2+3, SEG 4+5, etc. 

  • Hi Jace,

    I think your checked with single port example, I check with multi port example  and I changed the COM pins and it produced proper pattern,

    I have a quick question, I'm trying to modify this example for 3COMs - do I need to maintain the  LCD update cycles as same  or can reduce ?

    Kind regards

    Staneslouse

  • Staneslouse,

    Correct, I was looking at the single port, but the underlying code it the same. Initial development was not done on a Launchpad, so potential conflicts of pins can occur. The intention is for customers to change the pins for their prospective LCDs.

    For 3COMs, I would think you would need to reduce the LCD update statemachine, otherwise you will have "dead" states and possibly see artifacts on the screen. 

  • Hi Jace,

    I modified LCD update state machine for 3COMs and change the timer value to 0.1mS to reduce the flickering and ghost effect.

    Now my concern is, I have some issues to turn one the segments using LCDWriter(), when I try to turn on seg1’s all three elements, it hasn’t and it directed to seg3.

    Also, in the TI app note there was an example for display digit ‘4’ – according to my custom LCD I can’t make the digit ‘4’ in 8bit value because for this LCD I must consider segment x, x+1 and x+2 please see attached LCD mapping.

    Could you please advise me, is there are any different way for numerical mapping for this LCD.

    Kind regards

    Staneslouse

  • Staneslouse,

    You would need to re-write LCDWriteCharacter() to use a base 3 COM shifting and masking to fit your situation. You will have to do the same for your gNumberMap[array]. Since you have to use three segments in a row, your access and writing to the port may differ as well or it may get really complicated. 

    However you chose to write characters to your LCD memory buffer, the state machine works by manually toggling the COM pins, and writing, then toggling the whole GPIO port in subsequent ticks of the LCD state machine. The LCD memory buffer is one to one to the GPIO port and uses the same mask as the active pins. So if you setup your buffer correctly, everything should fall into place. 

    This is as much as I can advise as I stated in the beginning, the exercise of working through an odd number of COM ports has not been explored from a SW implementation perspective, and outside the scope of this solution.