-
Update
09/01/2015 at 20:27 • 0 commentsI've had to put this project on hold the last few months due to work. In the meantime, I've had some time to consider where I want this project to go.
The Freescale KL27Z no longer seems like a good option. According to this conversation it sounds like FRDM-KL43Z support in mbed is stuck in limbo. I have no definite plans for producing TBD, so it wouldn't be eligible to be an online toolchain platform. I need mbed to have an existing platform compatible with the KL27Z in the online IDE, and I was hoping that the FRDM-KL43Z would be it. To make matters worse, I found that Linux has the same access control restrictions on USB HID devices as other classes, so the convenience advantage of HID on Windows doesn't extend to Linux.
And so the current TBD hardware is dead.
But TBD is not. Stay tuned.
-
Cold goop and sadness
07/08/2015 at 14:43 • 0 commentsDon't stencil solder paste unless it's up to room temperature. Also use a decent hub with VBUS fuses. I learned these lessons at the cost of a USB port on my main desktop and a fried TBD.
Good news is that the microUSB variant build worked briefly. I'll try to build another up tonight.
-
v0.2 first build
06/30/2015 at 05:57 • 0 commentsI nearly burnt the first v0.2 as I didn't have the thermocouple placed correctly. The LED did cook, but I have a long strip of them so no big deal.
So far it works, the ROM bootloader enumerating under Linux with no problems. LED and pins will need to be exercised.
There are already a couple of problems I plan to fix in the next iteration. Most obvious is the silk text for the pin labels is too small to print properly, and would be illegibly small even if it did. It would be helpful if there was a silk placement marker for the plastic shim like v0.1. On the stencil, I should have made the test pad cream-less, and possibly use a smaller footprint. I should also make separate stencils for the two USB variants otherwise I have to clean paste from the micro USB footprint.
I realized that I mistook I2C1_SCL as being the alt function for the boot pin and placed it next to GND so I can put a 2 pin jumper on to force ROM boot. I2C1_SDA is the correct pin, and I will swap the two in v0.3. Finally, the header on the next version will use the header footprint with locating pegs as centering it by hand is a pain.
Pics in the gallery.
Edit:
The LED blinkens and the KSDK USB-CDC demo works great. The changes I want to make for v0.3 are minor, but before I commit to more PCBs and stencils I want to test out I2C, SPI, and UART, and try building up another board with the microUSB header.
-
PCB's in the mail
06/29/2015 at 19:12 • 1 commentThe PCBs for v0.2 should be waiting for me on my doorstep when I get home tonight. The components and stencil arrived last week, so tonight I'll be baking boards.
I'm so excited that I spent my lunch break pricing larger volume builds for fun. For a build of 100 I can get the price to ~$4/board in components and PCB. Assembly time/cost, QA, shipping, solder paste, and NRE aren't included, so finished boards would be significantly more.
Progress on the browser based programmer is slow. I scrapped my Firefox + FireBreath proof-of-concept after finding out that the NPAPI standard the FireBreath based plugin relies on is deprecated due to security risk. Now I'm trying to find my way around developing a Chrome app, which has the advantage of being driverless and plugin-less on all platforms. Nothing to show for it now, and certainly not while I've got boards to build.
-
Actions were taken
06/21/2015 at 21:23 • 17 commentsI spent some quality time in KiCAD finishing TBD v0.2 over the last couple of weeks. I ordered boards, stencils, and parts which should take a couple of weeks to trickle in. Files in the Github link to the left. Here are the deltas from v0.1:
- Surface mount 2x4 header mounted on the backside to reduce overall length
- Rethought pinout brings out 6 pins that can be muxed between I2C, SPI, FlexIO (general purpose serial engine), and ADC
- Option to use a micro USB jack instead of the USB-A board edge. Fits to the back side of the USB-A pads.
- BOOT pin placed next to GND so a 2 pin jumper can be used to force ROM boot mode
- 0603 discretes for easier manual placement and less risk of tombstoning
- Resistor in line with the LED
- SWD_CLK moved to test pad to save 1 pin on the header. SWD_IO is shared with one of the I2C pins
- Silk legends for pin GPIO names and main alternate function
I also had some time to play with using a web browser to talk to the bootloader via HID. I started with the Sparkfun Firefox HID example as a base and ended up with a simple page that's able to reset the part and read memory as a proof-of-concept. Now that the board is in production, I can spend some more time on this part of the project.
-
I should be sleeping
06/16/2015 at 08:26 • 0 commentsbut I was working on the next board rev. The surface mount header shortens the whole board but fits within a typical USB thumb drive volume. Pins are remapped to bring SPI, I2C, UART, FlexIO, and the bootloader pin.
It still needs some cleanup but I think it looks a lot better than v0.1.
-
Flipping and flopping
06/08/2015 at 16:05 • 0 commentsThe EFM32 is impressive, but I think I'm going back to the Freescale part for now. The bootloader is a big thing for me, and while the EFM32 USB-CDC and xmodem protocol is easier to use from a software standpoint, the KL27's HID protocol is driverless under all OSes. Plus it opens another possibility: firmware loading through a driverless and OS agnostic Chrome plugin using the Chrome HID API.
It's another arbitrary challenge in this project, and that's great.
-
...but at what cost
05/26/2015 at 19:50 • 4 commentsOver lunch I got the mbed build of the USB_4 test project (USB-CDC) for KL43Z with GCC working. My first attempt at this a while back broke because of a duplicate _exit() definition, but looking closer showed a cpp file from the ARM tools target dir in the GCC target that doesn't belong. Delete, clean, and it built ok.
After verifying the built binary has the config bits correct (or risk soft-bricking without an SWD adapter handy) I flashed it with blhost under Windows, and the USB-CDC device showed up on my Linux laptop as soon as I plugged it in!
Exciting, right?
Well... it would be if I hadn't recently taken a look at some of the Gecko parts from SiLabs (inherited from the Energy Micro acquisition).
I used to ignore anything from SiLabs as they were stingy with documentation and tools for hackers. But within the last few months they added support in mbed for some of their EFM32 Cortex-M devkits. The EFM32HG "Happy Gecko" line caught my eye: Cortex-M0+ at 24MHz, 64K flash / 8K SRAM, crystal-less USB, on-chip regulator, ROM bootloader, and comes in QFN24. That's not as good as the Freescale KL27 I'm using here in speed and memory. What makes it better is it's fully supported in the mbed IDE, has a simpler bootloader to work with (USB-CDC + xmodem instead of custom HID), and is less than half the price of the KL27 ($1.94 qty1 for the '309 variant vs $4.39). Given that I can live with the limitations.
So I'm looking into that for the next rev. I'll get a better feel for it once the devkit gets here.
-
Yes, progress.
04/06/2015 at 19:36 • 0 commentsI built my LED project in KDS as "Release" and it works when flashed over USB from blhost without a debugger attached. I also built the USB CDC demo which worked once I switched the USB clock to use the internal oscillator.
Next step: pull the mbed libraries and try building some stuff with the KL43 target.
-
Progress?
04/04/2015 at 05:13 • 0 commentsI've been too busy to spend much time on this, but I did play with the Kinetis SDK. I can get the LED to light using a project build for KL43Z, but only when the SWD debugger is physically connected. I think this has to do with the fact that I've built my "Hello World" in debug mode, and the micro is hanging on an unanswered semihosting breakpoint call. I'll dig into this in the next couple of weeks.
Also committed the KiCAD project complete with gerbers I used to make boards and stencils on Github: https://github.com/pokey9000/tbd