https://github.com/conorpp/efm8-arduino-programmer
Program EFM8 devices using an arduino
https://github.com/conorpp/efm8-arduino-programmer
Last synced: over 1 year ago
JSON representation
Program EFM8 devices using an arduino
- Host: GitHub
- URL: https://github.com/conorpp/efm8-arduino-programmer
- Owner: conorpp
- Created: 2017-07-16T01:09:15.000Z (about 9 years ago)
- Default Branch: master
- Last Pushed: 2018-05-13T17:06:12.000Z (about 8 years ago)
- Last Synced: 2025-04-18T00:11:10.325Z (over 1 year ago)
- Language: C++
- Size: 10.7 KB
- Stars: 45
- Watchers: 7
- Forks: 23
- Open Issues: 6
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# efm8-arduino-programmer
Program EFM8 devices using an Arduino Mega.
Thanks to jaromir-sukuba and racerxdl for working on firmware to implement C2 protocol via arduino GPIO. This work largely pulls from them.
## Pre-Steps
Currently, it is for Arduino Mega and maps C2D and C2CK to digital pins 2 and 3, respectively.
C2 is a 2-pin protocol. Any arduino should work to implement the protocol via GPIO. Just need to make sure that the correct pins are mapped for your Arduino.
### Update Pins
Check the [firmware file](https://github.com/conorpp/efm8-arduino-programmer/blob/master/prog/prog.ino#L11) and change the pins to map to your device if needed.
### Arduino Uno support
To use it for Arduino Uno you can just swap from E to D. Just replace all `PORTE`, `DDRE` and `PINE` with `PORTD`, `DDRD` and `PIND`. You can read about Port Registers here: https://www.arduino.cc/en/Reference/PortManipulation
### Write firmware to Arduino
Program the firmware to the arduino and connect C2D, C2CK, and GND to your target device.
## Setup for flashing EFM8
It is set up in a client/server model to be able to easily support programming multiple targets at the same time.
### Requirements
- You need to have Python (2.7) installed.
- Then, install some required python modules.
```
pip install -r requirements.txt
```
### Setup of Server & Client
#### Server
First you must run the server that will handle communication to the arduino.
```
python prog_server.py [ ...]
```
Supply a list of serial ports (you can use more than one Arduino at a time) to handle programming. E.g /dev/USB1 or COM1 or /dev/cu.usbmodem*.
#### Client
Then you can finally program something using the client script.
```
python prog_client.py
```
This will connect to the server and tell it to download specified firmware via specified arduino.
## Troubleshooting
- If your server can't start make sure you have port 4040 available
- If you get python errors make sure you're not running python3
- Some modules need sudo on some systems
- If you're getting data errors, reduce baud rate: https://github.com/conorpp/efm8-arduino-programmer/issues/5