Giter Site home page Giter Site logo

amitesh-singh / fastusbasp Goto Github PK

View Code? Open in Web Editor NEW
90.0 16.0 18.0 2.47 MB

This is the fast avr programmer for AVR MCUs based on cheap stm32f103c8t6 board with usb-to-serial support.

Home Page: https://hackaday.io/project/21189-fastusbasp-programmer-for-avr-with-usb-to-serial

License: Other

CMake 8.93% C 33.42% Shell 0.06% C++ 54.38% Meson 3.22%
avr avr-mcu board firmware avrprogrammer stm32f103 stm32 programmer arduino

fastusbasp's Introduction

"Buy Me A Coffee"

FASTUSBasp programmer for AVR Microcontrollers

Join the chat at https://gitter.im/FASTUSBasp/Lobby

This is the fast ISP programmer for AVR MCUs based on cheap stm32f103c8t6 aka blue-pill board with usb-to-serial support.

Release

FastUSBASPv2 board

FastUSBASPv2 board

Perf board

perfboard

Correcting wrong pullup at USB D+

This blue pill board has wrong pullup resistor at usb D+ line. You might need to fix it before using blue pill as an AVR programmer. Refer to this guide: http://amitesh-singh.github.io/stm32/2017/10/09/correcting-usbpullup-resistor.html

how to upload firmware

blue pill board with correct pullup at USB D+ line

Download the binaries from https://github.com/amitesh-singh/FASTUSBasp/releases/tag/v1.0.0

If you have fixed the pullup at D+ line, use fastusbasp.bin The pre-compiled binary is at fastusbasp.bin.

$ st-flash write fastusbasp.bin 0x08000000

blue pill board with wrong pullup at USB D+ line

In case, you did not fix the wrong pullup at D+ line, use
fastusbasp-wrongpullup.bin binary instead

$ st-flash write fastusbasp-wrongpullup.bin 0x08000000

How to use

ISP connections

It uses SPI2 to communicate to AVR.

Blue pill AVR
PB15 MOSI
PB14 MISO
PB13 SCK
PA8 RST
5v or 3.3v 5v
GND GND

Serial connections

Serial ports are PA10(RX) and PA9 (TX).
This can be used to debug AVR Microcontrollers.

Blue pill AVR
PA10 TX
PA9 RX

All pins SPI2(PB15, PB14, PB13), Serial(PA10, PA9) and RST(PA8) used are 5V tolerant.

udev rule

Refer to udev/README.md

On plugging to PC

Linux

When you plug this device to PC, you should get following message ondmesg -wH

[Jan20 13:31] usb 3-1.1: new full-speed USB device number 5 using xhci_hcd
[  +0.107774] usb 3-1.1: New USB device found, idVendor=16c0, idProduct=05dc
[  +0.000004] usb 3-1.1: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[  +0.000002] usb 3-1.1: Product: fastusbasp
[  +0.000002] usb 3-1.1: Manufacturer: http://amitesh-singh.github.io
[  +0.000001] usb 3-1.1: SerialNumber: AARAV
[  +0.040797] cdc_acm 3-1.1:1.0: ttyACM0: USB ACM device
[  +0.000804] usbcore: registered new interface driver cdc_acm
[  +0.000000] cdc_acm: USB Abstract Control Model driver for USB modems and ISDN adapters

/dev/ttyACM0 is the serial port.

Windows

  • Download Zadig (https://zadig.akeo.ie/)
  • Insert device to USB. Wait until windows can't install it.
  • Launch Zadig
  • Select in Zadig our device from ComboBox
  • Select driver Type libusbK
  • Press Install Driver
  • Wait until Zadig is done with installing driver and that results into Windows to detect the device.

Probe AVR

$ avrdude -c usbasp-clone -p m16

avrdude: AVR device initialized and ready to accept instructions

Reading | ################################################## | 100% 0.00s

avrdude: Device signature = 0x1e9403 (probably m16)

avrdude: safemode: Fuses OK (E:FF, H:D8, L:CF)

avrdude done.  Thank you.

Upload program to AVR

$ avrdude -c usbasp-clone -p m16 -U flash:w:blink.hex

avrdude: AVR device initialized and ready to accept instructions

Reading | ################################################## | 100% 0.00s

avrdude: Device signature = 0x1e9403 (probably m16)
avrdude: NOTE: "flash" memory has been specified, an erase cycle will be performed
         To disable this feature, specify the -D option.
avrdude: erasing chip
avrdude: reading input file "blink.hex"
avrdude: input file blink.hex auto detected as Intel Hex
avrdude: writing flash (150 bytes):

Writing | ################################################## | 100% 0.02s

avrdude: 150 bytes of flash written
avrdude: verifying flash memory against blink.hex:
avrdude: load data flash data from input file blink.hex:
avrdude: input file blink.hex auto detected as Intel Hex
avrdude: input file blink.hex contains 150 bytes
avrdude: reading on-chip flash data:

Reading | ################################################## | 100% 0.01s

avrdude: verifying ...
avrdude: 150 bytes of flash verified

avrdude: safemode: Fuses OK (E:FF, H:D8, L:CF)

avrdude done.  Thank you.

Read flash

$ avrdude -c usbasp-clone -p m16 -U flash:r:flash.bin:r

avrdude: AVR device initialized and ready to accept instructions

Reading | ################################################## | 100% 0.00s

avrdude: Device signature = 0x1e9403 (probably m16)
avrdude: reading flash memory:

Reading | ################################################## | 100% 0.33s

avrdude: writing output file "flash.bin"

avrdude: safemode: Fuses OK (E:FF, H:D8, L:CF)

avrdude done.  Thank you.

$ hexdump flash.bin 
0000000 c029 0000 c02f 0000 c02d 0000 c02b 0000
0000010 c029 0000 c027 0000 c025 0000 c023 0000
0000020 c021 0000 c01f 0000 c01d 0000 c01b 0000
0000030 c019 0000 c017 0000 c015 0000 c013 0000
0000040 c011 0000 c00f 0000 c00d 0000 c00b 0000
0000050 c009 0000 2411 be1f e5cf e0d4 bfde bfcd
0000060 d002 c017 cfcd 9ab8 9ac0 ef2f ed83 e390
0000070 5021 4080 4090 f7e1 c000 0000 98c0 ef2f
0000080 ed83 e390 5021 4080 4090 f7e1 c000 0000
0000090 cfeb 94f8 cfff                         

Flash Read/Write speed

Flash Write speed: 15 KBps
Flash Read Speed: 52.5 KBps

Bit clock speed

FASTUSBasp starts out with a fast ISP clock frequency (default: 3 MHz), so the -B bitclock option might be required to achieve stable communication in case target MCU F_CPU is bit low < 12MHz

Supported bitclock speed

  • default (without -B): 3 MHz
  • 1.5 MHz
  • 750 KHz
  • 375 KHz
  • 187.5 KHz

how to compile from source and upload the firmware

To build fastusbasp firmware from source code, follow below guidelines.

compile

Refer my post on how to setup stm32 devlopment environment on Arch linux. http://amitesh-singh.github.io/stm32/2017/04/09/setting-stm32-dev-environment-arch-linux.html

Make sure you have compiled libopencm3 library.

$ git clone --recurse-submodules https://github.com/amitesh-singh/FASTUSBasp
$ mkdir build
$ cd build
$ cmake ../
$ make

Upload the firmware

using STLINK

connect st-link programmer to blue-pill and upload the firmware

$ make fastusbasp-upload
using serial port

Install stm32flash utility on linux. To program stm32f103 via USART, you need to set BOOT0 as 1 and leave BOOT1 as 0.

Connect any usb to uart converter device and connect PA9 to RXD and PA10 to TXD and connect GND.

$ make fastusbasp-serialupload

Links

fastusbasp's People

Contributors

amitesh-singh avatar ntavish avatar spider84 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

fastusbasp's Issues

Make it work on any machine

Hello,
wanted to build it, but:

me@machine~/code/fastusbasp $ cat config.cmake
# Always declare this before stm32-toolchain.cmake
#
set(MCU STM32F1)
set(LIBOPENCM3_DIR "/home/ami/repos/libopencm3")
set(SERIAL_PORT "/dev/ttyUSB0")

No chance this will work here :)

Can you include libopencm3 in your source tree, or manage it as a configurable dependency via, eg, a cmake variable?

thanks

Reset after programming

First to say: Great project.
FASTUSBasp is way faster than my AVRISPmkII clone which I couldn't get working under Win7-64 anyway.

Now my issue:
I'm using AVRDUDESS / Win7-64 to program an ATmega328p. Everything is working well.
But after any action the reset line stays low, keeping the microcontroller in reset state. What I'm doing wrong?
Please help.

avrdude error

the stm32 drivers are successfully installed and the device appears in the device manager on Windows10, but I get this error whenever I try to invoke avrdude using "avrdude -c usbasp-clone -p m8 "

avrdude: error: could not find USB device with vid=0x16c0 pid=0x5dc

Driver Management concluded the process to install driver fastusbasp_(interface_0).inf_amd64_4652f43e1d1cad1d\fastusbasp_(interface_0).inf for Device Instance ID USB\VID_16C0&PID_05DC&MI_00\7&2666295D&0&0000 with the following status: 0x0

Avrdude for Windows: Can't find programmer id "usbasp-clone"

it seems there is no programmer type "usbasp-clone" within windows release of avrdude. Is it possible to solve this?
I've got avrdude here https://sourceforge.net/projects/winavr/

C:\WinAVR-20100110\bin>avrdude -c usbasp-clone -p m16

avrdude: Can't find programmer id "usbasp-clone"

Valid programmers are:
  c2n232i  = serial port banging, reset=dtr sck=!rts mosi=!txd miso=!cts [C:\WinAVR-20100110\bin\avrdude.conf:876]
  dasa3    = serial port banging, reset=!dtr sck=rts mosi=txd miso=cts [C:\WinAVR-20100110\bin\avrdude.conf:863]
........

Seeing this error upon compilation on WLS (Windows Linux Subsystem)

Howdy,

Thanks for this cool project. Lot's of interesting embedded C++ going on!

I have this error just now ...

[ 75%] Linking CXX executable fastusbasp.elf
/usr/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/libc.a(lib_a-fini.o): In function __libc_fini_array': fini.c:(.text.__libc_fini_array+0x26): undefined reference to _fini'
collect2: error: ld returned 1 exit status
src/CMakeFiles/fastusbasp.dir/build.make:95: recipe for target 'src/fastusbasp.elf' failed
make[2]: *** [src/fastusbasp.elf] Error 1
CMakeFiles/Makefile2:157: recipe for target 'src/CMakeFiles/fastusbasp.dir/all' failed
make[1]: *** [src/CMakeFiles/fastusbasp.dir/all] Error 2
Makefile:83: recipe for target 'all' failed
make: *** [all] Error 2

I think I'm compiling OK, but there is an error in the final (no pun intended) link step.

Compilation under Ubuntu 19.04, as a Oracle Virtual Box VM works fine.

Best,

R.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.