Arduino flasher 3.3v: Difference between revisions

From flashrom
Jump to navigation Jump to search
(Replaced content with "{{#externalredirect: https://www.flashrom.org/supported_hw/supported_prog/serprog/arduino_flasher_3.3v.html }}")
Tag: Replaced
 
(42 intermediate revisions by one other user not shown)
Line 1: Line 1:
== Introduction ==
{{#externalredirect: https://www.flashrom.org/supported_hw/supported_prog/serprog/arduino_flasher_3.3v.html }}
This explains how to:
* Easily lower the voltage of an arduino
* Use that arduino to flash a coreboot image on a GM45 Thinkpad with a SOIC16 chip
 
It requires:
* An AVR Arduino at 5v
* An USB<->Serial adapter capable of providing enough current to power up:
** The arduino
** The flash chip
** The circuits around the flash chip
 
It was tested with:
* An Arduino.org "nano version 3.3"
* A Sparkfun "FTDI Basic 3v3" (Uses an FTDI FT232R)
 
== Theory ==
In the [http://ww1.microchip.com/downloads/en/DeviceDoc/Atmel-42735-8-bit-AVR-Microcontroller-ATmega328-328P_Datasheet.pdf Atmega328/P datasheet], the "32.3. Speed Grades" chapter describes the link between maximum frequency of the microcontroller and the voltage. At 3.3v, the maximum frequency is 12Mhz.
 
== HOWTO ==
First download  frser-duino:
git clone --recursive https://github.com/urjaman/frser-duino.git
Then modify the F_CPU value in main.h to be 12Mhz instead of 16Mhz:
F_CPU will look like that:
#define F_CPU 16000000UL
Change it to:
#define F_CPU 12000000UL
* Flash the Arduino with frser-duino
# make ftdi
# make flash-ftdi
* Connect the FTDI adapter to RX and TX of the arduino
* Connect the 3V3 of the FTDI adapter to the 5V pin of the Arduino
* Connect the GND of the FTDI adapter to the GDN of the arduino.
* Get an USB cable and don't connect it to the computer
* Connect it to the FTDI adapter
* If you use a clip (Like a SOIC-8 or SOIC16 Pomona clip), connect it to the arduino
* Connect the chip to the clip, or if you don't use a clip, the chip to the arduino
* Connect the USB cable to the computer.
 
== Flashing ==
* Run flashrom like that:
flashrom -p serprog:dev=/dev/ttyUSB0:115200
 
== Research and thanks ==
* At 3.3V setup doesn't work with frser-duino default settings (make ftdi && make flash-ftdi)
* Thanks a lot to SwiftGeek on IRC (#libreboot on Freenode) for finding and explaning to me how to workaround it
* I still need to understand why it works when lowering the clock, it is probably related to the crystal. I need to look in the atmega328P datasheet to understand.

Latest revision as of 09:05, 21 May 2024