Arduino GIGA Displa...
 
Notifications
Clear all

Arduino GIGA Display Shield

8 Posts
4 Users
4 Likes
594 Views
(@dronebot-workshop)
Workshop Guru Admin
Joined: 5 years ago
Posts: 1083
Topic starter  

The Arduino Giga Display Shield is a touchscreen display with an IMU, microphone, RGB LED, and camera connector.

We have already looked at the Arduino Giga; it’s an advanced microcontroller that brings the horsepower of the Portenta series to a board with an Arduino Mega format.

Today, we will look at an exciting accessory for the Giga, the Arduino Giga Display Shield. This is a full-featured 800x480 TFT display with a capacitive touch screen. It also has an onboard IMU so you can read the display orientation, a MEMS microphone, and an RGB LED. There is also an extension of the Giga’s existing camera connector on the front of the display.

This device is called a “shield,” but it actually mounts on the underside of the GIGA board, using the display and camera connectors. This arrangement makes for a very straightforward hardware setup, and you can still use conventional shields on the Arduino when the display is mounted.

In this video, I will walk you through all the features of the Arduino Giga Display Shield. Here is the Table of Contents for today's presentation:

00:00 - Introduction
01:25 - Arduino Giga Display Shield
05:08 - Getting Started
06:47 - RGB LED Coding
08:26 - IMU Coding
10:30 - Microphone Coding
14:54 - ArduinoGraphics Library
16:32 - ArduinoGraphics Library Demo
19:13 - Arduino Logo Demo
21:42 - Displaying Your Own Images
25:04 - GFX Library
26:20 - GFX Library Demo
29:33 - LVGL Library & Framework
32:10 - LVGL Demo Code
36:42 - LVGL with IMU and Image
39:49 - Touch Screen Intro
40:58 - Touch Screen Polling Demo
43:44 - Touch Screen Interrupt Demo
46:10 - Camera
48:22 - Camera Demo
53:02 - Conclusion

I think that this display would make an ideal “master control panel,” perhaps for an Arduino IoT Cloud project. You can expect to see it again in another video!

"Never trust a computer you can’t throw out a window." — Steve Wozniak


   
Quote
Droidwerx
(@droidwerx)
Member
Joined: 4 weeks ago
Posts: 5
 

Watched your video on the Giga several times, I was looking to find out which pins that can be used as a dedicated NMI interrupt. I have looked at documentation and google searches and I can't find a straight answer,  🙁 or is Arduino using any Digital pin and using software to make it look like an NMI interrupt ?


   
ReplyQuote
(@davee)
Member
Joined: 3 years ago
Posts: 1684
 

Hi @droidwerx,

Re NMI query

It is a long time since I saw NMI as a topic of conversation ...

 I am not familiar with the Arduino Giga, nor the processor at its heart, but a quick Google said it was based on the STM32H747XIH6, and the data sheet for the group of devices that that one is a member of, headlines with "Up to 168 I/O ports with interrupt capability".

Because modern processors usually have a large number of possible interrupt sources, they have to include some hardware to prioritise and mask multiple interrupts on a preconfigured control basis. This means you can effectively preset any one of a considerable number of pins to behave rather like a dedicated NMI pin, and hence there is no need to dedicate a specific pin to the role, when designing the chip.

Of course, it may also imply a fair bit of manual reading, etc. to figure out how to programme it to do a task that previously only requiring wiring to the pin labelled NMI 🙄 

So, whilst it is basically still a hardware function at 'run time', I expect it to require at least a little software in the 'boot' section to achieve the result.

As I say, I have only glanced at the datasheet, but I have described the general story I have seen in other processors in the more recent past. I hope it is at least 'roughly' correct.

Best wishes, Dave


   
ReplyQuote
Ron
 Ron
(@zander)
Father of a miniature Wookie
Joined: 3 years ago
Posts: 6972
 

@droidwerx @davee I was looking at the datasheet for that beast. It is an extremely sophisticated piece of hardware. It looks like al 168 interrupts are of the maskable type, no mention of NMI but there are 16 levels of priority. I wish I had a reason to buy one because they are pricey for just playing with. The combination with the display is a little enticing but I need a reason and so far no luck.

First computer 1959. Retired from my own computer company 2004.
Hardware - Expert in 1401, and 360, fairly knowledge in PC plus numerous MPU's and MCU's
Major Languages - Machine language, 360 Macro Assembler, Intel Assembler, PL/I and PL1, Pascal, Basic, C plus numerous job control and scripting languages.
Sure you can learn to be a programmer, it will take the same amount of time for me to learn to be a Doctor.


   
ReplyQuote
(@davee)
Member
Joined: 3 years ago
Posts: 1684
 

Hi Ron @zander,

  You are probably right in saying there is not an NMI option.

  But if an interrupt is set to 'top priority', and the programmer does not disable all interrupts, then I suggest it should approximate to the same thing, albeit I have never tried this scenario. The implication being that if a piece of code needs protecting from interrupts, excluding the 'top priority' one, then the interrupt priority system is invoked.

Of course, this requires the programmer to cooperate, whilst the original NMI pin was always active. The upside is that a pin is not 'wasted' for applications that did not have a use for the NMI capability.

Sorry, but I don't know how easy and convenient using the priority system is in practice. I suggest the total 'convenience' assessment may depend on the application's reason for needing an NMI capability, and the circuitry being used to drive the NMI input to the microcontroller.

I regard this as the type of question that needs some preliminary 'feasibility' R&D, when considering an application that appears to need an NMI style capability.

And sorry Ron, but I can't help you with suggestions for a good reason for buying a Giga board with a display ... but ponder on it for a day or three ... something may occur to you. 😎 

Best wishes, Dave


   
ReplyQuote
Ron
 Ron
(@zander)
Father of a miniature Wookie
Joined: 3 years ago
Posts: 6972
 

@davee @droidwerx Pretty much agree. I have done a couple of skims of the datasheet and there is quite a bit to the interrupt capabilities. My thought also was that a priority 1 MIGHT be the equivalent to an NMI.

If we remind ourselves what an NMI is and why we 'need' it, it's simply the highest (what if more than 1) priority interrupt and to answer the second part of the self question, it's needed in case an unknowing coder forgets or does not know about an interrupt that is of the highest priority. Since we are talking about MPU/MCU devices, there is almost always only a single programmer as opposed to a team of many so by definition we know about that highest priority as we are designing and implementing the application.

I suspect that what the OP was really asking is if there are pins on the Giga Display that can be used as an interrupt for some purpose like maybe vblank interval in order to update some critical portion of the screen. I am too lazy right bow to go refresh my memory, but my hunch is YES.

First computer 1959. Retired from my own computer company 2004.
Hardware - Expert in 1401, and 360, fairly knowledge in PC plus numerous MPU's and MCU's
Major Languages - Machine language, 360 Macro Assembler, Intel Assembler, PL/I and PL1, Pascal, Basic, C plus numerous job control and scripting languages.
Sure you can learn to be a programmer, it will take the same amount of time for me to learn to be a Doctor.


   
DaveE reacted
ReplyQuote
Droidwerx
(@droidwerx)
Member
Joined: 4 weeks ago
Posts: 5
 

Well it seems this topic is quite the rabbit hole 🙄. Sounds like a little bit hardware and software! Not just cut and dried like, I'm sure everyone would have preferred.  


   
ReplyQuote
Ron
 Ron
(@zander)
Father of a miniature Wookie
Joined: 3 years ago
Posts: 6972
 

@droidwerx I started messing with computers in `1959 and was fully hardware trained on IBM 1401 and 360 65. That goes back to the days of discrete components (transistors, resistors etc) and cycle times in the millisecs. With machines that slow the NMI was needed. For us using machines 1,000+ times faster, it is less critical. Also, since you are writing all and/or any ISR's, you can ake sure that the lower priority ISR routines are written in a way that allows that one top priority ISR to be able to respond in a time frame that will be extremely close to that of an NMI. If you care to read the documentation, I think you will be impressed as I was at the sophistication of the interrupt system available on modern day processors.

IIRC, ALL GPIO pins on the GIGA are available for interrupts BUT I have not seen enough documentation yet to determine if like other Arduino boards that there are x pins per PORT. If for instance there are 3 pins per port, then the number of independent interrupts is (76GPIO - 16special) / 3 equals 20 discrete interrupts.

Of course you have to decide between External interrupts and Pin Change interrupts (see below) but with at least 20 discrete interrupts to work with it is hard to see someone running out of them.

The major difference between INTx external interrupts & PCINT is that PCINT interrupts are grouped into 3 interrupt signals one for each port. If any pin in any port has changed state, the whole port is suspected to have changed.

I hope that helps to clarify interrupts a bit more.

I tried to find the documentation I saw a couple days ago with a lot of detailed info but couldn't. If I do find it I will post back here with the link.

First computer 1959. Retired from my own computer company 2004.
Hardware - Expert in 1401, and 360, fairly knowledge in PC plus numerous MPU's and MCU's
Major Languages - Machine language, 360 Macro Assembler, Intel Assembler, PL/I and PL1, Pascal, Basic, C plus numerous job control and scripting languages.
Sure you can learn to be a programmer, it will take the same amount of time for me to learn to be a Doctor.


   
DaveE reacted
ReplyQuote