MPLAB® Harmony Graphics Suite > Examples and Demonstrations > Aria Applications > aria_flash > aria_fl_mzef_cu_tm4301b.X
MPLAB® Harmony Graphics Suite
aria_fl_mzef_cu_tm4301b.X
Defining the Architecture

 

 

The aria_flash application uses the USB file systems in MPLAB Harmony and the USB driver to scan the MSD for a .hex file with resources and reads them sector by sector and programs the external non-volatile SQI memory. The Graphics Library is used to render graphics to the display. Using the DMA, the Low-Cost Controllerless (LCC) Display Driver continuously transfers frame data from the frame buffer out to the LCD display. 

The application also features user touch input through the integrated touch screen on the display panel. Touch input from the touch controller goes through the I2C port, and the Input System Service acquires the touch input information from the Touch and I2C drivers. The Input System Service sends touch events to the Graphics Library, which processes these events and updates the frame data accordingly. 

 

This configuration runs on the PIC32MZ EF Curiosity 2.0 with RGB565 GFX Interface board and WQVGA display. Two frame buffers are stored in the internal SRAM in a double buffer configuration, and the Low-Cost Controllerless (LCC) display driver is used to manage the DMA that transfers the frame buffer contents to the display via the EBI peripheral. 

 

Since two 16-bit RGB565 frame buffers cannot fit into the internal device SRAM, this configuration uses two 8-bit buffers to support double-buffering. The 8-bit buffers contain the indices of 16-bit colors in a palette lookup table (CLUT). The graphics library renders the widgets by writing the index of a pixel color into the buffer. During a display line refresh, the LCC driver performs a palette lookup to convert the 8-bit indices to their 16-bit color equivalent for each line and then writes the line data to the display via DMA. Using 8-bit palettized buffers allows for double-buffering and eliminates tearing during rendering. On the other hand, the lookup table conversion requires extra processing time and reduces performance. 

 

User touch input on the display panel is received thru the PCAP capacitive touch controller, which sends a notification to the Touch Input Driver. The Touch Input Driver reads the touch information over I2C and sends the touch event to the Graphics Library thru the Input System Service. 

 

The USB peripheral is setup in MSD Host mode with the File System service support. It scans for a file named SQI.hex when a USB MSD device is connected. The application reads the hex data from the file and decodes it with a hex decoder into binary data. The binary is written to external non-volatile memory via the SQI peripheral configured with the SST26 driver. 

 

Demonstration Features

• Aria Graphics Library 

• Input system service and touch driver 

• Time system service, timer-counter peripheral library and driver 

• Low-Cost Controllerless driver with global palette support 

• 16-bit RGB565 color depth (8-bit palettized double buffering) 

• EBI peripheral library and driver 

• I2C peripheral library and driver 

• SST26 SQI driver 

• USB MSD driver (Host Mode) 

• Images and Fonts for user interface stored in internal flash 

 

Creating the Project Graph

 

The Project Graph diagram shows the Harmony components that are included in this application. Lines between components are drawn to satisfy components that depend on a capability that another component provides. 

 

Adding the “PIC32MZ EF Curiosity 2.0 BSP” and “Aria Graphics w/ PDA TM4301b Display” Graphics Template component into the project graph. 

This will automatically add the components needed for a graphics project and resolve their dependencies. It will also configure the pins needed to drive the external peripherals like the display and the touch controller. 

Enable the global 8-bit color palette by selecting the Aria Graphics Library component: 

 

 

 

 

The USB MSD driver in Host mode will require VBUS_AH detection. In the Pin Configuration window, make sure pin RJ13 is setup for VBUS_AH.

Building the Application

In MPLABX, open the project in gfx_apps\apps\aria_flash\firmware 

 

Project Configuration Name 
BSP Used 
GraAria Graphics w/ PDA TM4301b Displayphics Template Used 
Description 
aria_fl_mzef_cu_tm4301b.X 
PIC32MZ EF Curiosity 2.0 
Aria Graphics w/ PDA TM4301b Display 
PIC32MZ EF Curiosity 2.0 with 4.3” WQVGA PCAP Touch display 

 


Important! 
This application may contain custom code that is marked by the comments // CUSTOM CODE ... and // END OF CUSTOM CODE. When using the MPLAB Harmony Configurator to regenerate the application code, use the "Prompt Merge For All Differences" merging strategy and do not remove or replace the custom code. 

 

 

Configuring the Hardware

 

This section describes how to configure the supported hardware. 

 

Configure the hardware as follows: 

• Attach the RGB565 GFX Interface Card to the J601 connector on the PIC32MZ EF Curiosity 2.0 board. 

• Connect the ribbon cable from the WVGA display to the J2 connector on the RGB565 GFX Interface card. 

• Connect a USB cable from the host computer to the DEBUG USB port on the PIC32MZ EF Curiosity 2.0 board. This USB connection is used for code download and debugging. 

• Connect 5.5V power supply to the PIC32MZ EF Curiosity 2.0 board. This is needed for the USB VBUS detection. 

• Connect the USB MSD device to the ‘Target USB’ USB micro port. This can be connected before or at any point after the application is powered-on. 

The final hardware setup should be: 

 

 

 

Running the Demonstration

 

This section provides information on how to run and use the application. 

When power-on is successful, without a USB MSD device attached to the ‘Target USB’ posrt the demonstration will display a screen with the message “No valid storage mediums found. Please insert a USB device”:

 

 

 

If a valid USB MSD device is connected, the display will a USB button. LED1 (red) will light up also.

 

Make sure the USB MSD device has FAT32 file system format and a valid external resources file named precisely ‘SQI.hex’ is copied inside. 

 

Press and release the USB button on-screen. The application will initiate the data transfer on release of the button. Depending on the size of SQI.hex file (greater than 500 kilobytes), the application may freeze with no visual feedback, upwards of 30 seconds. It will then display a progress bar to indicate the transfer. The transfer completes when the progress bar is filled. The application will then display a button with ‘OK’. 

 

 

MPLAB® Harmony Graphics Suite