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
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.
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.
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,
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
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.