Failure Is Always an Option
Summary
Trust But Verify
After assembling the boards, I was ready to test them out to see if I could write a game to the flash and play it on the Game Boy like I was able to do with my prototype. I connected all the wires and tried to read/write to the flash but it didn’t work. Now, I had to find the problem. Was it a bad solder joint? Maybe a broken trace? As I started probing the connections with my digital multi-meter, I discovered that the pins on the flash where not connected to the pins on the header, not just one or two, ALL of them weren’t connected. As it turns out, the KiCad symbol for the flash part was made for the DIP pinout… not the TSOP pinout of the chip I am using. There is nothing wrong with KiCad or the symbol file. I should have verified that it matched the part I was actually using.
Lessons Learned
Every mistake that I make is an opportunity for learning and improvment. Here is a list of the things that I have learned from this board:
- Always verify the pinouts of symbols.
- Don’t rush out a design. It can be hard to be patient, but spending more time up-front can save time in the long run.
- The 0.8mm board thickness fits much better into the GameBoy cartridge slot.
- The auto router may be nice but it routed a couple traces under the card edge pads which would cause trouble if the cartridge were actaully being used because the solder mask would eventually wear off and cause shorts.
- My gerber and drill files were correctly generated.
- JLCPCB did a good job making the boards and even alterted me to the problem with the traces on the board edge.
- DHL did a good job of delivering the package. They are a few dollars more expensive, but as long as they continue to provide quick deliveries, I plan on using them.
Next Steps
Before I do another revision of this board, I am going to focus on the memory mapping hardware. I am not sure if I want to do another rev of this one or skip it altogether and integrate the RAM and memory mapper. Either way, I am going to spend more time making sure my design is right next time so that I don’t wind up with a bunch of cool looking coasters.