GLCD SSD1327 SPI needed

Post here to discuss any new features, components, chips, etc, that you would like to see in Flowcode.
Jorg_Guldner
Posts: 31
http://meble-kuchenne.info.pl
Joined: Wed Dec 23, 2020 9:55 am
Been thanked: 4 times

GLCD SSD1327 SPI needed

Post by Jorg_Guldner »

Hello!
GLCD SSD1327 I2C is avalaible. Could you create a component SSD1327 with SPI?

Thanks in advanced

Jorg

BenR
Matrix Staff
Posts: 1706
Joined: Mon Dec 07, 2020 10:06 am
Has thanked: 435 times
Been thanked: 598 times

Re: GLCD SSD1327 SPI needed

Post by BenR »

Hi Jorg,

Do you have an example display in mind?

Currently we only support on/off of the pixels using a 2K RAM buffer on the MCU.

On the display each pixel can output up to 16 different levels of intensity to create grey scales. Would this be something you need? Supporting this would potentially consume up to 8K of RAM on a 128 x 128 display and so would rule out a lot of MCUs.

We could also potentially scrap the RAM buffer and allow for 16 levels by not allowing overwrite and transparency effects. This is certainly an option but you would then have to be careful about the order and placement of items on screen as each write controls two pixels.

Jorg_Guldner
Posts: 31
Joined: Wed Dec 23, 2020 9:55 am
Been thanked: 4 times

Re: GLCD SSD1327 SPI needed

Post by Jorg_Guldner »

Hello!
The ssd1327-Component already exists inside flowcode v9, but with I2C. For beter performance it was nice to have a component with SPI. For more text and graphics, the resolution of 128x128 is much beter than 128x64. The gray scale could be a factor for all pixels at the same time, setup before writing to the oled. What do you think, how much sram is needed for this one?

Regards

J. Guldner
Attachments
SSD1327.jpg
SSD1327.jpg (74.31 KiB) Viewed 4191 times

BenR
Matrix Staff
Posts: 1706
Joined: Mon Dec 07, 2020 10:06 am
Has thanked: 435 times
Been thanked: 598 times

Re: GLCD SSD1327 SPI needed

Post by BenR »

Hello,
The gray scale could be a factor for all pixels at the same time, setup before writing to the oled.
Yes that should be possible using the current 2K buffer. I'll investigate making an SPI verison for you.

Hopefully it's not too different.

BenR
Matrix Staff
Posts: 1706
Joined: Mon Dec 07, 2020 10:06 am
Has thanked: 435 times
Been thanked: 598 times

Re: GLCD SSD1327 SPI needed

Post by BenR »

Hello,

I've now created an SPI version of the compoennt for you. I don't have hardware to test it but I'm somewhat hopeful it should work.

If you have a go then please let us know how you get on.

Jorg_Guldner
Posts: 31
Joined: Wed Dec 23, 2020 9:55 am
Been thanked: 4 times

Re: GLCD SSD1327 SPI needed

Post by Jorg_Guldner »

Hello!
Thanks for doing the asked component. I use the cpu "PIC24EP128MC202"

I test it and see nothing on the display. My oscilloscope shows no data signal coming out from the mosi pin. cs, dc and clk are present.
Switching over to the channel 2 gaves a compiling error listed below:

In file included from C:\ProgramData\MatrixTSL\FlowcodeV9\CAL\includes.c:1251:0,
from PIC24EP128MC202_SSD1327_SPI.c:376:
C:\ProgramData\MatrixTSL\FlowcodeV9\CAL\/PIC16BIT\PIC16BIT_CAL_SPI.c: In function 'FC_CAL_SPI_Master_Init_1':
C:\ProgramData\MatrixTSL\FlowcodeV9\CAL\/PIC16BIT\PIC16BIT_CAL_SPI.c:232:2: error: 'tris' undeclared (first use in this function)
C:\ProgramData\MatrixTSL\FlowcodeV9\CAL\/PIC16BIT\PIC16BIT_CAL_SPI.c:232:2: note: each undeclared identifier is reported only once for each function it appears in
C:\ProgramData\MatrixTSL\FlowcodeV9\CAL\/PIC16BIT\PIC16BIT_CAL_SPI.c: In function 'FC_CAL_SPI_Master_Uninit_1':
C:\ProgramData\MatrixTSL\FlowcodeV9\CAL\/PIC16BIT\PIC16BIT_CAL_SPI.c:357:2: error: 'tris' undeclared (first use in this function)
PIC24EP128MC202_SSD1327_SPI.c: In function 'FCD_01531_cal_spi1__Prv_SimShowWaveform':
PIC24EP128MC202_SSD1327_SPI.c:495:31: error: macro "SET_PORT_MASK" requires 3 arguments, but only 2 given
PIC24EP128MC202_SSD1327_SPI.c:495:6: error: 'SET_PORT_MASK' undeclared (first use in this function)
PIC24EP128MC202_SSD1327_SPI.c:500:31: error: macro "SET_PORT_MASK" requires 3 arguments, but only 2 given

Have you any idea?

Regards
Jorg

BenR
Matrix Staff
Posts: 1706
Joined: Mon Dec 07, 2020 10:06 am
Has thanked: 435 times
Been thanked: 598 times

Re: GLCD SSD1327 SPI needed

Post by BenR »

Thanks Jorg, Investigating for you now.

Channel2 needs the remap pin properties to be entered which could be causing the compile errors if you've forgotten to do this step.

Odd that you're getting nothing out the SDO pin. I'll have a look into this one for you.

Jorg_Guldner
Posts: 31
Joined: Wed Dec 23, 2020 9:55 am
Been thanked: 4 times

Re: GLCD SSD1327 SPI needed

Post by Jorg_Guldner »

Hello!
Here are now some more hints while RB8 is not working:
a.) changing the cpu --> same error
b.) switch off all other moduls --> same error
c.) writing in a while loop 1 and 0 with delay shows, that on RB8-RB11 is no signal coming out. Other RB-Pins are working.
Is here a bug in the cpu-component?

Regards

Jorg

Jorg_Guldner
Posts: 31
Joined: Wed Dec 23, 2020 9:55 am
Been thanked: 4 times

Re: GLCD SSD1327 SPI needed

Post by Jorg_Guldner »

Hello Ben,
I downloaded the component files and tries again. B8 is no signal coming out? B5 is working!
The other pins described a post before are not working, too.
Please have a look to the attached picture. It`s only a simple program.
Any ideas?

Regards
RB5_RB8_toggle.jpg
RB5_RB8_toggle.jpg (98.54 KiB) Viewed 3840 times

BenR
Matrix Staff
Posts: 1706
Joined: Mon Dec 07, 2020 10:06 am
Has thanked: 435 times
Been thanked: 598 times

Re: GLCD SSD1327 SPI needed

Post by BenR »

Hello,

I've been looking into this one for you and I can't seem to replicate the issue on 16-bit EP hardware. I've also looked through the datasheet and there shouldn't be anything specific on the upper PortB pins that is causing a problem.

To rule out some form of CAL issue can you try this with a C icon and see what happens, all the PortB pins should toggle on and off together.

Code: Select all

TRISB = 0x0000;
while(1)
{
  PORTB = 0xFFFF;
  delay_ms(100);
  PORTB = 0x0000;
  delay_ms(100);
}
If that works ok then please can you also try this.

Code: Select all

TRISB = 0x0000;
while(1)
{
  LATB = 0xFFFF;
  delay_ms(100);
  LATB = 0x0000;
  delay_ms(100);
}

Post Reply