Last year, I developed a PIC16LF1823-based ornament that had several programmable LED patterns, had built-in timekeeping through a 32.768 kHz crystal, and was powered by a CR2032 coin cell. These things were cool and the PIC16LF1823 was an awesome device for this application, but I've always wanted to experiment with Silicon Labs' 8051-based microcontrollers. I'm very familiar with the 8051 architecture as I've done some work with the original Intel devices - I thought it would be pretty cool to work with modernized versions of them with modern peripherals so I thought a good test bed for them would be my battery-powered ornament concept. I already have a set of design files and C firmware for them, so it shouldn't be too much of an effort to port them to the EFM8. On top of that, the EFM8 had several features on paper that would allow me to reduce the component count on the PCB and retain much of the same functionality.
I based my design around the EFM8SB1 "Sleepy Bee" MCU, which has a very small QFN-20 package and boasts some great power consumption specifications, which is huge for an application relying on battery power. This time, I individually connected each LED to an MCU digital pin to directly drive them (the EFM8 is more than capable of this). Like last time, I hooked up a 32.768 kHz crystal for the RTC - but this time, I was able to omit the loading capacitors as the EFM8 as it has internal loading capacitors that can be configured to 16 different values. This time, I decided to use an SWD-style 1.27mm header for programming with my J-Link. The rest of the board used the old design - same button, same switch, same battery holder, more or less the same LEDs (though I added a few more).
I've been working on getting this thing working for a bit. I received two assembled PCBs last month but couldn't start development immediately for two reasons: 1) my development tools on hand wouldn't work and 2) I had to leave for a trip almost immediately upon receiving the boards.
More on the development tools issue: originally, I planned on debugging/programming these boards with a J-Link EDU I had on hand as it advertised the ability to program the EFM8/C8051-family devices from SiLabs. Unfortunately, this seemed to be inaccurate marketing as further investigation shows that the J-Link EDU does not support the C2 protocol used for flashing these devices. This left me in some trouble, as I had designed the pinout of the programming header to mate with a J-Link's interface. Unfortunately, I came to this conclusion after spending the better part of a night fiddling with Simplicity Studio, exasperated at its inability to work with the J-Link EDU to find my EFM8s.
I decided to try out a third-party programmer for Silicon Lab's 8051 devices. (from "Silicom Labs") as they were only $10 on eBay. However, these things come with a 2.54mm IDC header, which isn't exactly easy to mate these boards to. I had an issue: I had two complete PCBs that were otherwise fine and had an improper programming port pinout for this new debugger.
I had two options: design a custom cable using a larger 2.54mm IDC header on one side and a smaller SWD-style 1.27mm header on the other to mate with my PCB, or design a breakout board. I briefly investigated option 1 before deciding that building a breakout board might actually be cheaper and easier for me - and have more consistent results as I am not very confident in my handiwork when it comes to cables.
Before I left for my trip, I quickly designed and ordered a breakout board designed to interface the output of my third-party EC6 debugger with the programming port on my ornament PCBs. I decided to include two headers: one that was a simple 1-to-1 mapping of the larger IDC header to a smaller IDC header to allow me to use a 1-to-1 pinout on future designs and a second header that would allow me to program my ornament boards with an improper pinout. I also included breakouts of the 3.3V and 5V power outputs on this board - this was not a feature I saw on other 8051 debuggers so I decided it would be a boon for my efforts if I included the ability to power the boards with this breakout board (through a jumper wire).
Zachary Murtishi
Discussions
Become a Hackaday.io Member
Create an account to leave a comment. Already have an account? Log In.