Embedded Systems and Power Electronics

Total Pageviews

About Me

My photo
I am currently a PhD student at UC Berkeley, following a 6-year journey working at Apple after my undergrad years at Cornell University. I grew up in Dhaka, Bangladesh where my interest in electronics was cultivated, resulting in the creation of this blog.

BTemplates.com

Powered by Blogger.

Oct 30, 2014

Interfacing a color TFT display with the PIC32MX250F128B


I have been working on interfacing the PIC32MX250F128B with a small 2.2" TFT display from Adafruit. It's a nice little display that is fairly easy to communicate with, using SPI communication. The display I'm using is: http://www.adafruit.com/product/1480

Adafruit provides nice open-source libraries for their products. However, they are for Arduino and thus cannot be directly reused for the PIC32. I went through the library and ported it over for the PIC32, in C. I have attached my project file as a .zip file and you can download it to go through the library header and source files, as well as the demo code. I've tried heavily commenting the code so that it is self-explanatory.

As far as hardware goes, with the demo code, the pin connections for the display are:

BL (backlight): I left it unconnected, but you can connect it to 3.3V for backlight.
SCK: connected to RB14 on the PIC
MISO: left unconnected, since I'm not reading anything from the screen
MOSI: connected to RB11 on the PIC
CS: connected to RB1 on the PIC
SDCS: left unconnected as I'm not using the microSD card for this
RST: connected to RB2 on the PIC
D/C: connected to RB0 on the PIC
VIN: connected to 3.3V supply
GND: connected to gnd

The pins I used are defined in the code and you can easily change them as required.

I used my custom proto-board for testing on a breadboard. You can find details here: http://tahmidmc.blogspot.com/2014/02/pic32-proto-board-details-schematic-pcb.html


Here's a video showing the PIC32 running the demo code and doing some simple graphics on the screen. You can see that it runs fairly quickly and quite smoothly.


Project files with all source and header files:
https://drive.google.com/file/d/0B4SoPFPRNziHdksweU1vUkZ4SHM/view?usp=sharing
http://www.4shared.com/zip/O-LcEU0Ace/Adafruit_TFTX.html

If you have any comments, questions or suggestions, do let me know!

9 comments:

  1. Hi, please can you help me to realize project which is : solid state Marx-Bank generator : http://www.researchgate.net/publication/224642785_High-voltage_high-frequency_Marx-bank_type_pulse_generator_using_integrated_power_semiconductor_half-bridges/links/00b495255142c69eeb000000
    I have the program of PIC but i found difficulties in linking command circuit with power circuit , you do a great favor please,

    ReplyDelete
  2. I went to buy the 2.2" TFT you used but it was sold out, so I got their 320x480 3.5" display instead. I further modified your code to build a pic32mx250 driver for the bigger display. This blog was super helpful in figuring out how to use the TFT, so thanks!

    TFT purchase link: http://www.adafruit.com/product/2050
    3.5" TFT driver code: https://github.com/seanogden/HX8357_PIC32

    ReplyDelete
  3. in the video i noticed you have capacitors and such that you don't say about, are they necessary because i what to use this in my project but i what to know what you say in the description is what you did in the video (is it for a 3.3V power supply).

    ReplyDelete
    Replies
    1. The only required circuitry for the interface are the point-to-point connections from the PIC32 to the LCD. The capacitors are there as bypass/filter caps for the 3.3V supply.

      Delete
  4. sir, tahmid, can u please guide me to design true r.m.s voltmeter? please send me helping material @ majid_55777@yahoo.com

    ReplyDelete
  5. Very nicely done.

    One question though. How did you decide on the SPI frequency of 20MHz? Was it by experimentation?

    The datasheet for the Adafruit display shows an SCL (serial clock cycle write twc) minimum of 100ns which corresponds to a frequency of 10MHz. Did you find by experiment that it works even at 20MHz?


    ReplyDelete
  6. Thank you for the code port to the PIC32 - I reported the code to a PIC32MZ running at 252 MHz - With the help of your code as a base I had the LCD running in about 3 hours. I appreciate your sharing. :-) Good day..... Signed, LostInSpace

    ReplyDelete
  7. Hey Tahmid,

    I was windering if you could include the Plib.h file in the zip so it could more easily be ported over to another PIC32 device. Or perhaps paste it?

    thanks,

    -Tom

    ReplyDelete
  8. Hi,

    The link is broken now.

    Can you post your code again.

    Thank's.

    ReplyDelete