This is the project page for the Chibi stack. Chibi means "midget" in Japanese which describes this stack quite well. It's a no-frills stack that just has three main functions: init, send, and receive. Its meant to be a simple way to establish wireless communications with a wireless radio without getting into a lot of protocol complexity.
2010-12-28 v0.91 Release
- Added sleep mode to the AT86RF212 radios
- Added delay when waking from sleep mode to allow time for the PLL to lock
- Removed the automatic addition of "\n\r" (newline, carriage return) from FreakUSB CDC class
- This caused some strange problems when transmitting binary data and the carriage return is handled by the command line parser now
- Added support for using the radios in promiscuous mode
Link to 2010-12-27_chibi_v0.91
2010-11-06 v0.90 Release
Link to 2010-11-06_chibi_v0.90
- Added dupe rejection
- Software will discard duplicate frames based on having the same src address & same sequence number. These usually result from retries at the transmission range periphery.
- Added buffer overflow detection on incoming packets
- Now checks incoming frames to see if they will overflow the receive buffer. If so, then the frame will be discarded, overflow counter will be incremented, and error message will be sent to the terminal.
- Added error messages in driver
- Added error messages for buffer overflow and radio initialization. The strings are stored in flash rather than RAM.
- Added radio sleep mode function to RF230
- Added function to enable/disable sleep mode for the RF230 radio to save on power.
- I'll be adding the function to the RF212 as soon as I get a chance to test it.
- Replaced MCU specific code with generic defines in SPI to make it easier to port
- Minor change to abstract SPI for easier porting
- Fixed bug where wrong length was used for frames over the max payload size
- On frames greater than the max payload, the frame will get fragmented. The wrong frame length was being used previously, though.
- Fixed comment bug where the comment did not match the code
- In header size calculation, the header size did not match the comment. The comment was incorrect.
2010-07-07 v0.85 Release
This release contains the following:
Link to 2010-07-07_Chibi_v0.85
- Added ATXMega support for 2.4 GHz and 900 MHz radios
- Fixed compilation issue on Linux where case sensitivity caused problem with makefile
- Changed usec_delay function in ATXMega radio drivers to be based on stated MCU frequency F_CPU. There may still be some issues since the clock frequency is changeable on the fly, however old drivers assumed 8 MHz clock
- Added support for command line via UART rather than USB for ATXMega boards since they use FTDI USB serial bridge to UART
- Moved chb_eeprom.c/h to MCU specific directories since they are MCU specific
- Removed "dump" command for register dump
- Removed "pwr" command to set power. This is just demo so default should be okay. API call is still in driver so this can be implemented as needed by the user. Just didnt want to make things too complicated.
2010-06-01 v0.81 Release
This release just contains minor updates:
Link to 2010-06-01_Chibi_v0.81
- Added support for the CC1190.
- This only consists of a GPIO to control the HGM (high gain mode) pin and some minor init mods to configure the radio for an external power amplifier.
- Removed cmd_tbl.h and moved the command table into the main file.
- This allows users to add a command to the command table and implement the command functionality within the same file. Just a minor tweak to make it easier to use and explain how to use. Usage tutorials should be coming soon.
2010-04-08 v0.8 Release
- Starting to use version numbers to mark Chibi releases as well as dates
- Modified rx data handling so don't need to clear the buffer.
- There was a nasty side effect where frames that came in closely spaced would get lost since the buffer was cleared as the frame was getting written into it. Instead, the rx data flag won't be cleared until all contents of buffer is completely read out. This prevents the frame loss and will also solve the previous buffer overflow problem.
- Added ATMega32U4/AT86RF212 support.
- This will support 900 MHz chibi boards as well as any other devices that use ATMega32U4 with the AT86RF212
- Modified interrupt intialization in driver so that it can be done in the header file. This makes things a bit clearer.
- Moved chibi SPI init code to hw MCU specific directories. Each MCU handles SPI init differently.
- Changed types.h file to use <stdint.h> def'ns rather than std C types like int. These have different sizes depending on MCU so using stdint will remove any inconsistencies between data type sizing across MCUs/compilers.
- General housekeeping.
Link to 2010-04-08_Chibi_v0.8
Fixed some bugs that were found by users:
- AT86RF212 driver added
- chibi directories re-organized based on MCU and then radio
- Removed FCS_LEN from the returned length of the chb_read function
- Check all frames for RX_CRC_VALID before allowing a frame read. Discard if invalid.
- Reset the frame buffer after every received frame. There was a bug where if a frame is in the buffer when another arrives, it will never be read out.
- Changed makefile to automatically define AT86RF212 when the radio is selected so that it doesn't need to be manually defined in the main file
Link to 2010-01-17_Chibi_v0.5
Here's the blog post that introduced the Chibi stack way back when:
Chibi 2.4Ghz board schematic
Tutorial on how to download firmware on to the Chibi boards
Firmware Downloading on AVR USB Microcontrollers