| David Brownell | 2e10c84 | 2006-01-11 11:23:49 -0800 | [diff] [blame] | 1 | spi_butterfly - parport-to-butterfly adapter driver | 
 | 2 | =================================================== | 
 | 3 |  | 
 | 4 | This is a hardware and software project that includes building and using | 
 | 5 | a parallel port adapter cable, together with an "AVR Butterfly" to run | 
 | 6 | firmware for user interfacing and/or sensors.  A Butterfly is a $US20 | 
 | 7 | battery powered card with an AVR microcontroller and lots of goodies: | 
 | 8 | sensors, LCD, flash, toggle stick, and more.  You can use AVR-GCC to | 
 | 9 | develop firmware for this, and flash it using this adapter cable. | 
 | 10 |  | 
 | 11 | You can make this adapter from an old printer cable and solder things | 
 | 12 | directly to the Butterfly.  Or (if you have the parts and skills) you | 
 | 13 | can come up with something fancier, providing ciruit protection to the | 
 | 14 | Butterfly and the printer port, or with a better power supply than two | 
 | 15 | signal pins from the printer port. | 
 | 16 |  | 
 | 17 |  | 
 | 18 | The first cable connections will hook Linux up to one SPI bus, with the | 
 | 19 | AVR and a DataFlash chip; and to the AVR reset line.  This is all you | 
 | 20 | need to reflash the firmware, and the pins are the standard Atmel "ISP" | 
 | 21 | connector pins (used also on non-Butterfly AVR boards). | 
 | 22 |  | 
 | 23 | 	Signal	  Butterfly	  Parport (DB-25) | 
 | 24 | 	------	  ---------	  --------------- | 
 | 25 | 	SCK	= J403.PB1/SCK	= pin 2/D0 | 
 | 26 | 	RESET	= J403.nRST	= pin 3/D1 | 
 | 27 | 	VCC	= J403.VCC_EXT	= pin 8/D6 | 
 | 28 | 	MOSI	= J403.PB2/MOSI	= pin 9/D7 | 
 | 29 | 	MISO	= J403.PB3/MISO	= pin 11/S7,nBUSY | 
 | 30 | 	GND	= J403.GND	= pin 23/GND | 
 | 31 |  | 
 | 32 | Then to let Linux master that bus to talk to the DataFlash chip, you must | 
 | 33 | (a) flash new firmware that disables SPI (set PRR.2, and disable pullups | 
 | 34 | by clearing PORTB.[0-3]); (b) configure the mtd_dataflash driver; and | 
 | 35 | (c) cable in the chipselect. | 
 | 36 |  | 
 | 37 | 	Signal	  Butterfly	  Parport (DB-25) | 
 | 38 | 	------	  ---------	  --------------- | 
 | 39 | 	VCC	= J400.VCC_EXT	= pin 7/D5 | 
 | 40 | 	SELECT	= J400.PB0/nSS	= pin 17/C3,nSELECT | 
 | 41 | 	GND	= J400.GND	= pin 24/GND | 
 | 42 |  | 
 | 43 | The "USI" controller, using J405, can be used for a second SPI bus.  That | 
 | 44 | would let you talk to the AVR over SPI, running firmware that makes it act | 
 | 45 | as an SPI slave, while letting either Linux or the AVR use the DataFlash. | 
 | 46 | There are plenty of spare parport pins to wire this one up, such as: | 
 | 47 |  | 
 | 48 | 	Signal	  Butterfly	  Parport (DB-25) | 
 | 49 | 	------	  ---------	  --------------- | 
 | 50 | 	SCK	= J403.PE4/USCK	= pin 5/D3 | 
 | 51 | 	MOSI	= J403.PE5/DI	= pin 6/D4 | 
 | 52 | 	MISO	= J403.PE6/DO	= pin 12/S5,nPAPEROUT | 
 | 53 | 	GND	= J403.GND	= pin 22/GND | 
 | 54 |  | 
 | 55 | 	IRQ	= J402.PF4	= pin 10/S6,ACK | 
 | 56 | 	GND	= J402.GND(P2)	= pin 25/GND | 
 | 57 |  |