Sunday, January 19, 2020

Open Source USB Display: SPI MIPI Bridge with FPGA Test: PIC32MZ USB HS SPI Bridge QT5

This post is going to be second part in the SPI MIPI Bridge. In this post i will be giving details about USB HS to SPI Bridge  To feed into FPGA for displaying on to MIPI LCD. Previous project SPI MIPI Bridge can be found here.

USB Hardware Stacked onto FPGA BOard


Hardware is based on the PIC32MZ2048EFM Board which i have published earlier Schematic and
Here is the The project Details 

SPI Limitation

Max SPI frequency PIC32MZ2048 can do is 50Mhz ,  and frequency of 50Mhz is achievable but because of limitations of the DMA  there is certain delay between spi bytes , which limit MAX spi transfer rate .


Firmware run USB HS, With Right now only one single Interrupt end points  USB data is  also some what limited. I had initially tried with USB bulk endpoint but because of surprising ~100ms time delay between usb bulk packets made me switch to interrupt endpoint which has low but guaranteed bandwidth. Low bandwidth with USB interrupt transfer cases limit on max frame rate.
With USB Bulk endpoint , USB Bandwidth was not limitation. I may try to improve bandwidth by moving to isochronous or fix issue with bulk endpoint. 

Source of firmware can be find the same repo with other MIPI DSI Bridge project files

QT5 Application

Image from a folder

Taking live screen shot 
Drawing is also supported with adjustable pen width color

Qt5 application uses libusb to communicate with the PIC32MZ. Application can take images from a folder and transmit them over USB with a timer or manually.
Application can also take screenshot of the scree to make it work as if like USB display. Max frame rate support is 60 FPS but right now limited to around 20 FPS by USB interrupt transfer. Improvement are possible once moved to bulk or isochronous endpoint. 

YouTube video 

Source of firmware can be find the same repo with other MIPI DSI Bridge project files

No comments:

Post a Comment