This project ultimately just uses the power of the BBC Microbit to communicate via radio and control the LED strips, therefore this board started out purely as a passive breakout board to mount the MicroBit and connect it to the LED strip but quickly became more complex.
I have an interest in capacitive touch at the moment – I have no particular project in mind but I wanted to see the current state of cap-touch solutions so that I could use it in a future project.
To test it out I made a board with a single touch pixel. I can use this board in other projects as a drop in touch solution. I decided to go with Microchip’s (formerly Atmel’s) qTouch library with their Peripheral Touch Controller (PTC).
This project started about two and half years ago when I took an FPGA class at MIT and the professor happened to give me an HP1662AS logic analyser that MIT were throwing out. Despite the fact that I lived in the UK and this thing is massive and weighs 20kg I took it anyway. I thought it would be a cool project to replace the cathode ray tube with a larger, LCD display. I thought I would get this done before I left the US three months later… Little did I know it was going to take me another two years (although not of continuous work). Now I am nearly done, and just in time to ship it back to the US when I move back for work.
I was soldering a QFN-25 in flip-chip configuration and forgot which way round I soldered it… Here’s how I figured it out.
This PCB represents two firsts for me – first 4 layer board and first BGA package. The former isn’t really a big deal and is really just necessary because of the latter. Due to my memory requirements, I was forced to use the Lattice iCE40HX8k which has more RAM than the smaller variant, iCE40HX4k, and also only comes in BGA packages.
I haven’t posted in a long time. For one thing, work has been busy. Also I have been making progress here and there in a number of ways, none of which directly merit an article. My solution is to briefly sum up all of my progress here.
Quick Intro to I2C
Along with USART and SPI, I2C is definitely the most common interface used by a microcontroller to communicate with peripherals. In order to implement an I2C bus all you need is two open-collector collector pins, one for the SCL (clock) line and one for the SDA (data) line. It has to be open-collector because there are times during the protocol when two devices drive the clock line at the same time which can lead to a short circuit if one device drives it high and one drives it low. This way, the bus lines are high by default due to the pull up resistors – if a device wants a line to go low, it just shorts it to ground via an internal transistor. There is no path from VCC to GND that does not contain a high-valued resistor.