Jump to content

ChipStick - a Low Cost Digital Debug Tool (DDT) for Hobbyists and Education

Recommended Posts

In this post I reveal the applications of the new product I have been working on this last month.




ChipStick is a tiny, low cost ($10)  16 bit microcomputer based on the MSP430FR2433 attached to a PC via a USB cable. It comes with up to 256K bytes of non-volatile memory - uniquely using ferro-electric memory.


It has up to 16 accessible GPIO lines - which include a mix of SPI, I2C, UART, Timer and ADC channels.


ChipStick may be plugged into a breadboard or stripboard and act as an intelligent programmable controller interfacing with other circuitry.


ChipStick can also act as a Digital Debug Tool (DDT), with jumper wires attached, - used to debug/develop low voltage (3V3) target hardware.


This is not for "MSP430" debugging - more a general purpose tool for exercising digital hardware, ICs etc


In each case, the extendable Scripting Language SIMPLEX may be tailored to the exact requirements of the user's application.


ChipStick is based on non-volatile ferroelectric technology.  This means that your applications and any recorded data remain in memory even after power down.


ChipStick may be extended in hardware to meet the requirements of the application - this is planned through both a series of larger expansion boards (based on the low cost 50x50mm format) and stackable micro-modules that match the DIL 20 socket format.


In this respect, a high resolution 4 channel 24-bit ADC micro-module is under development which additionally provides 8 extra GPIO lines for external applications 


This 24-bit module opens up the ability to interface to high resolution sensors such as loadcells, strain-gauges, precision temperature sensors, energy monitors and other applications where 10 bits of ADC resolution is just not enough.


Other modules in planning are a high speed flash converter for digital oscilloscope projects and high speed capture/replay memory for logic analysers, arbitrary waveform generators and VGA video generation.




With these primary applications in mind, ChipStick has been designed to be as versatile as possible - within the constraints of the small footprint.


As a debug tool, it is no bigger than a USB Stick - easily carried around with essential hacking tools.


I have designed it as a socketable component that may be added to a board (see above) - where a small amount of intelligence is required, or for bridging between sensor devices. It can also collect or send data to SPI devices and bridge that back to the PC via the UART channel.


Equally, it could be used as a small test equipment device to exercise, monitor or control prototype hardware - it has 16 GPIO lines - including two full SPI ports. These can be attached to the target hardware, and using the SIMPLEX scripting language, the various target hardware can be exercised and data reported back to the PC.


With the right SIMPLEX script, it can be used to transfer a hex, bin or ascii file from the PC to the target under development.


The external memory may be used for sensing and datalogging applications, capturing waveforms, playing back arbitrary waveforms - as a signal generator.  The ADC channels may be used as a low bandwidth oscilloscope, test meter or for monitoring changing physical quantities in science experiments.


ChipStick takes much advantage from the trend in modern sensors and peripherals to connect via the SPI or I2C bus. The MSP430FR2433 device provides up to 3 separate SPI buses.


ChipStick can be interfaced to Wireless and WiFi modules such as the RFM69 via SPI and the low cost ESP-01 via the second UART port.


Suitable sensors include accelerometers, gyroscopes, digital compass, temperature, pressure, loadcells etc.


For basic GPIO operations - common shift registers may be used with the SPI bus such as the 74HC595 for 8-bits output - for driving LED arrays, the high power TPIC6B595 for driving stepper motors, and the 74HC165 for 8-bit inputs.


Using a LED driver IC - such as the MAX7219 or AS1100 series - up to 8 digits or an 8x8 array of LEDs may be driven from the SPI port.


OLED and LCD graphics displays may also be driven from SPI  with a couple of control signals.



Educational Applications

ChipStick as been designed with education and experimentation in mind.  It has been priced such that cost should not be a barrier to using it.


The module can be made in China for as little as $4, and there may be a "kit" version available with just the awkward QFN-24 and SMT parts soldered to the tiny pcb, leaving the user add their own through-hole connectors  - if needed.  You can then use your own 3V3 programming USB-Serial lead.

It can be used specifically to assist in the teaching of electronics, computer science and interactive coding.

It is versatile enough to meet the needs of high-school and university undergraduates, plus simple enough meet the requirements of the maker and hacker community.

The small size of ChipStick allows it to be used to give intelligence and connectivity in situations where other technology is just too bulky to fit - with the programmer section detached it is only 26.5 x 11mm - small enough to fit inside a 4x2 Lego block!

It's low cost means that it can deployed in areas where other solutions might prove too expensive.

Here are a few of the educational applications:

Teaching Forth.

Forth is an interactive language and can be best taught with hardware that creates a stimulating interactive environment. This includes the use of LEDs, sound, touch and movement (such as stepper motors and servos).

The MSP430 is a good fit for a "traditional" Forth machine - with 16-bit Von Neuman architecture.

MSP430FR2433 with 16K FRAM and 4K RAM is architecturally similar to the early minicomputers that Charles Moore would have first coded Forth onto in the late 1960s - just a bit faster.

The external SPI memory has been included - specifically so that users can experiment and learn about interpreted languages running on virtual machines. OK - single byte access to external RAM takes approx 30uS - but block access is 3uS per byte. ChipStick will come with a 128Kx8 external SRAM 23LC1024, or FRAM to special order.


The use of the 23LC1024 SRAM with its quad SPI port immediately opens up applications for logic analysers, dataloggers arbitrary waveform generators and other memory capture/playback devices.

The SPI buses on the MSP430FR2433 allow expansion hardware like sensors and shift registers, LED and graphic display drivers etc to easily be added - with minimum of wiring.

Teaching Coding


ChipStick is not limited to Forth  - it is easily programmed in C with CCS or Energia, BASIC or in native MSP430 assembly language.  


The SIMPLEX scripting language is written in C, easily modified and uses a Forth-like syntax. It encourages the use of short functions or blocks of code, that may be tried and tested individually by the interactive interpreter, edited if necessary and when fully working compiled and stored in the on-chip non-volatile FRAM.  Code Blocks may then strung together to make more complex applications.


An innovative but intuitive, cross platform GUI to visualise the process of coding is currently being developed.  

Teaching Digital Electronics

ChipStick can animate electronic projects in a low cost way not previously possible.  With a breadboard and a few LEDs and switches, ChipStick can form the central controller of many digital projects.

It's ability to easily interface to displays, sensors and actuators allows it to make projects exciting.

ChipStick can also be used to exercise digital electronics, and report results back to a PC for display on a graphical user interface. In teaching environments where real hardware may not be possible or practical - ChipStick can use virtual hardware and achieve most of the same educational aims.


Creating Practical Hardware


ChipStick helps to break down some of the barriers between modern electronic devices and practical hardware hacking. It's method of construction effectively converts between the awkward surface mount technology, and 0.1" (2.54mm) pitch pins - that are a lot more user and breadboard friendly.


The small format and layout of the ChipStick board means that accessories and expansions may be easily prototyped on breadboard or stripboard at minimal cost, and then easily converted to a pcb - using tools such as KiCAD or EagleCAD. Simple designs can be created in a few hours, or over a weekend - with low cost pcbs delivered from China within a couple of weeks.


ChipStick promotes the use of 50mm x 50mm expansion boards with a common header layout. This allows boards to be used together, shared or swapped between friends or whatever.

Making and Hacking

As a result of it's low cost, ChipStick can be used in projects where other solutions may seem over expensive. Projects no longer need to be stripped down, to salvage the only $20 Arduino for another purpose.  ChipSticks will be supplied in multi-packs at very low prices - so that the cost of the device is no longer seen to be a barrier to creativity.

ChipStick is compatible with Energia - an "Arduino Like" IDE. This allows an easy transition to the new device from familiar territory.


ChipStick will enter production in the Summer. However - it is fully opensource, and the design files and firmware will be available via Github in due course.


Happy Easter







Link to post
Share on other sites

An Update,


I have now partially built up a batch of 14 ChipSticks, and completed 4. The remainder will be done during the week.


Over the weekend I have written some more code to exercise the on board 128K byte RAM - and this appears to be working well.


I can now execute my Simplex code out of the external SRAM.


There will be an update to the code on my Github plus some more information geaned whilst building these up.


It's not often you get an uninterrupted 4 day stretch to work intensively on a project  like this.  I can return to work tomorrow - knowing that most of what I aimed to achieve this weekend has been accomplished.


The MSP430FR2433 device is still on a 12 week leadtime - so that puts us into nearly July before these are able to be manufactured in volume. Some beta samples may be available in due course.










Link to post
Share on other sites

I have put the pictorial construction guide for ChipStick on my Blog.


It gives an idea of how to assemble the pcb by hand - should you wish.


However - these will be professionally built by pick and place machine in China later in the Summer, at a price that would be difficult to match by any means.





The EagleCAD files, Gerbers and a representative, (but not finalised) BOM is also available from my GitHub repository.  You will be amazed how cheap components are, when sourced from China - literally cents.   The whole BOM comes out at well under $4, of which 65% is the cost of the MSP430 and the Microchip SRAM.


The latest 128K external RAM version of the SIMPLEX code for #ChipStick is now up on my GitHub SIMPLEX_2_MSP430FR2433_11.c https://github.com/monsonite/SIMPL 


It has developed primarily as test code to exercise the external RAM, and to prove that data can be moved to and from external RAM and that interpreted code can be run from there.


It's buggy, it's quirky and it's in no way a finished product - but hey, I am a Hardware Engineer, who's slowly learning C and the MSP430 by doing this!


Send me some feedback if you need more information.





Link to post
Share on other sites
  • 3 months later...

@@monsonite , hope you don't mind me asking some questions unrelated to Chipstick (both the device or the food :D) but the FR2433...



I've created my own board based on this MCU and would like to see a basic sign of life. So I opened CCS, created a new CCS project based on the 'Blink the LED' template, selected MSP430FR family and then MSP430FR2433 as target. I then tried to compile the code but it gives an error:

"C:/ti/ccsv6/ccs_base/msp430/include/msp430.h", line 1784: fatal error #35: #error directive: "Failed to match a default include file"


Checking the msp430.h file makes it clear that indeed the macro __MSP430FR2433__ is not defined. How did you solve this? Did you copy a related macro and header file and renamed it, e.g. FR2023/FR2033?



Likewise, Energia has the same problem, I created a boards.txt and pins_energia.h, and this time edited msp430.h to add the missing macro and copied the header file from FR2033 (and renamed the appropriate sections of course). During compiling GCC now complains about:

C:\energia\hardware\msp430\cores\msp430\twi.c: In function 'USCI_B0_ISR':
C:\energia\hardware\msp430\cores\msp430\twi.c:1152:6: error: interrupt vector 53 is beyond end of MCU vector table


In an attempt to correct this error I looked up the USCI_B0_ISR vector address in the FR2033 datasheet (section 6.3 Interrupt Vector Addresses), however I cannot find the address listed there for 'eUSCI_B0 Receive or Transmit' in the header file. But, interestingly, the table lists 'interrupt priority' as 53 which is the same number as mentioned in the error. I have no clue where to begin fixing this...


3) Looking at your github I notice that you reference a header file named MSP430FR2433.h and wonder if you would like to share it?

Link to post
Share on other sites

Thanks Jazz! I used this wiki page to upload your blink example and it works fine (remember to change the settings in FET-PRo430 from JTAG to Spy-by-Wire). Thanks again!


Looking at the lnk_msp430fr4133.cmd file I notice that e.g. FRAM and RAM sizes are not correct so, following the same idea, I'm going to use the msp430fr2633 files as a starting point instead.

Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

  • Create New...