Notice. New forum software under development. It's going to miss a few functions and look a bit ugly for a while, but I'm working on it full time now as the old forum was too unstable. Couple days, all good. If you notice any issues, please contact me.
|
Forum Index : Microcontroller and PC projects : ILI9488 drivers: MM2 and MM+
Page 3 of 3 | |||||
Author | Message | ||||
Turbo46 Guru Joined: 24/12/2017 Location: AustraliaPosts: 1619 |
Thank you Peter. Two things good to know. Bill Keep safe. Live long and prosper. |
||||
Mixtel90 Guru Joined: 05/10/2019 Location: United KingdomPosts: 6847 |
That missing reg is something to keep an eye open for! Mick Zilog Inside! nascom.info for Nascom & Gemini Preliminary MMBasic docs & my PCB designs |
||||
lizby Guru Joined: 17/05/2016 Location: United StatesPosts: 3159 |
Nice! PicoMite, Armmite F4, SensorKits, MMBasic Hardware, Games, etc. on fruitoftheshed |
||||
phil99 Guru Joined: 11/02/2018 Location: AustraliaPosts: 2155 |
"Can confirm both touch and SDcard working with a 680ohm resistor in the MISO line from the LCD. LCD then also works with BLIT, PIXEL() and transparent text." On my ILI9488 / PicoMite SD access has been a bit hit and miss so I have replaced the 680R with this circuit - from earlier in this thread. The PNP transistor only switches LCD_SO on when LCD_CS is low, so there is no load on the SD card output. Now every SD card works all the time along with pixel(x,y), BLIT and SAVE IMAGE as well as touch. PS. It still works if you swap collector and emitter. The PN200 has enough gain in the reverse direction and 3.3V is way too low to cause B-E reverse breakdown. Measured a PN200 Forward current gain = 430 Reverse current gain = 29 With 3.3V and 33k base resistor the reverse current is up to 2.4 mA so fast push-pull drive of MISO is no problem. If using a different transistor a lower value base resistor may be needed. Perhaps also a pullup from MCU MISO to 3V3 with a value 5 to 10 times the base resistor. Mounted it on the back of the display, along with the rest of the SPI wiring for touch and SD card. Pico SPI wires now only go to the touch pins. Edit 3 To improve SD card reliability without adding a transistor it may be enough just to increase the 680R. This test will allow you to see how high it can be before reading back from your display fails. Adjust the pot while watching the Blit stripes for colour changes. If that still isn't enough you may be able to get it higher by putting a diode across the resistor as fast rising edges seem to be important. The chip fault holds SDO low so the anode goes to SDO, cathode to MISO. However the improvement still didn't allow all my SD cards to work all the time. ' RGB Graded colours + BLIT stripes test For an ILI9488 CLS For x=1 To MM.HRes Line x,1,x,MM.VRes/6,,RGB(x*255/MM.HRes,0,0) Line x,MM.VRes/3,x,MM.VRes/2,,RGB(0,x*255/MM.HRes,0) Line x,2*MM.VRes/3,x,MM.VRes*5/6,,RGB(0,0,x*255/MM.HRes) Next Text 55,15,"Tap any key to exit" Print "Tap any key to exit" Do For y=1 To MM.VRes Step MM.VRes/3 Blit 1, y, 1, y+MM.VRes/5, MM.HRes, MM.VRes/8 If Inkey$ <> "" Then Text 55,15," Done " End EndIf Text 55, y+15+MM.VRes/5," Blit " Next Loop Edit 4 Another way to get everything working properly is with a diode switch. This has been tested with resistor values from 1k8 to 10k. Had intended to add a pullup from MCU MISO to 3V3 with a value 5 to 10 times the CS resistor, but found it wasn't needed. Replacing the right hand diode such a resistor might also work. This was found when @DrifterNL tried a BC558 and it didn't work. He reduced the base resistor until it did at 2k2. With so much base current I figured the two junctions are simply acting as independent diodes. When reverse biased they are off, when forward biased the resistance is low enough to pass the SDO_MISO signal. Edited 2022-10-29 21:43 by phil99 |
||||
stanleyella Guru Joined: 25/06/2022 Location: United KingdomPosts: 2153 |
Is there resistor miso again please.I have an ili9488 that dislay works but touch calibrate tests 2 points then fails.Looks same wiring as ili9341 which works. |
||||
phil99 Guru Joined: 11/02/2018 Location: AustraliaPosts: 2155 |
If you look back through the various ILI9488 threads you will see that the ILI9488 chip has a fault in the silicon that prevents the SDO-(MISO) pin switching off when CS is high. Instead it stays active low, preventing touch and SD cards from using MISO. To get touch working just put a 680R from SDO-(MISO) to your MCU MISO. This may also allow SD cards to work, but not always. If you have SD issues try this:- I have found it passes all tests. Read this thread:- https://www.thebackshed.com/forum/ViewTopic.php?FID=16&TID=15214#192349 . Edited 2022-11-22 10:33 by phil99 |
||||
JohnS Guru Joined: 18/11/2011 Location: United KingdomPosts: 3820 |
I understand the ILI9488W is OK, so is there a (preferably simple) test for whether a board has the ILI9488 or ILI9488W? I have the Waveshare 3.5" LCD (this one) and it looks like the ILI chip is hidden between the LCD & the eval board. John |
||||
stanleyella Guru Joined: 25/06/2022 Location: United KingdomPosts: 2153 |
Thanks phil99 for reply. My ili9488 has one miso for display which goes to picomite gp16 and display works fine... have not tested read pixel colour though. so I have sd card miso, touch T_DO. Do I join these as ili9341 OR connect each through diode and 10rK to gp16/miso? There is a longer thread on this... much longer |
||||
stanleyella Guru Joined: 25/06/2022 Location: United KingdomPosts: 2153 |
I am using ili9488 setup not W. same gp pins and setup as ili9341. display works. Other problems mentioned I am checking. Lot of bother. Cheers |
||||
matherp Guru Joined: 11/12/2012 Location: United KingdomPosts: 9192 |
The ILI9488W is specifically the Waveshare product. It uses the same controller (ILI9488) but it is configured as 16-bit parallel and then uses external shift registers (74HC40940) to create a serial interface to the Pico. It does not have a MISO line from the display so has no issues with respect to SDcard or touch. However, as it has no MISO it is impossible to read the framebuffer so BLIT and transparent text don't and can't work. |
||||
JohnS Guru Joined: 18/11/2011 Location: United KingdomPosts: 3820 |
Oh! Thanks. That also explains why looking for a W datasheet was fruitless. John |
||||
phil99 Guru Joined: 11/02/2018 Location: AustraliaPosts: 2155 |
@stanleyella Just connect it as per the diagram above. T_DO AND SD_DO go directly to the PicoMite MISO. Only the LCD_SDO has a problem. You could first try a 680R between SDO and the PicoMite MISO, see if everything works properly (blit, touch & SD). If it does that is all you need to do. Touch should be ok but SD cards might not, in which case use the circuit above. |
||||
phil99 Guru Joined: 11/02/2018 Location: AustraliaPosts: 2155 |
' Screen Colours Counter Pixel Test Dim a$(2)=(" Blues"," Greens"," Reds") Dim integer b, c, n For b = 0 To 16 Step 8 n = 0 For c = 0 To 255 Pixel 9, 9, c << b If Pixel(9,9) = c << b Then Inc n Next Print n; a$(b/8); " ="; Log(n)/Log(2); " bits" Next Edited 2022-11-24 10:53 by phil99 |
||||
stanleyella Guru Joined: 25/06/2022 Location: United KingdomPosts: 2153 |
what was that for? |
||||
stanleyella Guru Joined: 25/06/2022 Location: United KingdomPosts: 2153 |
just lcd and touch connected but gui touch calibrates fails |
||||
stanleyella Guru Joined: 25/06/2022 Location: United KingdomPosts: 2153 |
@phil99 good day. The ili9488 does graphics ok. like ili9341. the rest is hassle, I'll put it away cos it is not as easy as ili9341 which just works. |
||||
phil99 Guru Joined: 11/02/2018 Location: AustraliaPosts: 2155 |
' LCD Panel Tester Print "Screen Colours Counter Pixel Test" Dim a$(2)=(" Blues"," Greens"," Reds") Dim integer b, c, n CLS 127<<8 Text 30, MM.VRes *.8, " Pixel Test ",,, 2, RGB(white), RGB(0,0,127) For b = 0 To 16 Step 8 n = 0 For c = 0 To 255 Pixel c+30, b+25, c << b If Pixel(c+30,b+25) = c << b Then Inc n Next Print n; a$(b/8); " ="; Log(n)/Log(2); " bits" Text MM.HRes/2,MM.VRes/2-b*4,Str$(n)+a$(b/8)+" = "+Str$(Log(n)/Log(2))+" bits",C,,2,255<<b Next Pause 3000 Print "Blit test" For v = 0.6 To 0.3 Step -.1 Pause 500 Blit 10, MM.VRes*.2, 10, MM.VRes*v, MM.HRes-20, MM.VRes*.3 Box 10, MM.VRes*v, MM.HRes-20, MM.VRes*.3 Next Text 30, MM.VRes *.8, " Blit Test ",,, 2, RGB(white), RGB(0,0,127) Pause 3000 Print "SD Card test" Text 30, MM.VRes *.8, " SD Card Test ",,, 2, RGB(white), RGB(0,0,127) Save Image "SD Card Test.BMP", MM.HRes*.2, MM.VRes*.2, MM.HRes*.3, MM.VRes*.7 Pause 2000 For v=.1 To .4 Step .1 Load Image "SD Card Test.BMP", MM.HRes*v, mm.2res*.2 Pause 500 Box MM.HRes*v, mm.2res*.2, MM.HRes*.3, MM.VRes*.7 Next Pause 3000 Print "Touch Test" n=0 Box .8*MM.HRes, .8*MM.VRes, .2*MM.HRes, .2*MM.VRes, 5, RGB(white), RGB(red) Text .9*MM.HRes, .9*MM.VRes, "EXIT", CM,, 2, RGB(white) Text 30, MM.VRes *.8, "Touch Test - draw now",,, 2, RGB(white), RGB(0,0,127) Do Pixel Touch(x),Touch(y),RGB(white) If Touch(x)>.8*MM.HRes And Touch(y)>.8*MM.VRes Then n=1 Loop Until n Edited 2022-11-25 21:04 by phil99 |
||||
Page 3 of 3 |
Print this page |