I was feeling elated by my success with the FYSETC mini 12864 panel and I tried my old “REPRAP Discount Graphics” panel. I thought “surely this should work as well it’s the same SPI graphics LCD after all”.
We you guessed it – work it did not. I tried software SPI, hardware SPI, nothing. Looks like I had to read the manual. Shame!!!
Here is what I found. The old “discount graphics lcd” is not quite the same chip. It uses ST7920 controller, which is a supreme oddball. It uses some very strange scheme and transfers data 4 bits at a time.
Then I remembered I had added support for hardware SPI for that chip since PrntrBoard V1. Why was it not working?
Well, it was because for some strange reason the data pins on the panel are not connected to the SPI interface on the EXP2 connector, so the u8g library has to use software SPI emulation and I didn’t add support for that.
So fixed that, now I have both hardware support and software emulation for the st7920 driver and here it is working:
Next I’m waiting on some 2004 LCD screens to arrive. These should be easier, since there is no hardware protocol involved.
First my woes with the TMC2209 driver boards are ongoing. The company making the PCBs called that they could not complete my last two prototype designs. The issue was that I didn’t pay attention to the fabrication capabilities and used the wrong design rules.
Long story short I had to re-wire part of the board to meet their spec and submit another order. Alas that meant I have to wait another two weeks for the boards to appear 🙁
In the mean time I was trying to test what I can with the rev1 prototype I had. I tested the heaters and thermistors are working. Now it was turn to my old nemesis – the LCD panel.
The software for these LCD panels is remarkably convoluted and not at all supported on STM32 series of MCUs. I had to write two more drivers for the U8G library, but finally some good progress:
I got the FYSETC mini 12864 panel to work. To finish the week, I also verified the SD-card interface is working.
Here is a link to the github project with all the board design files. The Marlin firmware I’m using.
QFN packages and I could not get on the same page. I made one prototype of the V1 design with TMC2209 drivers and only 3 out of 5 worked. I had to re-solder them 3 times just to get them to talk to the CPU. I was just thinking these are just hard on my aging hands and eyes.
I found countless YouTube videos of people soldering chips with QFN packages and it all seems so effortless. I thought I just suck at this.
Yesterday I made some driver board for the V2 design with the 2209 drivers and again had to re-solder the chips, followed the YouTube guides and no luck. Two would move the motors in very strange way and consume quite a bit of power and one plain would not move.
Here is one of the dreaded beasts
I was ready to give up, when I decided to check the driver datasheet for the recommended PCB land pattern. I thought maybe I’m missing something.
For background I downloaded a KiCAD footprint from somewhere and foolishly assumed since it was for Trinamic drivers, it should be correct. Oh well, lesson learned.
Turns out this chip has oversized exposure pad. It is so big that it would touch the pads for the pins on the PCB. It is very likely some of the pins on my board are just shorted to the ground via the die pad underneath.
This is the chip footprint I downloaded:
Looks pretty normal, except the center pad (29) is 3x3mm size. According to the TMC2209 datasheet, the pad on their chip is 3.7×3.7 mm size. Look what happens when I update the center pad size to match the datasheet:
The pin pads are almost connected to the center pad. I resized the pins to match the spec and this is the result
GRRR, All I have to say is “^@%$@^%$!”
I ordered a new set of driver boards with the fixed footprint.
I managed to assemble a few driver boards. Here is the V2 board loaded with 3 TMC2660 drivers and 3 TMC2209 drivers:
I also got marlin to load and communicate with the drivers. More testing tomorrow.
Here is my first assembled prototype of the V2 board. I only had patience to solder 3 PCIe connectors and skipped on the Thermocouple and servo connectors for now.
Sorry about the “no clean” solder paste gunk around the fuses. I noticed it after I took the picture.
Here is a picture with the driver boards in the slots
And slightly different angle
Here I added a 40x10mm fan for scale comparison
I’m not set on the 40mm fans for cooling, I ordered some 60mm and some 50mm and will do some experimentation what would be the best combination.
Next, I’ll make some driver boards and start porting Marlin to test the contraption.
Many thanks to the awesome team at JLCPCB. I’m really impressed by the speed and the exceptionally low prices. I ordered a set of prototype boards for the V2 design on Oct 28th and they arrived today at my door. Total 8 days including shipping from China.
Here it is 150x105mm 2 layer board:
I ordered the 2660 drivers also from JLC, but I don’t like the red mask color:
The 2660 driver is 4 layer board with “gold fingers” – this is code for the board edge PCIe connector.
The purple board is the 2209 driver. That board is from ohspark. No much difference between the two, except the ENIG finish is standard on oshpark and the purple color is dope. The JLC board comes with a little chamfer around the connector, which is nice.
This is what the driver board looks like plugged in a PCIe slot.