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.

TI-RTOS MSP432 430Boost Sharp 96 issue

Other Parts Discussed in Thread: MSPWARE

BOOST430 Sharp96  REV 1.1

MSP432 EXP432P401R REV 2.0 

CCS 6.1.2.00015

TI-RTOS 2.20.0.06  also tested 2.16.0.08  Same results.

GrLib 3.21.0.0

MSPware 3.50.0.04

LCD Driver  rev ?

Sharp Memory LCD 128  P/N LS013B7DH03

Hi All,

I am trying to modify the 430Boost- Sharp 96 booster pack to work with the Sharp 128x128 LCD module.  The Booster pack was originally designed with the sharp 96x96 pixel LCD module.  This part is obsolete and to use the hardware design one has to reconfigure to use the 128x128 module.

I have attached two CCS projects that illustrate my issues.   1106.LCD_96_to_128.zip

So, I procured the 128x128 and started to play.  Using the LCD driver supplied with the MSP432-EXPP401R examples available in resource explorer all works fine.  Both the 96x96 and the 128x128 work perfectly fine as long as I change the LCD size parameters in /LcdDriver/Sharp96x96.h  There seem to be no problems with this example.

I then created an empty TI-RTOS project and migrated the graphics library and LCD driver into it.  In this project the system runs perfectly fine with the 96x96 but the 128x128 behaves as though it isn't even connected.  

This is the third thread I am opening regarding this issue and it seems I am getting sent back and forth between the MSP 432 forum and this forum.  I was told it was a timing problem but no matter what I did with the various timers nothing seems to work.  

 

Please help.

 

Thanks

JP

  • Hi John,

    Without access to the LCD it's going to be challenging to reproduce your issue, but let's see if I can give you some guidance from the TI-RTOS perspective.

    Could you describe a bit more the projects you have shared? I see two of them: BluHale, and BHLCD. Is the main difference between them that one is based on TI-RTOS and the other one isn't? I also see both are using Sharp96x96.h with a difference in MCLK_FREQUENCY and SYSTEM_CLOCK_SPEED. Have you verified that these changes are strictly necessary to get your code to work in TI-RTOS? Did both of these projects work for you the way they are?

    (P.S. I see the projects were also compiled with two different versions of the compiler. You may want to stick with one so that you can compare things apple-to-apple.)

    Best regards,
    Vincent
  • Hi Vincent,

    Thanks for getting back to me. If you privately email me I will have the LCD drop shipped from Digikey. It is a $20.00 part, well worth me sending you one.

    The only intentional difference is that one uses TI-RTOS and the other does not.

    These two projects dont really do anything other then print some strings to the screen. They were created in CCS using the file new CCS project tool.

    The difference is that when I created the empty projects I chose an empty TI-RTOS template and the other I chose simply an empty project (Non-TI-RTOS).

    I then added the GrLib and LCDDriver code. After that I added some code to plot the strings. If there are differences in Sharp96x96.H it is because I was trying to change the timings. If I just copy and paste the unedited LCDDriver files the issue is there.

    Nothing I did seemed to change the timings and that is one of my questions. Please send me a code snippet that will change MCLK_FREQUENCY and SYSTEM_CLOCK_SPEED.

    I am not sure why the projects were compiled with a different compiler I only chose the defaults when I created them.

    Thanks
    JP
  • BTW yes, as long as I set the LCD horizontal and vertical extents to 96 and use the 96x96 LCD they work fine. If I set the extents to 128 and use the 128x128 LCD the TI-RTOS project does not work and the non TI-RTOS project works fine.
  • So I gather both of these projects work fine the way they are without modification, since they are both set to run for the 96x96 resolution. I managed to find a BOOST430 Sharp96 boosterpack, just don't have the 128x128 lcd you mentioned. I will try to look into your question tomorrow.

    Best regards,
    Vincent
  • Yes, they both work fine as is.  

    The part number for the LCD is this: LS013B7DH03 Digikey has 2871 of them available for shipment as of 6AM EDT today.  They cost $19.46, if TI is on a tight budget I will send you one, just let me know where to send it...

    Thanks for your help.

    JP

  • Hi JP,

    I think we can handle that charge. :) It's been ordered and should arrive next week. Thanks for the offer.

    Would you have the steps on how to physically hook it up?

    Best regards,
    Vincent
  • Laughing out loud.

    Yes, the change is simple. Just remove the 96x96 carefully and replace it with the 128x128. It is Pin compatible.

    What I did was to get a second Booster Pack, so I could switch back and forth without abusing the ribbon cable.

    Thanks
    JP

  • Hi JP,

    In terms of changing MCLK frequency, did you follow Ashish's suggestion in this thread: https://e2e.ti.com/support/embedded/tirtos/f/355/t/551331

    and try changing Boot.speedSelect from the module "ti.sysbios.family.arm.msp432.init.Boot" in your cfg file?

    var Boot = xdc.useModule('ti.sysbios.family.arm.msp432.init.Boot');
    
    Boot.speedSelect = Boot.SpeedOpt_Low; //Say you want to set MCLK to 12MHz.

    Even though it didn't fix the problem, did it change the MCLK frequency for you?

    Best regards,

    Vincent

  • Hi Vincent,

    It did not seem to do anything to MCLK. I just put the lines of code you sent and I am seeing a 5ms pulse every 100ms on P4.3, it seems to be related to the Heartbeat task Arg0, if I change arg0 to 500 the pulse is then showing up every 500ms.

    It seems that it does not matter if I put the var boot code in or not. Same thing.

    I also put a breakpoint in BIOS.c at line 98 BIOS_module->cpuFreq = * freq;  Upon inspection freq = 48000000.

    Ok,  the above breakpoint helped me out.  I ran across Power_setPerformanceLevel()  If I call this function with a 0 or a 1 it works fine if I call it with a 2 it causes the issue.

    This fix simply required me to step into BIOS.C , which means I had to use locate file for BIOS.c and PowerMSP432.c.  While steping through I saw that MCLK was 48 MHz.  

    So I added the following line of code in main() :

    Power_setPerformanceLevel(1);

    Right after the Board_initx() functions and all is well. 

    So now you guys can update the 430Boost-Sharp96 to the Sharp 128 and you have a new product.  For free, I might add.

    Thanks for all of your help, sorry you spent the 20 bucks on the LCD.  It is nice though, maybe you can make something cool with it. :)

    Thanks,
    JP

  • Hi JP,

    Glad you figured it out. That's the important part. :)

    Thanks for sharing the information. It's very helpful for anyone else using the Sharp 128 LCD in the future.

    Best regards,
    Vincent
  • First of all, thank you very much for the port and the analysis, .

    The documentation of the Power_setPerformanceLevel() function says: "This function should only be called from Task context".
    Would it help you to call Power_getPerformanceLevel() at the beginning, set it to 0 and 1, do the work, then back to the level you queried at the begin of the task?

    and: is it ok if I use your ported code in an MSP432 project, with attribution and link to this post?
  • Hi Jan,

    I am not sure how calling like that would effect performance.  I call it before Bios start, I am not sure what that means either. But it works swimmingly.

    You are welcome to use my code with attribution.  That would be cool.

    Thanks

    JP