SSD1332 and SSD1331 fast drivers

Status
Not open for further replies.
I'm working on it, has to be completely rewrited to get rid of the useless Adafruit stuff, but in the meantime I'm fixing some other library as well.
I will add external font support as well (as the popular ILI9163C)

Hi Sumotoy,

Thanks for your work on this! I am working on trying to speed up an SSD1351 and I am looking at your use of DMA SPI. Do you think it would be possible to make something like this compatible with SPI transactions?

I assume not. My understanding of DMA is that it will continue to transfer over the SPI line after the CPU goes on to do other tasks. What do you think?

Thanks!
Tk
 
It's not DMA, just fast native Teensy SPI calls (thanks to the outstanding work of Paul). It should be easy to adapt but maybe wait the new version that is fully SPI Transaction compatible and will play safe with other SPI as well...
 
Yes, it's coming. I'm currently fixing ILI9163C to include 2 more display then apply the whole scheleton to all the OLED, TFT libs I have on github (TFT_ST7735 it's ready).
I'm dropping Adafruit_GFX since it's almost useless, most controller have it's own way so many commands are replaced in the library.
New version will have the same commands of ILI_9163C, that it's pretty featured and includes all functionalities of Adafruit_GFX.
Sorry for delay but have to work a lot outside my country for a while, my spare time was ridicolous low.
 
Last edited:
Thanks, that sounds great! Do you think it was the old ssd1331 library that was causing problems sharing an spi bus using the new spi library?
 
Can be, this library it's quite old and developed before SPI transactions, it also uses an old approach to SPI, fast but now there's much better options.
 
Have finished TFT_ILI9163C, I will use this as core for my ST7735 and all OLED in my github, included this one this week
 
I know, I'm terrible late on this but had to get more of these display's because I'm ran out.
I have started a new library for this display series, I'm still a little busy on K66 changes but at list library started and will published soon.
It has the same features of TFT_9163C and it's really fast, SPI transaction compatible, etc, etc.
 
Thank you! I'll have a projet with many 1331 driven from a single microprocessor soon, will try this out
Many? did you mean multiple instances on the same CPU? On Teensy it's possible (in theory) have many OLED 1331 by sharing MOSI,SCLK,DC, just CS should be separate for each display, but I need to do some extra work for multiple instances...
 
Last edited:
Only with Teensy is possible sharing (always in theory) DC, this is a feature of SPI FIFO that is not possible with other CPU's.
Also, Zero is NOT supported (now and in the near future).
 
Last edited:
The SSD1331 it's hard, it has lot of hardware issues and again the datasheet is almost useless so it's a slow process but at the end I'm getting slowly out of this.
Currently library is not public, have to fix a lot of issues and I'm currently busy with K64/66 stuff, but here's the bechmarks results on a Teensy 3.2 / 96Mhz

Screen fill 409
Text 3983
Text2 9564
Lines 5576
Horiz/Vert Lines 6827
Rectangles (outline) 4508
Rectangles (filled) 4509
Circles (filled) 3635
Circles (outline) 4697
Triangles (outline) 517
Triangles (filled) 1916
Rounded rects (outline) 1206
Rounded rects (filled) 10271

Currently it's the Speedy Gonzales of all display I've tested so far (thanks to his tiny display, of course) but also thanks hardware accellerated primitives, it will be nice at the end!
 
A preview is Online, tested only with SSD1331 and all Teensy's (should be compatible with K's as well) It's really fast (much more than benchmarks above).

UPDATE:
I'm currently adding SSD1332, not easy since it's similar to SSD1331 but the rotation stuff not and several command missed, generally the SSD1331 is far better than 1332 (this one looks like a cheaper solution), I will add this for sure but takes some time so be patienced.
 
Last edited:
Support for SSD1332 done, and works in any rotation, it's a bit slower than SSD1331 but much faster than before. Please report in github any problem!
 
Added SSD1351 and started beta stage. Modified the first post.
Officially those libraries are now part of SSD_13XX.
 
Hi sumotoy,

I'm trying out your SSD_13XX library with an adafruit 1.44" SSD1351 128x128 display and teensy 3.1 but I cannot get it to work.
I uncommented the SSD1351 in the settings file and I believe I follow the right pin connections (also in code).

The teensy is also connected to an audioshield but I'm not driving this atm. I don't believe it's an hardware issue because it does work with the adafruit library.

Perhaps I am missing something?

Display || Teensy
MOSI -> 11
MISO -> 12
SCK -> 13
CS -> 21
DC -> 2
RST -> 10k to 3.3v

+ -> 5v on Teensy
gnd -> gnd Teensy


Hardware setup:
Teensy 3.1
Adafruit 1.44" 128X128 w/SSD1351 controller

Software config:
Teensyduino 1.29 96MHz (optimized)
Arduino 1.6.9.
 
Pin 2 doesn't seem a legal pin for CS/DC! This library uses SPI/FIFO so you have to apply at DC pin the same limitations of the CS pin, this mean not all pins can be used (see the informative double sided printed doc you get when you buy Teensy and look at CS pins)
It works with Adafruit (slow) because it uses legacy SPI. Try a legal DC pin!
 
Last edited:
Alright, after following your pin advice it still didn't seem to work. I also grounded the other 'sd' ports on the adafruit display, also without luck.
Then, however, I changed the CPU speed in the Arduino IDE from 96 MHz (optimized) to a regular 72 MHz and the display worked!

Any thoughts on this?
 
I still haven't figured out why the library with SSD1351 doesn't work with 96mhz...
Could you perhaps assist me on this? The thing is, I'm bound to the 96mhz because I'm using the teensy Audio library, which otherwise doesn't run smooth enough.

On 72mhz your library is working like a charm though, thanks for all the good work!
 
did you try the display alone at 96Mhz? I have 2 different one here (not adafruit, all chinese) and works at all freq. What you mean for SDCS? The CS for the SD card?
Another question, did you using other SPI devices in the same time?
 
Hi Sumotoy,

I can help you test the SSD1351 doesn't work on 96Mhz.

I haven't been able to get it to work at 96Mhz with any libraries yet...

I will open a bug on github to track the issue.

T
 
Status
Not open for further replies.
Back
Top