Need help choosing the display for an AVR DA-series based project

Go To Last Post
15 posts / 0 new
Author
Message
#1
  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

Hi,

 

I am currently planning to make a project involving an AVR128DA48 MCU and a graphical display (preferably OLED), but I can't decide on which one of the latter to use. The contents of the screen need change at a higher rate (20+ frames per second).

The display must meet the following requirements:

- 128x64 px resolution (or other res. very close to that if it's not possible)

- ability to display a framebuffer on the MCU storing 4 bits/pixel (either as grayscale index or color, preferably grayscale)

- 8080/6080 interface (or any other parallel interface compatible with the MCU)

- connect to the PCB containing the MCU via a ribbon cable

- 1.3 - 2.7 inch diagonal size

- If the display supports grayscale values, I need it to display ONLY white levels.

- reasonable price

 

Up until now, I have found that OLED displays driven by the SSD1325 chipset would do the job, but they seem to be pretty "rare" compared to the SSD1306 displays.

Being stuck in this problem, I'd like to ask you some questions which would hopefully point me to the right way:

- Can all SSD1325 based displays display different light levels/pixel? (Seeing some displays using that chipset on Aliexpress being cheaper than others on the same site made me have this question)

- What other display(s) meeting the requirements above would you recommend?

 

I have previously used two displays based on the SH1106 and SSD1306 chipsets respectively with a DA-series MCU, and I felt like these cool AVRs could handle more than that :)

As a side note, I would really like the framebuffer to not use more than 25% of the SRAM.

 

EDIT: It is required to use double-buffering on the display, so excluding the framebuffer is not an option.

 

Thanks in advance.

Last Edited: Sat. Oct 3, 2020 - 08:52 PM
  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

Kozma wrote:
reasonable price

That's very subjective - what do you consider "reasonable" ?

 

And what volumes are we talking about ?

Top Tips:

  1. How to properly post source code - see: https://www.avrfreaks.net/comment... - also how to properly include images/pictures
  2. "Garbage" characters on a serial terminal are (almost?) invariably due to wrong baud rate - see: https://learn.sparkfun.com/tutorials/serial-communication
  3. Wrong baud rate is usually due to not running at the speed you thought; check by blinking a LED to see if you get the speed you expected
  4. Difference between a crystal, and a crystal oscillatorhttps://www.avrfreaks.net/comment...
  5. When your question is resolved, mark the solution: https://www.avrfreaks.net/comment...
  6. Beginner's "Getting Started" tips: https://www.avrfreaks.net/comment...
  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

awneil wrote:

And what volumes are we talking about ?

For now, I am just going to buy a very small amount for evaluation (around 2-3 units).

Also, by reasonable price I mean for example something which is not too overpriced like components from Adafruit or Sparkfun.

Last Edited: Sun. Oct 4, 2020 - 05:10 AM
  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

Adafruit and Sparkfun are designed to sell in small quantities to "makers". You need to look at professional sources like Newhaven Display. This is not necessarily a recommendation for them, but they ARE designed to sell in quantity while still providing for prototypes. Also, for a professional product I would avoid ebay and its brethren because you have no assurance that you can get the same thing tomorrow, let alone 6 months from now.

 

If you can make contact with manufacturers or distributors in Asia, that is fine and the prices tend to be lower. On the flip side, though, YOU Have to deal with import duties and the vagaries of trade restrictions.

 

Jim

 

James Wagner

Oregon Research Electronics

 

Until Black Lives Matter, we do not have "All Lives Matter"!

 

 

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

Okay, thanks.
Now, I have this last question:

Quote:
- Can all SSD1325 based displays display different light levels/pixel?

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

Yes, the SSD1325 hardware can display 16 gray levels.
Many Arduino libraries will just treat as monochrome.
.
To create pixel addressible graphics with gray levels is painful on SSD1325/1327.
You either manipulate a buffer in SRAM or have to read back from the SSD1325 graphics memory.
This is 4kB for 128x64 (or 8kB for 128X128 SSD1327)
.
I2C and SPI interfaces are write-only. Parallel is read-write but uses a LOT of pins.
.
It is much easier to use a full color OLED like SSD1331 or SSD1351 if you have limited SRAM.
.
Obviously many apps can just draw text and graphics in a blind overwrite fashion e.g. even pixel alignment. Then you don't need any SRAM buffer..
.
David.

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

Kozma wrote:
not too overpriced

is equally subjective!

 

frown

 

Kozma wrote:
like components from Adafruit or Sparkfun

As Jim said, they are not intended as components for manufacture. And what you get is not just the display, but it will be mounted on a board and may include other bits & pieces to make it "maker firendly".

Top Tips:

  1. How to properly post source code - see: https://www.avrfreaks.net/comment... - also how to properly include images/pictures
  2. "Garbage" characters on a serial terminal are (almost?) invariably due to wrong baud rate - see: https://learn.sparkfun.com/tutorials/serial-communication
  3. Wrong baud rate is usually due to not running at the speed you thought; check by blinking a LED to see if you get the speed you expected
  4. Difference between a crystal, and a crystal oscillatorhttps://www.avrfreaks.net/comment...
  5. When your question is resolved, mark the solution: https://www.avrfreaks.net/comment...
  6. Beginner's "Getting Started" tips: https://www.avrfreaks.net/comment...
  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

I always buy ready made modules.   They are excellent for prototyping.   And however much SparkFun, Adafruit, ... charge for them it is cheaper than your time to make something with a bare panel.

 

Once you have your project debugged and start designing a custom board you will be buying bare panels in bulk.

 

I suspect that SparkFun and Adafruit will be happy to quote for you.    And might be more helpful than you going straight to Chinese Brokers.

 

Regarding OLED panels.   They will be available for as many years as it is economic.

I suspect that you can still buy 1MB Floppy Disk Drives.   But the Drive itself will be more expensive than a microSD card holder.   And 64000 Floppy Disks will be more expensive than a single 64GB microSD.

 

David.

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

The requirements list deletes a lot of the popular options. 

  - Having to do full-frame animation at 20 frames/second rules out e-paper.  E-paper has the best white-background contrast ratio, but it is too slow to update.

  - Requiring a parallel bus rules out the best/cheapest option, which is a TFT 160x128 64K-color display based on the ST7735R controller.  This option uses an SPI interface.

 - The best option may be to use a ILI9341-based TFT with 2.4" 320x240 pixel display and parallel interface.  These units usually come on an Arduino Shield-based pinout arrangement and usually include a resistive touch screen.  They sell in the $6 to $10 each range.  You would need to find a reliable supplier because the eBay sources always play fast-and-loose with the exact controller found in each "standardized" unit.  Each of the dozen or so TFT controllers in general use has a different initialization and operation command set.  And it can be impossible to determine which controller is in the received TFT unit without destroying the unit.  The eBay suppliers rarely know or care about technical details on this basic level.

  -  I would not use the old Nokia 5110 display at all.  Its inherent design gives it wide variation in display contrast values according to the calibration of the equipment that it was manufactured with

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

If you like eBay/Aliexpress pricing but not the associated supply chain risks, just buy 10/20/50/100 for stock and spares. You can probably negotiate a lower unit price too.

 

Of course, this requires some certainty around demand for the product. Kickstarter, etc is helpful here as you can define a min/max production run.

 

But it also means your package from China is unlikely to slip in under the radar and you'll be on the hook for import duties, etc.

 

 

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

Simonetta wrote:
They sell in the $6 to $10 each range.
An order of magnitude more for capacitive touch (MaXTouch maXTouch), glass, and a bezel.

TM2800 |  Precision Design Associates - 28xx Series

ILI9341 Display Controller Component Driver | ASF Source Code Documentation via ASF-GFX | ASF Source Code Documentation

 

"Dare to be naïve." - Buckminster Fuller

Last Edited: Mon. Oct 5, 2020 - 02:01 PM
  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

If you don't need grayscale, check out displays using the SSD1309 controller. With 8 pixels per byte your framebuffer is 1kB.

 

Why have you chosen a parallel interface? Without a supporting peripheral in the 128DA you'll be bit-banging the clock and stuffing NOPs to handle setup and hold timings.

 

A serial bus @ 400kHz will easily handle 30+fps. The 128DA has multiple serial peripherals that handle that speed. @24MHz the ISR to feed the peripheral should be 3% CPU max.

 

 

 

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

balisong42 wrote:

If you don't need grayscale, check out displays using the SSD1309 controller. With 8 pixels per byte your framebuffer is 1kB.

 

Why have you chosen a parallel interface? Without a supporting peripheral in the 128DA you'll be bit-banging the clock and stuffing NOPs to handle setup and hold timings.

 

A serial bus @ 400kHz will easily handle 30+fps. The 128DA has multiple serial peripherals that handle that speed. @24MHz the ISR to feed the peripheral should be 3% CPU max.

 

 

 

I was thinking that occupying a port with the data pins of the OLED would speed things up, because sending a byte would be very easy.
For example, can I do something like PORTA=value; PORTB |= 1 << ENABLE; ?
In my application I only need to send the framebuffer after the frame is rendered.
I used an SH1106 on I2C/Fast Mode+(1Mhz) with an AtTiny1614 and I only managed to get about 73fps by just clearing the screen.

Last Edited: Tue. Oct 6, 2020 - 06:57 PM
  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

Are you aware of "persistence of vision"? In other words, frame rates above 20fps or so do VERY LITTLE for an observer.

 

Jim

 

Until Black Lives Matter, we do not have "All Lives Matter"!

 

 

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

But they do wonders for the graphics card industry!

 

Neil