# CANable Firmware This repository contains sources for the slcan CANable firmware, based off of the CANtact firwmare. This firmware should still compile and run on the CANtact. ## Supported Commands - `O` - Open channel - `C` - Close channel - `S0` - Set bitrate to 10k - `S1` - Set bitrate to 20k - `S2` - Set bitrate to 50k - `S3` - Set bitrate to 100k - `S4` - Set bitrate to 125k - `S5` - Set bitrate to 250k - `S6` - Set bitrate to 500k - `S7` - Set bitrate to 750k - `S8` - Set bitrate to 1M - `M0` - Set mode to normal mode (default) - `M1` - Set mode to silent mode - `A0` - Disable automatic retransmission - `A1` - Enable automatic retransmission (default) - `TIIIIIIIILDD...` - Transmit data frame (Extended ID) [ID, length, data] - `tIIILDD...` - Transmit data frame (Standard ID) [ID, length, data] - `RIIIIIIIIL` - Transmit remote frame (Extended ID) [ID, length] - `rIIIL` - Transmit remote frame (Standard ID) [ID, length] Note: Channel configuration commands must be sent before opening the channel. The channel must be opened before transmitting frames. This firmware currently does not provide any ACK/NACK feedback for serial commands. ## Building Firmware builds with GCC. Specifically, you will need gcc-arm-none-eabi, which is packaged for Windows, OS X, and Linux on [Launchpad](https://launchpad.net/gcc-arm-embedded/+download). Download for your system and add the `bin` folder to your PATH. Your Linux distribution may also have a prebuilt package for `arm-none-eabi-gcc`, check your distro's repositories to see if a build exists. - If you have a CANable device, compile with `make INTERNAL_OSCILLATOR=1`. - If you have a CANtact device, you can compile using `make`. ## Flashing with the Bootloader Simply plug in your CANable with the BOOT jumper enabled (or depress the boot button on the CANable Pro while plugging in). Next, type `make flash` and your CANable will be updated to the latest firwmare. Unplug/replug the device after moving the boot jumper back, and your CANable will be up and running. ## Debugging Debugging and flashing can be done with any STM32 Discovery board as a programmer, or an st-link. You can also use other tools that support SWD. To use an STM32 Discovery, run [OpenOCD](http://openocd.sourceforge.net/) using the stm32f0x.cfg file: `openocd -f fw/stm32f0x.cfg`. With OpenOCD running, arm-none-eabi-gdb can be used to load code and debug. ## Contributors - [Ethan Zonca](https://github.com/normaldotcom) - Makefile fixes and code size optimization, updates for CANable - [onejope](https://github.com/onejope) - Fixes to extended ID handling - Phil Wise - Added dfu-util compatibility to Makefile ## License See LICENSE.md