I'm trying to use this with a Microchip 25AA080 EEPROM Here's my SPI Init function and defines: //SPI defines #define SPI_SLAV 0x00000000 // bit0 #define SPI_MSTR 0x00000001 #define SPI_FIX_SLCT 0x00000000 // bit1 #define SPI_VAR_SLCT 0x00000002 #define SPI_CS_DIRECT 0x00000000 // bit2 #define SPI_CS_DECODE 0x00000004 #define SPI_MODE_FAULT_EN 0x00000000 // bit4 #define SPI_MODE_FAULT_DS 0x00000010 #define SPI_LOCAL_LOOP_DS 0x00000000 // bit7 #define SPI_LOCAL_LOOP_EN 0x00000080 #define SPI_FIXED_CS_0 0x000e0000 // bit 19-16 #define SPI_FIXED_CS_1 0x000d0000 // bit 19-16 #define SPI_FIXED_CS_2 0x000b0000 // bit 19-16 #define SPI_FIXED_CS_3 0x00070000 // bit 19-16 #define SPI_DLY_BTWN_CS 0xff000000 // bit31-24 // SPI Chip Select Register #define SPI_SCK_IDLE_LOW 0x00000000 // bit0 #define SPI_SCK_IDLE_HIGH 0x00000001 #define SPI_SCK_SAMPLE_FALLING 0x00000000 // bit 1 #define SPI_SCK_SAMPLE_RISING 0x00000002 #define SPI_CS_HIGH_AFTR_TRANS 0x00000000 // bit 3 #define SPI_CS_LOW_AFTR_TRANS 0x00000008 #define SPI_8_BITS_PER_TRANS 0x00000000 // bit7-4 #define SPI_16_BITS_PER_TRANS 0x00000080 #define SPI_SCK_DIV_FACTOR 256 // times the div value by 256 as it is bit of 15-8 #define SPI_DLY_BF_SCK_HALF 0x00000000 #define SPI_DLY_BT_TRANS_0 0x00000000 #define SPI_SR_TX_EMPTY_MSK 0x00000002 void SPI_Init(void) { AT91F_PMC_EnablePeriphClock ( AT91C_BASE_PMC, 1 << AT91C_ID_SPI ) ; AT91F_SPI_Reset (AT91C_BASE_SPI); AT91F_SPI_Enable (AT91C_BASE_SPI); AT91F_SPI_CfgMode (AT91C_BASE_SPI, AT91C_SPI_MSTR | SPI_FIX_SLCT | SPI_CS_DIRECT | SPI_MODE_FAULT_DS | SPI_LOCAL_LOOP_DS | SPI_FIXED_CS_0); AT91F_SPI_CfgCs (AT91C_BASE_SPI, 0, SPI_SCK_IDLE_LOW | SPI_SCK_SAMPLE_RISING | SPI_CS_HIGH_AFTR_TRANS | SPI_8_BITS_PER_TRANS | (4*SPI_SCK_DIV_FACTOR)); AT91F_PIO_CfgPeriph( AT91C_BASE_PIOA, // PIO controller base address ((unsigned int) AT91C_PA13_MOSI ) | ((unsigned int) AT91C_PA14_SPCK ) | ((unsigned int) AT91C_PA11_NPCS0 ) | ((unsigned int) AT91C_PA12_MISO ), // Peripheral A 0 ); // Peripheral B } Thanks
Please log in before posting. Registration is free and takes only a minute.
Existing account
Do you have a Google/GoogleMail account? No registration required!
Log in with Google account
Log in with Google account
No account? Register here.