diff --git a/Demos/Device/ClassDriver/MassStorage/MassStorage.c b/Demos/Device/ClassDriver/MassStorage/MassStorage.c index a0fa7a2a9b..82f02b918e 100644 --- a/Demos/Device/ClassDriver/MassStorage/MassStorage.c +++ b/Demos/Device/ClassDriver/MassStorage/MassStorage.c @@ -103,7 +103,6 @@ void SetupHardware(void) /* Hardware Initialization */ LEDs_Init(); - SPI_Init(SPI_SPEED_FCPU_DIV_2 | SPI_ORDER_MSB_FIRST | SPI_SCK_LEAD_FALLING | SPI_SAMPLE_TRAILING | SPI_MODE_MASTER); Dataflash_Init(); USB_Init(); diff --git a/Demos/Device/ClassDriver/MassStorageKeyboard/MassStorageKeyboard.c b/Demos/Device/ClassDriver/MassStorageKeyboard/MassStorageKeyboard.c index 05fdfbe0c8..2ed3f411b4 100644 --- a/Demos/Device/ClassDriver/MassStorageKeyboard/MassStorageKeyboard.c +++ b/Demos/Device/ClassDriver/MassStorageKeyboard/MassStorageKeyboard.c @@ -129,7 +129,6 @@ void SetupHardware(void) LEDs_Init(); Joystick_Init(); Buttons_Init(); - SPI_Init(SPI_SPEED_FCPU_DIV_2 | SPI_ORDER_MSB_FIRST | SPI_SCK_LEAD_FALLING | SPI_SAMPLE_TRAILING | SPI_MODE_MASTER); Dataflash_Init(); USB_Init(); diff --git a/Demos/Device/ClassDriver/VirtualSerialMassStorage/VirtualSerialMassStorage.c b/Demos/Device/ClassDriver/VirtualSerialMassStorage/VirtualSerialMassStorage.c index f1dc04992d..03f422b45c 100644 --- a/Demos/Device/ClassDriver/VirtualSerialMassStorage/VirtualSerialMassStorage.c +++ b/Demos/Device/ClassDriver/VirtualSerialMassStorage/VirtualSerialMassStorage.c @@ -148,7 +148,6 @@ void SetupHardware(void) /* Hardware Initialization */ LEDs_Init(); Joystick_Init(); - SPI_Init(SPI_SPEED_FCPU_DIV_2 | SPI_ORDER_MSB_FIRST | SPI_SCK_LEAD_FALLING | SPI_SAMPLE_TRAILING | SPI_MODE_MASTER); Dataflash_Init(); USB_Init(); diff --git a/Demos/Device/LowLevel/MassStorage/MassStorage.c b/Demos/Device/LowLevel/MassStorage/MassStorage.c index cfb1686fd9..fc6643331f 100644 --- a/Demos/Device/LowLevel/MassStorage/MassStorage.c +++ b/Demos/Device/LowLevel/MassStorage/MassStorage.c @@ -88,7 +88,6 @@ void SetupHardware(void) /* Hardware Initialization */ LEDs_Init(); - SPI_Init(SPI_SPEED_FCPU_DIV_2 | SPI_ORDER_MSB_FIRST | SPI_SCK_LEAD_FALLING | SPI_SAMPLE_TRAILING | SPI_MODE_MASTER); Dataflash_Init(); USB_Init(); diff --git a/LUFA/DoxygenPages/ChangeLog.txt b/LUFA/DoxygenPages/ChangeLog.txt index b5c8fe1fb2..e218fe3a31 100644 --- a/LUFA/DoxygenPages/ChangeLog.txt +++ b/LUFA/DoxygenPages/ChangeLog.txt @@ -24,6 +24,7 @@ * - Updated the Android Accessory Class to accept version 2 protocol devices (with version 1 functionality) * - All board drivers now implement dummy functions and constants when BOARD is set to NONE * - Added missing LEDs to the XMEGA A3BU Xplained board LED driver (thanks to Michael Janssen) + * - Changed board Dataflash drivers to automatically configure the appropriate SPI interface for the selected board * * Fixed: * - Core: diff --git a/LUFA/DoxygenPages/MigrationInformation.txt b/LUFA/DoxygenPages/MigrationInformation.txt index 8643eb3335..cbacbf0c1c 100644 --- a/LUFA/DoxygenPages/MigrationInformation.txt +++ b/LUFA/DoxygenPages/MigrationInformation.txt @@ -11,7 +11,8 @@ * areas relevant to making older projects compatible with the API changes of each new release. * * \section Sec_MigrationXXXXXX Migrating from 130303 to XXXXXX - * There is no migration information for this version. + * Non-USB Library Components + * - The Board Dataflash \c Dataflash_Init() function now automatically configures the appropriate communication interface. * * \section Sec_Migration130303 Migrating from 120730 to 130303 * Device Mode diff --git a/LUFA/Drivers/Board/AVR8/EVK527/Dataflash.h b/LUFA/Drivers/Board/AVR8/EVK527/Dataflash.h index ef04ebad64..a58a06c85c 100644 --- a/LUFA/Drivers/Board/AVR8/EVK527/Dataflash.h +++ b/LUFA/Drivers/Board/AVR8/EVK527/Dataflash.h @@ -45,7 +45,7 @@ * * * - *
NameInfoSelect PinSPI Port
DATAFLASH_CHIP1AT45DB321C (4MB)PORTE.6SPI0
+ * * * @{ */ @@ -90,12 +90,14 @@ /* Inline Functions: */ /** Initializes the dataflash driver so that commands and data may be sent to an attached dataflash IC. - * The microcontroller's SPI driver MUST be initialized before any of the dataflash commands are used. + * The appropriate SPI interface will be automatically configured. */ static inline void Dataflash_Init(void) { DATAFLASH_CHIPCS_DDR |= DATAFLASH_CHIPCS_MASK; DATAFLASH_CHIPCS_PORT |= DATAFLASH_CHIPCS_MASK; + + SPI_Init(SPI_SPEED_FCPU_DIV_2 | SPI_ORDER_MSB_FIRST | SPI_SCK_LEAD_FALLING | SPI_SAMPLE_TRAILING | SPI_MODE_MASTER); } /** Sends a byte to the currently selected dataflash IC, and returns a byte from the dataflash. diff --git a/LUFA/Drivers/Board/AVR8/STK525/Dataflash.h b/LUFA/Drivers/Board/AVR8/STK525/Dataflash.h index 608400c8dc..b34907b033 100644 --- a/LUFA/Drivers/Board/AVR8/STK525/Dataflash.h +++ b/LUFA/Drivers/Board/AVR8/STK525/Dataflash.h @@ -90,12 +90,14 @@ /* Inline Functions: */ /** Initializes the dataflash driver so that commands and data may be sent to an attached dataflash IC. - * The microcontroller's SPI driver MUST be initialized before any of the dataflash commands are used. + * The appropriate SPI interface will be automatically configured. */ static inline void Dataflash_Init(void) { DATAFLASH_CHIPCS_DDR |= DATAFLASH_CHIPCS_MASK; DATAFLASH_CHIPCS_PORT |= DATAFLASH_CHIPCS_MASK; + + SPI_Init(SPI_SPEED_FCPU_DIV_2 | SPI_ORDER_MSB_FIRST | SPI_SCK_LEAD_FALLING | SPI_SAMPLE_TRAILING | SPI_MODE_MASTER); } /** Sends a byte to the currently selected dataflash IC, and returns a byte from the dataflash. diff --git a/LUFA/Drivers/Board/AVR8/STK526/Dataflash.h b/LUFA/Drivers/Board/AVR8/STK526/Dataflash.h index f6e112417b..511479f556 100644 --- a/LUFA/Drivers/Board/AVR8/STK526/Dataflash.h +++ b/LUFA/Drivers/Board/AVR8/STK526/Dataflash.h @@ -90,12 +90,14 @@ /* Inline Functions: */ /** Initializes the dataflash driver so that commands and data may be sent to an attached dataflash IC. - * The microcontroller's SPI driver MUST be initialized before any of the dataflash commands are used. + * The appropriate SPI interface will be automatically configured. */ static inline void Dataflash_Init(void) { DATAFLASH_CHIPCS_DDR |= DATAFLASH_CHIPCS_MASK; DATAFLASH_CHIPCS_PORT |= DATAFLASH_CHIPCS_MASK; + + SPI_Init(SPI_SPEED_FCPU_DIV_2 | SPI_ORDER_MSB_FIRST | SPI_SCK_LEAD_FALLING | SPI_SAMPLE_TRAILING | SPI_MODE_MASTER); } /** Sends a byte to the currently selected dataflash IC, and returns a byte from the dataflash. diff --git a/LUFA/Drivers/Board/AVR8/USBKEY/Dataflash.h b/LUFA/Drivers/Board/AVR8/USBKEY/Dataflash.h index 14b94c5069..648beb557c 100644 --- a/LUFA/Drivers/Board/AVR8/USBKEY/Dataflash.h +++ b/LUFA/Drivers/Board/AVR8/USBKEY/Dataflash.h @@ -94,12 +94,14 @@ /* Inline Functions: */ /** Initializes the dataflash driver so that commands and data may be sent to an attached dataflash IC. - * The microcontroller's SPI driver MUST be initialized before any of the dataflash commands are used. + * The appropriate SPI interface will be automatically configured. */ static inline void Dataflash_Init(void) { DATAFLASH_CHIPCS_DDR |= DATAFLASH_CHIPCS_MASK; DATAFLASH_CHIPCS_PORT |= DATAFLASH_CHIPCS_MASK; + + SPI_Init(SPI_SPEED_FCPU_DIV_2 | SPI_ORDER_MSB_FIRST | SPI_SCK_LEAD_FALLING | SPI_SAMPLE_TRAILING | SPI_MODE_MASTER); } /** Sends a byte to the currently selected dataflash IC, and returns a byte from the dataflash. @@ -223,7 +225,7 @@ #if (DATAFLASH_TOTALCHIPS == 2) PageAddress >>= 1; #endif - + Dataflash_SendByte(PageAddress >> 5); Dataflash_SendByte((PageAddress << 3) | (BufferByte >> 8)); Dataflash_SendByte(BufferByte); diff --git a/LUFA/Drivers/Board/AVR8/XPLAIN/Dataflash.h b/LUFA/Drivers/Board/AVR8/XPLAIN/Dataflash.h index b02cce698f..d8bb12bda4 100644 --- a/LUFA/Drivers/Board/AVR8/XPLAIN/Dataflash.h +++ b/LUFA/Drivers/Board/AVR8/XPLAIN/Dataflash.h @@ -71,7 +71,7 @@ /* Includes: */ #include "../../../../Common/Common.h" - + #include "../../../Misc/AT45DB642D.h" #include "../../../Peripheral/SPI.h" @@ -113,12 +113,14 @@ /* Inline Functions: */ /** Initializes the dataflash driver so that commands and data may be sent to an attached dataflash IC. - * The microcontroller's SPI driver MUST be initialized before any of the dataflash commands are used. + * The appropriate SPI interface will be automatically configured. */ static inline void Dataflash_Init(void) { DATAFLASH_CHIPCS_DDR |= DATAFLASH_CHIPCS_MASK; DATAFLASH_CHIPCS_PORT |= DATAFLASH_CHIPCS_MASK; + + SPI_Init(SPI_SPEED_FCPU_DIV_2 | SPI_ORDER_MSB_FIRST | SPI_SCK_LEAD_FALLING | SPI_SAMPLE_TRAILING | SPI_MODE_MASTER); } /** Sends a byte to the currently selected dataflash IC, and returns a byte from the dataflash. diff --git a/LUFA/Drivers/Board/XMEGA/A3BU_XPLAINED/Dataflash.h b/LUFA/Drivers/Board/XMEGA/A3BU_XPLAINED/Dataflash.h index 143fbbffcf..7ba478ca4e 100644 --- a/LUFA/Drivers/Board/XMEGA/A3BU_XPLAINED/Dataflash.h +++ b/LUFA/Drivers/Board/XMEGA/A3BU_XPLAINED/Dataflash.h @@ -89,7 +89,7 @@ /* Inline Functions: */ /** Initializes the dataflash driver so that commands and data may be sent to an attached dataflash IC. - * The microcontroller's SPI driver MUST be initialized before any of the dataflash commands are used. + * The appropriate SPI interface will be automatically configured. */ static inline void Dataflash_Init(void) { @@ -97,6 +97,12 @@ PORTCFG.MPCMASK = DATAFLASH_CHIPCS_MASK; DATAFLASH_CHIPCS_PORT.PIN0CTRL = PORT_INVEN_bm; + + SerialSPI_Init(&USARTD0, (USART_SPI_SCK_LEAD_RISING | USART_SPI_SAMPLE_LEADING | USART_SPI_ORDER_MSB_FIRST), (F_CPU / 2)); + + PORTD.DIRSET = PIN3_bm | PIN1_bm; + PORTD.DIRCLR = PIN2_bm; + PORTC.PIN2CTRL = PORT_OPC_PULLUP_gc; } /** Sends a byte to the currently selected dataflash IC, and returns a byte from the dataflash. diff --git a/LUFA/Drivers/Board/XMEGA/B1_XPLAINED/Dataflash.h b/LUFA/Drivers/Board/XMEGA/B1_XPLAINED/Dataflash.h index 28c79f1977..3430e0cbfd 100644 --- a/LUFA/Drivers/Board/XMEGA/B1_XPLAINED/Dataflash.h +++ b/LUFA/Drivers/Board/XMEGA/B1_XPLAINED/Dataflash.h @@ -89,7 +89,7 @@ /* Inline Functions: */ /** Initializes the dataflash driver so that commands and data may be sent to an attached dataflash IC. - * The microcontroller's SPI driver MUST be initialized before any of the dataflash commands are used. + * The appropriate SPI interface will be automatically configured. */ static inline void Dataflash_Init(void) { @@ -98,7 +98,12 @@ PORTCFG.MPCMASK = DATAFLASH_CHIPCS_MASK; DATAFLASH_CHIPCS_PORT.PIN0CTRL = PORT_INVEN_bm; - PORTC.REMAP |= PORT_USART0_bm; + SerialSPI_Init(&USARTC0, (USART_SPI_SCK_LEAD_RISING | USART_SPI_SAMPLE_LEADING | USART_SPI_ORDER_MSB_FIRST), (F_CPU / 2)); + + PORTC.REMAP |= PORT_USART0_bm; + PORTC.DIRSET = PIN7_bm | PIN5_bm; + PORTC.DIRCLR = PIN6_bm; + PORTC.PIN6CTRL = PORT_OPC_PULLUP_gc; } /** Sends a byte to the currently selected dataflash IC, and returns a byte from the dataflash. diff --git a/LUFA/Drivers/Peripheral/XMEGA/SerialSPI_XMEGA.h b/LUFA/Drivers/Peripheral/XMEGA/SerialSPI_XMEGA.h index 7f5226b05e..caae55a827 100644 --- a/LUFA/Drivers/Peripheral/XMEGA/SerialSPI_XMEGA.h +++ b/LUFA/Drivers/Peripheral/XMEGA/SerialSPI_XMEGA.h @@ -108,7 +108,7 @@ #define USART_SPI_SAMPLE_LEADING 0 /** SPI data sample mode mask for \ref SerialSPI_Init(). Indicates that the data should be sampled on the trailing edge. */ - #define USART_SPI_SAMPLE_TRAILING USART_UPCHA_bm + #define USART_SPI_SAMPLE_TRAILING (1 << 1) //@} /** \name SPI Data Ordering Configuration Masks */ @@ -117,7 +117,7 @@ #define USART_SPI_ORDER_MSB_FIRST 0 /** SPI data order mask for \ref SerialSPI_Init(). Indicates that data should be shifted out LSB first. */ - #define USART_SPI_ORDER_LSB_FIRST USART_UDORD_bm + #define USART_SPI_ORDER_LSB_FIRST (1 << 2) //@} /* Inline Functions: */ diff --git a/Projects/TempDataLogger/TempDataLogger.c b/Projects/TempDataLogger/TempDataLogger.c index 7590aeea38..0c59bc8433 100644 --- a/Projects/TempDataLogger/TempDataLogger.c +++ b/Projects/TempDataLogger/TempDataLogger.c @@ -201,7 +201,6 @@ void SetupHardware(void) /* Hardware Initialization */ LEDs_Init(); - SPI_Init(SPI_SPEED_FCPU_DIV_2 | SPI_SCK_LEAD_FALLING | SPI_SAMPLE_TRAILING | SPI_MODE_MASTER); ADC_Init(ADC_FREE_RUNNING | ADC_PRESCALE_128); Temperature_Init(); Dataflash_Init(); diff --git a/Projects/Webserver/Webserver.c b/Projects/Webserver/Webserver.c index 173b52e950..b866d37b25 100644 --- a/Projects/Webserver/Webserver.c +++ b/Projects/Webserver/Webserver.c @@ -70,7 +70,6 @@ void SetupHardware(void) #endif /* Hardware Initialization */ - SPI_Init(SPI_SPEED_FCPU_DIV_2 | SPI_SCK_LEAD_FALLING | SPI_SAMPLE_TRAILING | SPI_MODE_MASTER); Dataflash_Init(); LEDs_Init(); USB_Init(USB_MODE_UID);