![]() |
Forum Index : Microcontroller and PC projects : uM2: PCB for 44-pin,40-pin TFT and USB
Page 1 of 2 ![]() ![]() |
|||||
Author | Message | ||||
matherp Guru ![]() Joined: 11/12/2012 Location: United KingdomPosts: 10406 |
I've now got loadable drivers for the SSD1963, SSD1289, and S6D0164 TFT displays running very quickly using the 44-pin uM2. Peter Carnegie has created SD card routines for the uM2, and I have demonstrated that these can co-exist happily. We have also seen that the PIC16F1455 provides an ideal USB interface for minimal cost. Given all this, I have designed a simple board that integrates all these components and brings out pins in an Arduino compatible format to allow easy expansion. I think this should be possible to fit into a PCB about 100 x 60mm The board is designed to be powered either by the USB cable or a DC input. This is link selectable for simplicity. The PIC16F1455 is always powered from the USB cable so will not reset with the uM2 or when the DC input is disconnected. This should make the USB connection much easier to manage. I'd appreciate any feedback on the concept and circuit design. 2015-08-20_121838_MM44.pdf |
||||
Frank N. Furter Guru ![]() Joined: 28/05/2012 Location: GermanyPosts: 950 |
Hi Peter, your concept is very interesting! Isn't it a problem for the Micromite with your level-shifter with no power on the Micromite and 5V VBUS on the 16F1455??? - I think it would be better to use a second 3.3V regulator for the 16F1455 (powered by VBUS) without any level-shifters for TX and RX... ...see the attached picture by Chris Roper: ![]() Frank |
||||
Chris Roper Senior Member ![]() Joined: 19/05/2015 Location: South AfricaPosts: 280 |
On my own board I have taken it one step further from the drawing I posted by including a Jumper to switch between 5V and 3V3 operation. 3V3 is best when it is dedicated to the MicroMite but in my case it is part of a more generic board that can accept any DIP Packaged device and I wanted the ability to have it all USB powered. But I would definitely recommend the regulator with the Micromite and in that configuration you can use the PIC16LF1455 as well. Cheers Chris http://caroper.blogspot.com/ |
||||
matherp Guru ![]() Joined: 11/12/2012 Location: United KingdomPosts: 10406 |
Chris and Frank Thanks for the great input - I've made the change as you suggest changed version with a couple of minor bug fixes attached 2015-08-21_075154_MM44.pdf I'll start on the layout later today |
||||
Frank N. Furter Guru ![]() Joined: 28/05/2012 Location: GermanyPosts: 950 |
Hi Peter, I think it is much better so. Frank |
||||
JTR0701 Regular Member ![]() Joined: 10/07/2013 Location: AustraliaPosts: 71 |
Might I very strongly suggest that you connect the unused pins of the 16F1455 to MCLR and the two ICSP of the PIC32MX. You never know where the possibilities might lead down the track. Remember, both devices are fully programmable and the connections can serve many purposes. For example, the DTR signal could be used as a device RESET and new firmware in the 1455 could provide a USB keyboard interface or a PIC32 programmer. I still have a 16F1455 in front of me that is both a USB-232 bridge and a programmer and I may (or may not) get around to finalizing something or someone else may step in. It seems a shame to be to not keep open the possibilities as to how functional this board may prove to be. |
||||
JohnS Guru ![]() Joined: 18/11/2011 Location: United KingdomPosts: 4071 |
What excellent ideas! John |
||||
Chris Roper Senior Member ![]() Joined: 19/05/2015 Location: South AfricaPosts: 280 |
I would very much like to see that code and hex file if you are able to share. I was also thinking of extra things the 1455 could do but the Microchip USB code is so critical on timing that adding anything else tends to break it. In my case I was hoping to add a logic probe function and maybe other functions useful for a development board. Cheers Chris http://caroper.blogspot.com/ |
||||
matherp Guru ![]() Joined: 11/12/2012 Location: United KingdomPosts: 10406 |
Great ideas - thanks. I've wired up three 1455 pins to the ICSP port as suggested, I've also added a jumper to another port that can be read in software to allow the mode (programmer or VCP) to be set. Board size is 100mm x 62mm New schematic and first cut layout attached: 2015-08-22_082341_MM44.pdf 2015-08-22_082402_M44layout.pdf ![]() |
||||
MicroBlocks![]() Guru ![]() Joined: 12/05/2012 Location: ThailandPosts: 2209 |
Looks fine. Some feedback i can give is that some of the islands for the resistors and capacitors will make it a bit difficult to solder the components as the traces connected to those islands are thick and will conduct heat away. This only valid when hand soldering. The islands i mean are the ones for R3, R11, R18, C1, C5, C10, C15 and C18 (maybe i missed one). Best practice is to keep the thick traces for the power traces but branch of a thinner trace to the island. Any particular reason to use a DIP for the 1455. a ssop is cheaper and i guess it makes routing The blue side) a bit easier and will allow for a better ground copper fill. Microblocks. Build with logic. |
||||
matherp Guru ![]() Joined: 11/12/2012 Location: United KingdomPosts: 10406 |
I haven't included a ICSP port for the 1455 so it needs programming separately. The DIP format allows it to be socketed during development so it can be removed/replaced. I've never had an issue soldering with 1oz copper but your point certainly sounds like good practice. Thanks for the feedback |
||||
matherp Guru ![]() Joined: 11/12/2012 Location: United KingdomPosts: 10406 |
One final version before I go to copper. ![]() I did some testing and the SSD1963 controller doesn't like it when D8-D15 are connected even though it is set to 8-bit mode. To solve this I have had to add shorting links to only connect D8-D15 when required to use the S6D0164 display. This controller doesn't mind when D0-D7 are made if it is in 8-bit mode. In addition, I have added a header to allow the board to also be used as a backpack for the ILI9143 and ILI9163 SPI displays. This has only increased the board width very slightly (from 61 to 67mm). This left a small amount of unused beard real-estate so I have used the extra space to add two additional I2C headers. The board is just slightly bigger than a 4.3" SSD1963 display and hidden completely behind a 5" or 7" display. 2015-08-23_181125_MM44.pdf 2015-08-23_181144_M44layout.pdf |
||||
JTR0701 Regular Member ![]() Joined: 10/07/2013 Location: AustraliaPosts: 71 |
Hi Chris, At this time neither the code or I are ready for show time. Some things to be done and hard decisions that I cannot put off forever though I seem determined to try. I did mention the existence of this work here some time ago but the response was as such that I didn't feel I needed to give any priority to it... My code is written completely in assembler with my own stack and programmer design so I don't know anything about the timing issues with the microchip stack. A little surprised that you are finding it so finicky. Anyway I check in on this forum every few days so if there is any developments I can post and keep posted. Cheers for now. - Jim |
||||
JTR0701 Regular Member ![]() Joined: 10/07/2013 Location: AustraliaPosts: 71 |
Yeah, smart thinking about including the extra signal. Of course, I thought of it myself but I didn't want to sound to pushy when it is not me having to layout the board. ![]() All round there really have been a big step ups in the work going on here since I first stumbled on this little corner of the web. |
||||
centrex![]() Guru ![]() Joined: 13/11/2011 Location: AustraliaPosts: 320 |
Hi Matherp The PDF of the board layout a couple of posts ago does not appear to be the same as the picture you have shown. No extra I2C or 14pin header. Cliff Cliff |
||||
matherp Guru ![]() Joined: 11/12/2012 Location: United KingdomPosts: 10406 |
Ooops - latest version (checked this time ![]() 2015-08-30_102505_backpack44.pdf 2015-08-30_102527_backpack44layout.pdf |
||||
matherp Guru ![]() Joined: 11/12/2012 Location: United KingdomPosts: 10406 |
Just received the PCBs. The picture shows one on the back of a 4.3" SSD1963 display. Now to build it up and test it. ![]() |
||||
WhiteWizzard Guru ![]() Joined: 05/04/2013 Location: United KingdomPosts: 2948 |
Nice looking board there matherp ![]() |
||||
matherp Guru ![]() Joined: 11/12/2012 Location: United KingdomPosts: 10406 |
Here it is populated - all works perfectly ![]() Power is selectable between USB and external via the red link. There is separate regulation for the PIC16F1455 which provides the USB console interface (MCP1702-33) and the main 3.3V regulator (TC1264). The data pins and control pins to the display use the portC pins on the MX170 allowing very fast operation nearly equivalent to the MX470 (CLS takes 25msec on a 4.3" display) PWM control of the display backlight works perfectly using the onboard npn -transistor/Pchannel-mosfet combination. Changes for next version: Connect 5V pin on Arduino header when using USB power (currently only supplied when using external power Make holes for the heatsink leg bigger re-allocate pins on the PIC16F1455 to match TZ's default to allow the PIC32 to be programmed via the PIC16F1455 using pic32prog Latest compatible loadable driver for the SSD1963 is: sub mm.startup CPU 48 Display.Open(42,1,4.3) 'reset on pin 42, landscape, 4.3" display pwm 1,500,50 'set up the backlight end sub '**********Append this code and below onto the end of your MMBasic program*********** ' ' Author: Peter Mather 2015 ' ' Initialise the Display Driver for SSD1963 controlled TFT LCD Panel in 8-bit databus, 24-bit mode ' i.e. RGB888. This is optimised for the 44-pin uM2 and uses defined pinout except for the reset pin ' It achieves performance approaching that of the uM+ by heavily optimising bus I/O ' ' Display.Open initialises the loadable CFunction driver so that you can use all of the ' MMBasic graphic commands in your program. ' ' RST% is pin number of Reset signal ' Orient% PORTRAIT=0,RPORTRAIT=1,LANDSCAPE=2,RLANDSCAPE=3 ' Size% is display size in Inches eg 4 inch, 5 etc ' ' After Calling Display.Open, any of the usual MM Graphic commands may be used ' in your MMBasic program, eg BOX, TEXT, LINE, CIRCLE etc ' ' Note: you must use pins 25,26,27,36,37,38,2,3 for the data pins DB0-DB7 ' you must use pin 4 for RS and pin 5 for WR ' Tie CS Low and tie RD high ' ' Ver 1.02 2015-08-19 Initial Release ' '********************************************************************************** sub Display.Open(RST%,Orient%,Size!) as integer LOCAL DisplayMetrics%(2) LOCAL CFuncAddr% LOCAL Retrn% DisplayMetrics%(0)=Orient% DisplayMetrics%(1)=Size! DisplayMetrics%(2)=1 'sets the display type CFuncAddr%=PEEK(CFUNADDR SSD1963_V44) Retrn%=SSD1963_V44(CFuncAddr%,RST%,DisplayMetrics%()) END SUB ' File SSD1963_V44.bas written 15-Sep-2015 11:56:02 ' CFunction SSD1963_V44 0000001C 'write_command_data 27BDFFF8 AFA60010 AFA70014 27A20010 AFA20000 308400FF 34840200 3C02BF88 AC446230 24030200 AC436234 AC436238 18A0000D 8FA40000 00001821 24060200 24870004 AFA70000 80840000 34840300 AC446230 AC466234 AC466238 24630001 1465FFF7 8FA40000 03E00008 27BD0008 'main 27BDFF98 AFBF0064 AFB60060 AFB5005C AFB40058 AFB30054 AFB20050 AFB1004C AFB00048 0080A821 00A0B021 00C09821 24020019 AFA20028 2402001A AFA2002C 2402001B AFA20030 24020024 AFA20034 24020025 AFA20038 24020026 AFA2003C 24020002 AFA20040 24020003 AFA20044 27B20028 27B40048 3C109D00 8E510000 8E020010 02202021 24050008 0040F809 00003021 8E020010 02202021 24050065 0040F809 00003021 8E02001C 02202021 0040F809 24050005 26520004 5654FFF0 8E510000 3C109D00 8E020010 24040004 24050008 0040F809 00003021 8E020010 24040004 24050065 0040F809 00003021 3C11BF88 24020100 AE226238 8E020010 24040005 24050008 0040F809 00003021 8E020010 24040005 24050065 0040F809 00003021 24020200 AE226238 8E020090 8EC30000 A043002E 8E030090 8E020010 8064002E 24050008 0040F809 00003021 8E030090 8E020010 8064002E 24050065 0040F809 00003021 8E030090 8E02001C 8064002E 0040F809 24050006 3C029D00 24420070 3C169D00 26D60A84 02C2182B 10600004 02C2B023 8EA30000 10000003 02C3B021 8EA30000 02C3B021 3C039D00 24630C38 0062202B 10800004 00621023 8EA40000 10000003 0044A821 8EA40000 0044A821 26710008 8E220004 1C40000A 241201E0 14400006 24120110 8E620008 2C420005 50400004 241201E0 24120110 10000002 241401E0 24140320 3C109D00 8E020090 8E630000 A0430015 8E030090 8E02001C 8064002E 0040F809 24050006 8E020004 0040F809 24042710 8E030090 8E02001C 8064002E 0040F809 24050005 8E020004 0040F809 24042710 8E030090 8E02001C 8064002E 0040F809 24050006 8E020004 0040F809 24042710 8E220004 1C400010 8E630008 54400005 24020054 2C640005 1080000B 00000000 24020054 AFA20010 240400E2 24050003 24060023 24070002 0411FF36 00000000 1000001A 240400E0 5C400010 24020004 14400005 24020054 2C630006 1060000B 24020004 24020054 AFA20010 240400E2 24050003 2406001E 24070002 0411FF25 00000000 10000009 240400E0 AFA20010 240400E2 24050003 24060023 24070002 0411FF1C 00000000 240400E0 24050001 24060001 0411FF17 00000000 3C109D00 8E020004 0040F809 24042710 240400E0 24050001 24060003 0411FF0E 00000000 8E020004 0040F809 24042710 24040001 00002821 0411FF07 00000000 8E020004 3C040001 0040F809 348486A0 8E220004 1C40003A 8E630008 54400005 240200FF 2C640005 10800035 00000000 240200FF AFA20010 240400E6 24050003 24060001 2407001F 0411FEF3 00000000 24020001 AFA20010 240300DF AFA30014 AFA20018 2402000F AFA2001C AFA00020 240400B0 24050007 24060020 00003821 0411FEE5 00000000 AFA00010 24020008 AFA20014 2402002B AFA20018 AFA0001C 24100002 AFB00020 AFA00024 240400B4 24050008 24060002 24070013 0411FED6 00000000 AFA00010 24020004 AFA20014 2402000C AFA20018 AFA0001C AFB00020 240400B6 24050007 24060001 24070020 0411FEC9 00000000 10000054 240400BA 5C40001F 240200E0 14400005 240200FF 2C630006 1060001A 240200E0 240200FF AFA20010 240400E6 24050003 24060003 240700FF 0411FEB8 00000000 24020003 AFA20010 2402001F AFA20014 24020001 AFA20018 240200DF AFA2001C AFA00020 240400B0 24050007 24060024 00003821 0411FEA9 00000000 10000018 AFA00010 AFA20010 240400E6 24050003 24060004 24070093 0411FEA0 00000000 24020003 AFA20010 2402001F AFA20014 24020001 AFA20018 240200DF AFA2001C AFA00020 240400B0 24050007 00003021 00003821 0411FE91 00000000 AFA00010 2402002E AFA20014 24020030 AFA20018 AFA0001C 2402000F AFA20020 AFA00024 240400B4 24050008 24060003 240700A0 0411FE82 00000000 AFA00010 24020010 AFA20014 AFA20018 AFA0001C 24020008 AFA20020 240400B6 24050007 24060002 2407000D 0411FE75 00000000 240400BA 24050001 2406000F 0411FE70 00000000 240400B8 24050002 24060007 24070001 0411FE6A 00000000 24040036 24050001 00003021 0411FE65 00000000 240400F0 24050001 00003021 0411FE60 00000000 2404003A 24050001 24060070 0411FE5B 00000000 24040026 24050001 24060001 0411FE56 00000000 3C109D00 8E020004 0040F809 24042710 24040029 00002821 0411FE4E 00000000 24020001 AFA20010 240200F0 AFA20014 AFA00018 AFA0001C 240400BE 24050006 24060006 240700F0 0411FE42 00000000 240400D0 24050001 2406000D 0411FE3D 00000000 8E020090 80420015 24030002 1443000C 24030004 8E230004 1C600016 240600E0 14600014 240600A0 8E630008 2C630006 14600011 24030001 1000000F 240600E0 1443000C 240600A0 8E230004 5C600017 24060020 14600015 24060060 8E630008 2C630006 14600012 24030003 10000010 24060020 24030001 5443000D 24030003 8E220004 5C400015 24060040 14400013 00003021 8E620008 2C420006 14400010 24040036 1000000E 24060040 24030003 1443000B 24040036 8E220004 5C400008 24060080 14400006 240600C0 8E620008 2C420006 50400001 24060080 24040036 24050001 0411FE02 00000000 3C029D00 8C420090 90420015 30420001 10400006 3C029D00 8C430094 AC740000 8C420098 10000005 AC520000 8C430098 AC740000 8C420094 AC520000 3C109D00 8E020048 AC560000 8E020048 8E030094 8C660000 8E030098 8C670000 AFA00010 8C420000 00002021 00002821 24C6FFFF 0040F809 24E7FFFF 8E02004C AC550000 8E020090 8E630010 A0430014 8E020090 8E630008 A043002D 00001021 00001821 8FBF0064 8FB60060 8FB5005C 8FB40058 8FB30054 8FB20050 8FB1004C 8FB00048 03E00008 27BD0068 'defineregion 2482FFFF 00463021 24A2FFFF 00471021 3C089D00 8D090094 8D230000 8D080098 8D080000 0103482B 11200003 01006021 00606021 01001821 3C089D00 8D0D0090 81A80015 24090001 1509000C 24070002 00805021 00C04821 81A3002D 28630007 14600023 00A05821 00063027 00042027 008C4821 1000001E 00CC5021 15070008 24070003 00A05021 00404821 00063027 00C35821 00041027 10000015 00431021 1507000E 00021027 00C04821 00435821 00051027 00431021 81A3002D 28630007 1060000B 00805021 00063027 00042027 008C4821 10000006 00CC5021 004C5021 00052827 00AC4821 00805821 00C01021 3C03BF88 2404022A AC646230 24080200 AC686234 AC686238 000A2202 34840300 AC646230 AC686234 AC686238 354A0300 AC6A6230 AC686234 AC686238 00092202 34840300 AC646230 AC686234 AC686238 35290300 AC696230 AC686234 AC686238 2404022B AC646230 AC686234 AC686238 000B2202 34840300 AC646230 AC686234 AC686238 356B0300 AC6B6230 AC686234 AC686238 00022202 34840300 AC646230 AC686234 AC686238 34420300 AC626230 AC686234 AC686238 2402022C AC626230 AC686234 AC686238 03E00008 00000000 'DrawRectangle_SSD1963 27BDFFE0 AFBF001C AFB10018 AFB00014 0086102A 14400004 8FB00030 00801021 00C02021 00403021 00A7102A 14400005 28820000 00A01021 00E02821 00403821 28820000 0002200B 3C029D00 8C420094 8C430000 0083402B 2462FFFF 0048200A 28C20000 0002300B 00C3102B 2463FFFF 0062300A 28A20000 0002280B 3C029D00 8C420098 8C430000 00A3402B 2462FFFF 0048280A 28E20000 0002380B 00E01021 00E3382B 2463FFFF 0067100A 24070001 00E41823 00663021 00E53823 00E23821 70E68802 0411FF5E 00000000 7E053C00 34A50300 7E063A00 321000FF 36100300 10B00005 34C60300 1620001E 2624FFFF 1000002C 8FBF001C 14A6FFFB 3C02BF88 AC456230 24030200 AC436234 AC436238 AC436234 AC436238 AC436234 AC436238 2631FFFF 1220001E 2631FFFF 3C03BF88 24020200 2404FFFF AC626234 AC626238 AC626234 AC626238 AC626234 AC626238 2631FFFF 1624FFF8 8FBF001C 10000012 8FB10018 3C02BF88 24030200 2407FFFF AC456230 AC436234 AC436238 AC466230 AC436234 AC436238 AC506230 AC436234 AC436238 2484FFFF 1487FFF5 00000000 8FBF001C 8FB10018 8FB00014 03E00008 27BD0020 'DrawBitmap_SSD1963 27BDFFA8 AFBF0054 AFBE0050 AFB7004C AFB60048 AFB50044 AFB40040 AFB3003C AFB20038 AFB10034 AFB00030 AFA40058 AFA5005C 00C09021 AFA70064 8FB00068 8FB7006C 8FB40070 8FB30074 3C029D00 8C430094 8C710000 8C420098 8C420000 AFA20018 00171403 34420300 AFA20010 0017F203 37DE0300 36F70300 0014B403 36D60300 0014AA03 36B50300 72063002 72073802 0411FEFD 00000000 8FA20064 1840006A 36940300 02007821 8FA3005C AFA3001C 00121023 AFA20024 8FA30064 70721002 2442FFFF AFA20014 AFB20028 00007021 AFA00020 24180001 3C05BF88 24060200 10000055 8FB90010 0440001F 0051202B 5080001E 24630001 0522001C 24630001 5160001A 24630001 91A40000 008C2024 1080000C 00000000 ACB96230 ACA66234 ACA66238 ACBE6230 ACA66234 ACA66238 ACB76230 ACA66234 ACA66238 1000000B 24630001 ACB66230 ACA66234 ACA66238 ACB56230 ACA66234 ACA66238 ACB46230 ACA66234 ACA66238 24630001 1470FFDE 24420001 24E70001 2508FFFF 10F20010 014F5021 00EE1021 24430007 284D0000 006D100B 000268C3 026D6821 000817C3 00021742 01026021 318C0007 01826023 01986004 01401021 1000FFCB 00001821 8FA20010 24420001 AFA20010 14500004 25290001 10000009 8FA20020 AFA00010 1A40FFF7 8FAA0058 8FA80014 00003821 8FA30018 1000FFE3 0123582B 24420001 AFA20020 8FA3001C 006F1821 AFA3001C 8FA20014 8FA30024 00431021 AFA20014 8FA20028 01C27021 8FA30020 8FA20064 10620006 8FBF0054 1E00FFE8 8FA9001C 1000FFEE 8FA20020 8FBF0054 8FBE0050 8FB7004C 8FB60048 8FB50044 8FB40040 8FB3003C 8FB20038 8FB10034 8FB00030 03E00008 27BD0058 End CFunction |
||||
WhiteWizzard Guru ![]() Joined: 05/04/2013 Location: United KingdomPosts: 2948 |
Very neat ![]() |
||||
Page 1 of 2 ![]() ![]() |
![]() |
![]() |
The Back Shed's forum code is written, and hosted, in Australia. | © JAQ Software 2025 |