VGDD SSD1963 EVK R3B w/ PIC32 I/O Expansion w/ USB II and TY700TFT800480

As mentioned in my last post VGDD now supports a SSD1963 board.  Unfortunately I have the SSD1963 EVK R3B while VGDD was configured for using the Ultima R4.1 board both made by TechToys in Hong Kong.  I figured with enough time to work on it I’d figure it out.

Over the weekend I wired up the EVK board the same way that the Ultima is wired to the FX10A Hirose connector and use that to find the pins on the PIC32 I/O Expansion board.  The EVK board does not include any eeprom or flash chips on them to store touch screen calibrations so you need to supply your own.  As a result of not having that part programmed in yet I disabled the touch calibration until I can work out the correct adjustments to get it working with some form of memory.  My goal at this time was just to get the display working.

After a minor issue where the screen came up blue-tinted but otherwise generally working I kept playing around with the code in VGDD’s XML files and the resulting output trying to figure out what was going on.  A few times it got worse but for the most part it kept working with some type of issue.

Today after getting a few responses from VirtualFab on their brand new forum I started reading through the SSD1963 file to see what was different.  The owner of TechToys has also registered on the forum and he made a few comments about it as well. Armed with a little bit more information it turns out there is a different initialization command format when the Rev 02 TY700TFT800480 board is initialized vs the Rev 03 board that VirtualFab tested with the Ultima and built the XML files for.  After a minute or two I modified the USE_TY700TFT800480_R3 to not include the _R3 and confirmed that it still had the R2 (non _R3) code.  I then enabled an R2 XML file I created with the slightly different Horizontal and Vertical configurations and linked them to the graphics board, disabled the TouchInitialization, compiled, and my familiar roaster splash screen popped back up just fine.

The main difference between the R2 vs R3 LCD panel is that the R3 uses RGB signals while the R2 uses TTL and they are communicating at slightly different bit rates (at least that’s what I think is going on.)  So with that level of progress I decided it would be easier to order some SST25VF016 memory and wire it in to the project rather than to make it work with other memory since everyone seems to be using that same specific chip in their display boards.  It is possible to modify the files to support a Microchip 25LC256 (since I’ve done it in the past) but I figure it’s easier to just FLASH instead.

I’ve had a few conversations with John @ TechToys and he seemed receptive to some of my suggestions about adding some mounting holes to the EVK board so that it can be anchored more easily in a case if you wish to embed it rather than build your own. He also seemed to be considering at least providing a footprint to solder the flash memory to the board if you have it / need it. Since the board needs flash memory to store the touch screen calibration and it’s generally something you do once this will be helpful if it happens. No guarantees but at least it’ll probably be something he’ll think about with any future new board designs.

To wire up a SSD1963 EVK Rev3B to my PicTail Daughterboard I used the following configuration that mimics the Ultima wiring.

SSD PIC32 JP2 PIC32 SSD
TP_XR RB10 1 2
TP_YU RB13 3 4 GND VSS
TP_XL RB12 5 6 VDD VDD
TP_YD RB11 7 8 OE#
D17 9 10 RD4 WR#
D16 11 12 RD5 RD#
LE 13 14 RB15 CS#
D15 RD7 15 16 RD3 DC
D14 RD6 17 18 RD1 RESET#
 D13 RD13 19 20 RE0 D0
D12 RD12 21 22 RE1 D1
D11 RF0 23 24 RE2 D2
D10 RF1 25 26 RE3 D3
D9 RG1 27 28 RE4 D4
D8 RG0 29 30 RE5 D5
D20 31 32 RE6 D6
D21 33 34 RE7 D7
D22 35 36 RE9 TE
D23 37 38 5V 5V_EXT
D18 39 40 D19

The flash chips and a breakout should be arriving sometime in the next couple days.  The last tracking showed them being in San Francisco and should probably arrive tomorrow.

UPDATE – Flash arrived and I wired it to a generic eeprom/flash board I had made previously using a Radio Shack 276-159B and a SOIC-8 Breakout… wire as follows:

*Note* you may need to wire a 10k resistor to SST25VF016 pin 1/CE#.  Then wire 3.3v to the other side of it.  Mine worked without this done but it should probably be there.  Your mileage may vary.

SST PIC32 SST25VF016 PIC32 SST
CE# RD9 1 8 3.3V VDD .1uF Cap GND
SO RC4 2 7 3.3V HOLD#
WP# 3.3V 3 6 RD10 SCK
VSS GND 4 5 RD0 SI

 

SSD1963 now available in VGDD 5.1

I’ve had a few conversations by email with the author of VGDD. He has quite good English knowledge and we’ve come up with a few background similarities that has made it pretty interesting to discuss the product here and there. A few times I’ve mentioned something I’ve done by modifying some of the files that came with the program or discussed something I’d like to see and it turns out he just did it in the next version he’s releasing in a day or two or intended people to be able to do what I had done in a future version that could fully support it easily.

Most of the time we’ve talked it’s been because I’ve looked at the PIC32 sitting on the table and I keep thinking of how I really need to get that touch screen going. I then sit down and update the program and end up building a bunch of screens and compiling things and discover a bunch of weird little bugs and he quickly fixes them and releases a new version.

A couple nights ago I roasted 4 batches of an Ethiopian coffee and found a couple more glitches in my Arduino roast profile and the cooling cycle but it’s getting better. It got me thinking about VGDD again, which I had upgraded to 5.0 a few weeks back, and it turns out there was a 5.1 version now. This time he’s now included TechToys Ultima R4.1 board that includes an SSD1963 controller on it. If you haven’t looked at it before this board accepts a Microchip PIC32 Starter Kit board and has a variety of other things built on such as the SSD1963, an MP3 Decoder, a footprint for a wireless network card and a few other connections. Combined with a 7 inch touch panel it’s about $139 + tax right now.  It seems to be an excellent product but I just think that it was a move in the wrong direction to squish so much into one board. Instead I would have rather it been made to be modular to let you enable/disable sections of it to use those pins in your own ways. I’ve been using the SSD1963 EVK 3B board hooked to my PIC32 expansion IO board for the initial testing I’ve done.  It ends up around $99 w/ a 7 inch touch screen.

My early little touch screen using Microchip brand boards was a lot more money and to get a 7 inch screen today with the new Epson controller would be about twice what I spent for the SSD1963.  The original little screen was pretty good to see what the roast was doing when I first started trying to build a coffee roaster but it was just too small.  This is why I started trying to build a 7 inch touch version of my roast controller which allowed a whole lot more to be done on the screen.

While I had gotten the SSD1963 working in some of the older VGDD versions by hacking the XML files I was not having the same luck with 5.0.  With version 5.0 of VGDD I kept getting errors when I compiled and had issues with the screen not working as I expected when I finally got it to compile and I didn’t have a lot of time to work on it.  Seeing SSD1963 in the Ultima board being supported in 5.1 I figure I just need to ensure I configure the wiring from the EVK board I have to mimic that of the Ultima board I should be able to get it to compile.

Lately (on the Arduino side) due to some changes with the serial output of the project and my attempts at adding more functions to the processing GUI I’ve found that I’ve managed to break the PID/LOG communication to the processing GUI and forgot to commit a copy to my home code repository server and there’s too many changes to really figure out which area got messed up without a lot of work. As a result that lack of visualization is really starting to become an issue so I’m really going to start trying to develop the PIC32 side more to at least process the output of the Arduino and run the touch screen to display it all.

I’m oncall for work this weekend but I hope to be able to verify the wiring with the Ultima schematic and make sure I cable up the EVK board properly and get a screen or two going again using VGDD. I’ll post the wiring info once I get it going.

PIC32 w/ TechToys SSD1963 EVK R3B + 7 inch display and VirtualFab VGDD

First let me start off by saying…AAAAAIIIIGGGGGGHHHH!  Ok.  I never claimed to be an expert at what I was doing and I’ll have to say this one really made me fight for it.  I have been attempting to get my PIC32MX795F512L USB Starter Kit II attached to a IO Expansion board and then connect that to the TechToys SSD1963 EVK Rev3B board which then connects to the TY700TFT800480 7 inch touch screen.  Then to create my GUI I was using the VGDD software by VirtualFab.it.

I’ve had almost a week now of evenings and several days where I was uninterrupted and able to work on it.  It took a couple of evenings to make sure all the wiring was correct and get all the various parts assembled together for an EEprom to store calibration data to work.  Turns out I needed a bypass capacitor AND NOT to have a pull up resistor on the chip select pin even though it seemed to be used in most examples I found the opposite way.  Once I got past that issue I worked on getting the demo to work which required some tweaking since I was running the demo on a custom configuration that wasn’t a TechToys multimedia board with everything on it.

After finally getting the basic demo working ok I began trying to figure out VGDD’s XML files to add extra Display and Graphics Cards to the software.  I added an entry for each device and then started to customize the individual XML for each part.  After exporting the project and trying to compile it there was of course a LOT of errors.  In a few cases some of the lines got duplicated and in other cases I had to add additional lines or modify the driver slightly to work cleanly in VGDD’s wizard.

I still need to work on a problem where the exported VGDD project has something incorrectly set with the EEprom where the SPI isnt writing so it only shows a single screen and can’t navigate until the touch is calibrated.  Additionally since the SSD1963 is not part of the original MAL (Microchip Application Library) then I likely need to find an alternate place to put some of the files and explicitly map it that way in the VGDD templates.

Due to some previous problems with VGDD (I started using it very close to the beginning of its existence and it has had dozens of releases over several years now) where it seems my files got “scrambled” here and there I would get all sorts of weird issues while trying to compile them.  As a result I’ve started the screens over from printouts and need to figure out how to adjust a few buttons and text as well as add a whole lot more items to many of the menus.

Here’s the awful camera phone photos in a dimly lit room.  Once I get it working better and update the screens more I’ll dig out the better camera. I’m just happy that things are working right now.

PIC32 and SSD1963 board driving a 7 inch touch screen as programmed by VGDD

Test VGDD screen hacked to work on a SSD1963 board with minimal changes.

I’m pretty close to getting the XML worked out so that I don’t need to modify the VGDD code that gets generated but I suspect I’ll need to work on it for a few more evenings before I get it right.

Update 7/24/12 Afternoon – I’ve managed to get the EEprom code to read/write the calibration properly now from the beginning.  I’m seeing an off effect where the OutTextXY functions are not working while all of the static text displays fine and the functions that make it switch screens do not appear to function.  I have one section that defines the touch screen X/Y ADC pins that appears to be a duplicate with something in another section of code that I have to comment out and I have to force it to display a screen since it doesnt seem to happen automatically (may be part of the switching screen problem though).  I’m going to switch to a regular SSD1926 screen and generate code and start comparing because I must have disabled something making the screen objects invalid.  Outside of adding the display a screen command, and commenting out the other code section it does export without a bunch of errors so I am getting further along now.

Update 7/24/12 Evening- I’ve now managed to get straight through compiles to work without having to modify anything.  I had found an issue with the order of the screens where it tried to put one of the “master screens” as the first screen it loads.  For whatever reason this causes it to black out the screen and not show anything.  After switching it to a more appropriate screen it comes up ok.  It also now transitions from one screen to another when I press the buttons as well.  The only issue I’m having is when there is around 30 buttons on the screen it freaks out and stops displaying them.  I’ve been unable to find a notice about there being a 30 button limit but so far I’ve not found a way around it.  The code is all there for all of the buttons but they don’t show up.

PIC32MX795 on a IO Expansion Board connected to a SSD1963 EVK R3B and TY700TFT800480 7 inch touch screen from Tech Toys with GUI created by VirtualFab.it VGDD.

Preliminary PIC32 roaster GUI created in VGDD on a 7 inch touch screen using a SSD1963 controller.

Hey you…Yes you…This is what I’m building…

I’m focused on building a Roast Controller GUI to automate and track my coffee roaster.  I wanted to document my progress and share as much as possible.  For several months I seemed to spend a LOT of time trying to deal with blog spammers instead.  It’s sort of weird having all these bells and whistles for the blog software.  I’ve got all sorts of filtering tools installed to stop the blog spammers from even SEEING the blog.  Then for the ones that don’t get stopped looking at the blog there’s yet another array of tools to stop known spammers from registering accounts and commenting.  Pretty much on a DAILY BASIS the system automatically kills upwards of over 150 unique IPs trying to spam this thing.  This leaves the rest of you that stop by here and look things over.  I like you guys.  Every so often I get a comment or an email from one or two of you so I at least know some of you come back regularly and a few have even started following on Twitter.  I know some of you are curious what exactly I’m trying to do as my “target” roaster.

If you’ve been around enough to read the older blogs and/or looked in the forum you might have seen some of the parts lists that I’ve purchased on my path to automation.  I’ve mentioned a few tools I’ve used to develop various pieces and I figured I’d show you some of what I’ve been up to… First of all I need to build a “development board” for coffee roasting automation that will be migrated from Arduino to PIC32 eventually.  I’ve had some renderings made of portions of my current “board layout” I’ve been slowly cobbling together.

View showing dual TRIACs and Heat Sink w/ High Voltage Terminal connections.

Low Voltage pins, position for DB-25 interface to a micro controller wire harness and the control panel socket.

Finally is my favorite piece that I’m eager to get to.  When I can finally get my PIC32 project back up and running I have a GUI mostly built that I need to replace the smaller one with.  I used a tool called VGDD by a guy named Fabio.  His website was found here: http://virtualfab.it/mediawiki/index.php/VGDD:Visual_Graphics_Display_Designer

This product is used to design GUIs for Microchip brand processors.  These include (mostly) the PIC18, PIC24, and PIC32 that can use the Graphics Object Library (GOL).  The Microchip provided tool is pretty much a very crude tool that yields complicated junk that needs a LOT of effort to integrate.  Fabio’s product instead turns the entire process into something pretty simple, allows you to actually write code quicker to control the screen transitions by pressing the buttons and then simulate it (AND send it to other people to review) without ever having to compile it.  It makes the Microchip system quite attractive to create a GUI on.

The great part is with the new GOL 3.0 and some new graphics chips you can create higher resolution GUIs and this development tool doesn’t seem to mind one bit.  One of the screens I built for watching the roast will look like this on the 7″ touch screen.  I cropped a roast curve from one of the logged roasts I made a few weeks ago into the blank space for the graph.  At this time VGDD does not appear to have the chart/graph function included into it.  I’m thinking there’s a way to allocate the space for it in the system but I haven’t really concentrated on it.

Simulated Auto Roasting screen prototype from VGDD.

I figured I needed to clue more of you in as to what was going on and hopefully this helps explain it!

Some of the buttons/controls will change slightly as time goes on but I figured I needed to start allocating space for things as I came up with the ideas and see if it made sense.  As you can see from the date on the GUI mockup there’s been a long time since I started working on that screen.  With the recent Arduino progress I’m feeling like I’ll be getting back to the fancier GUI that will sit on top of the Arduino back end in the coming months.  Eventually I’ll convert some more functions BACK to the PIC32 system since it seems to run faster and can do more of the math faster.  Then I can free the Arduino up to just responding to commands.

TechToys SSD1963 eval kit on a PIC32 I/O Expansion Board

Now that I’ve gotten all the leaks taken care of on my new aquarium I decided I should at least figure out if the new SSD1963 eval kit with 7 inch 800×480 LCD that came from TechToys. com.hk works. Officially it is listed on the site as SSD1963EVK-R3B + 7″ WVGA color TFT with Touch Panel Part #: SSD1963EVK-R3B-TY700TFT and as of July 2011 was listed as a bundle price of $119 USD plus shipping. This includes the LCD, SSD1963 board with a cable between them, and 40 jumper cables.

This kit is intended for a development board created by TechToys that fits the connector perfectly. On that board you can then place a PIC32 starter kit. For my purposes this is not usable because I do not need the devices on that board such as the MP3 player. I also need to add a variety of I2C and SPI devices for sensing environmental conditions. For my project sticking with the PIC32 I/O expansion board is the best bet.

I decided I would leave the original breakout boards attached and wire the LCD and graphics chip on. I removed the Microchip Graphic boards from the side and popped out the riser card. To properly find the wiring you need to use you need to consult both the schematic for the Multimedia Evaluation Kit for Microchip PIC32 Starter Kit and the Evaluation Kit for SSD1963QL9. You are looking at the diagrams for MCU interface and SSD1963 EVK Interface. What you will find is that not all of the pins are diagrammed through to both sides. They need wired through though and the correct connections can be determined elsewhere on the schematic. Wire everything from the SSD1963 EVK Interface diagram and then add onto it the Reset, LE and other pins. Once you do this you end up… with a mess:

Then I began the process of trying to compile the modified MultiApp Demo. I selected one of the hardware profile includes for the 7 inch LCD and SSD1963 that involved a PIC32MX795 and tried to compile it. I’ve read about people potentially having to modify when using a Graphics Library higher than 2.0. Turns out this was not the reason I had errors. Instead I needed to fix the driver file because it mentioned parts I was not using and didnt match the name of the driver. I commented out a few lines and uncommented the lines that matched the actual names from the driver. It reports not having a compatible Controller prior to that and worked fine following that. However, the tech toys modifications stopped other graphic apps from compiling so you need to do a diff comparison to figure out changes necessary to newer libraries.

Once the lines were commented out I compiled, uploaded and launched the app. Success was short. Within a few moments I realized while pressing around on the touch screen calibrating the corners and pressing to save the calibration I noticed that the program didnt continue any further. Stepping through a debug I noticed it was at a point waiting for the EEPROM to respond. That’s when it hit me. TechToys sells a development board which happens to include an Atmel SPI EEProm. On the Microchip boards this is found on the graphics board because they expect you to change graphics boards potentially with your own and they supply it on their graphics board.  For TechToys it’s on their development board and not with the graphics boards.

Upon removing the microchip boards I thus no longer have an EEPROM. Upon playing around I found that pressing in the upper right corner instead of calibrating results in the board eventually skipped the write and reload of the calibration and jumped to the home page though I had issues reproducing this reliably. Ultimately just to test it working I ended up triggering buttons about 2/3 of the way from the bottom to trigger the lower buttons and then gradually moving up until it selected another item.  The various graphical items displayed and I managed to get some of the apps to launch though not be able to control them very well.  All that mattered to me is it technically worked as wired.

From what I can see there is an acceptable write speed to the LCD for setting up a coffee roaster control screen but I will need to test further once I can store the configuration data and switch to the original roaster program on the larger screen. I’m thinking I should actually be able to store this to a file on a SD memory stick instead of an EEPRom. Both are SPI but will require a different process to read/write but there’s been others who have done so without much issue into a config.ini file.