/*! \brief Initializes SD/MMC resources: GPIO, MCI and SD/MMC. */ static void sd_mmc_mci_resources_init(void) { static const gpio_map_t SD_MMC_MCI_GPIO_MAP = { {SD_SLOT_8BITS_CLK_PIN, SD_SLOT_8BITS_CLK_FUNCTION}, // SD CLK. {SD_SLOT_8BITS_CMD_PIN, SD_SLOT_8BITS_CMD_FUNCTION}, // SD CMD. {SD_SLOT_8BITS_DATA0_PIN, SD_SLOT_8BITS_DATA0_FUNCTION}, // SD DAT[0]. {SD_SLOT_8BITS_DATA1_PIN, SD_SLOT_8BITS_DATA1_FUNCTION}, // DATA Pin. {SD_SLOT_8BITS_DATA2_PIN, SD_SLOT_8BITS_DATA2_FUNCTION}, // DATA Pin. {SD_SLOT_8BITS_DATA3_PIN, SD_SLOT_8BITS_DATA3_FUNCTION}, // DATA Pin. {SD_SLOT_8BITS_DATA4_PIN, SD_SLOT_8BITS_DATA4_FUNCTION}, // DATA Pin. {SD_SLOT_8BITS_DATA5_PIN, SD_SLOT_8BITS_DATA5_FUNCTION}, // DATA Pin. {SD_SLOT_8BITS_DATA6_PIN, SD_SLOT_8BITS_DATA6_FUNCTION}, // DATA Pin. {SD_SLOT_8BITS_DATA7_PIN, SD_SLOT_8BITS_DATA7_FUNCTION} // DATA Pin. }; // MCI options. static const mci_options_t MCI_OPTIONS = { .card_speed = 400000, .card_slot = SD_SLOT_8BITS, // Default card initialization. }; // Assign I/Os to MCI. gpio_enable_module(SD_MMC_MCI_GPIO_MAP, sizeof(SD_MMC_MCI_GPIO_MAP) / sizeof(SD_MMC_MCI_GPIO_MAP[0])); // Enable pull-up for Card Detect. gpio_enable_pin_pull_up(SD_SLOT_8BITS_CARD_DETECT); // Enable pull-up for Write Protect. gpio_enable_pin_pull_up(SD_SLOT_8BITS_WRITE_PROTECT); sd_mmc_mci_init(&MCI_OPTIONS, sysclk_get_pbb_hz(), sysclk_get_cpu_hz()); }
/*! \brief Initializes SD/MMC resources: GPIO, MCI and SD/MMC. */ static void sd_mmc_mci_resources_init(void) { // GPIO pins used for SD/MMC interface #if EXAMPLE_SD_SLOT == SD_SLOT_8BITS static const gpio_map_t SD_MMC_MCI_GPIO_MAP = { {SD_SLOT_8BITS_CMD_PIN, SD_SLOT_8BITS_CMD_FUNCTION }, // CMD Pin. {SD_SLOT_8BITS_CLK_PIN, SD_SLOT_8BITS_CLK_FUNCTION}, // CLOCK Pin. {SD_SLOT_8BITS_DATA0_PIN, SD_SLOT_8BITS_DATA0_FUNCTION}, // DATA Pin. {SD_SLOT_8BITS_DATA1_PIN, SD_SLOT_8BITS_DATA1_FUNCTION}, // DATA Pin. {SD_SLOT_8BITS_DATA2_PIN, SD_SLOT_8BITS_DATA2_FUNCTION}, // DATA Pin. {SD_SLOT_8BITS_DATA3_PIN, SD_SLOT_8BITS_DATA3_FUNCTION}, // DATA Pin. {SD_SLOT_8BITS_DATA4_PIN, SD_SLOT_8BITS_DATA4_FUNCTION}, // DATA Pin. {SD_SLOT_8BITS_DATA5_PIN, SD_SLOT_8BITS_DATA5_FUNCTION}, // DATA Pin. {SD_SLOT_8BITS_DATA6_PIN, SD_SLOT_8BITS_DATA6_FUNCTION}, // DATA Pin. {SD_SLOT_8BITS_DATA7_PIN, SD_SLOT_8BITS_DATA7_FUNCTION} // DATA Pin. }; #elif EXAMPLE_SD_SLOT == SD_SLOT_4BITS static const gpio_map_t SD_MMC_MCI_GPIO_MAP = { {SD_SLOT_4BITS_CMD_PIN, SD_SLOT_4BITS_CMD_FUNCTION }, // CMD Pin. {SD_SLOT_4BITS_CLK_PIN, SD_SLOT_4BITS_CLK_FUNCTION}, // CLOCK Pin. {SD_SLOT_4BITS_DATA0_PIN, SD_SLOT_4BITS_DATA0_FUNCTION}, // DATA Pin. {SD_SLOT_4BITS_DATA1_PIN, SD_SLOT_4BITS_DATA1_FUNCTION}, // DATA Pin. {SD_SLOT_4BITS_DATA2_PIN, SD_SLOT_4BITS_DATA2_FUNCTION}, // DATA Pin. {SD_SLOT_4BITS_DATA3_PIN, SD_SLOT_4BITS_DATA3_FUNCTION} // DATA Pin. }; #else # error SD_SLOT not supported #endif // Assign I/Os to SPI. gpio_enable_module(SD_MMC_MCI_GPIO_MAP, sizeof(SD_MMC_MCI_GPIO_MAP) / sizeof(SD_MMC_MCI_GPIO_MAP[0])); // Initialize SD/MMC driver with MCI clock (PBB). sd_mmc_mci_init(EXAMPLE_SD_SLOT, PBB_HZ, pm_freq_param.cpu_f); }
void memories_initialization(void) { //-- Hmatrix bus configuration // This improve speed performance #ifdef AVR32_HMATRIXB union { unsigned long scfg; avr32_hmatrixb_scfg_t SCFG; } u_avr32_hmatrixb_scfg; sysclk_enable_pbb_module(SYSCLK_HMATRIX); // For the internal-flash HMATRIX slave, use last master as default. u_avr32_hmatrixb_scfg.scfg = AVR32_HMATRIXB.scfg[AVR32_HMATRIXB_SLAVE_FLASH]; u_avr32_hmatrixb_scfg.SCFG.defmstr_type = AVR32_HMATRIXB_DEFMSTR_TYPE_LAST_DEFAULT; AVR32_HMATRIXB.scfg[AVR32_HMATRIXB_SLAVE_FLASH] = u_avr32_hmatrixb_scfg.scfg; // For the internal-SRAM HMATRIX slave, use last master as default. u_avr32_hmatrixb_scfg.scfg = AVR32_HMATRIXB.scfg[AVR32_HMATRIXB_SLAVE_SRAM]; u_avr32_hmatrixb_scfg.SCFG.defmstr_type = AVR32_HMATRIXB_DEFMSTR_TYPE_LAST_DEFAULT; AVR32_HMATRIXB.scfg[AVR32_HMATRIXB_SLAVE_SRAM] = u_avr32_hmatrixb_scfg.scfg; # ifdef AVR32_HMATRIXB_SLAVE_EBI // For the EBI HMATRIX slave, use last master as default. u_avr32_hmatrixb_scfg.scfg = AVR32_HMATRIXB.scfg[AVR32_HMATRIXB_SLAVE_EBI]; u_avr32_hmatrixb_scfg.SCFG.defmstr_type = AVR32_HMATRIXB_DEFMSTR_TYPE_LAST_DEFAULT; AVR32_HMATRIXB.scfg[AVR32_HMATRIXB_SLAVE_EBI] = u_avr32_hmatrixb_scfg.scfg; # endif #endif #ifdef AVR32_HMATRIX union { unsigned long scfg; avr32_hmatrix_scfg_t SCFG; } u_avr32_hmatrix_scfg; sysclk_enable_pbb_module(SYSCLK_HMATRIX); // For the internal-flash HMATRIX slave, use last master as default. u_avr32_hmatrix_scfg.scfg = AVR32_HMATRIX.scfg[AVR32_HMATRIX_SLAVE_FLASH]; u_avr32_hmatrix_scfg.SCFG.defmstr_type = AVR32_HMATRIX_DEFMSTR_TYPE_LAST_DEFAULT; AVR32_HMATRIX.scfg[AVR32_HMATRIX_SLAVE_FLASH] = u_avr32_hmatrix_scfg.scfg; // For the internal-SRAM HMATRIX slave, use last master as default. u_avr32_hmatrix_scfg.scfg = AVR32_HMATRIX.scfg[AVR32_HMATRIX_SLAVE_SRAM]; u_avr32_hmatrix_scfg.SCFG.defmstr_type = AVR32_HMATRIX_DEFMSTR_TYPE_LAST_DEFAULT; AVR32_HMATRIX.scfg[AVR32_HMATRIX_SLAVE_SRAM] = u_avr32_hmatrix_scfg.scfg; # ifdef AVR32_HMATRIX_SLAVE_EBI // For the EBI HMATRIX slave, use last master as default. u_avr32_hmatrix_scfg.scfg = AVR32_HMATRIX.scfg[AVR32_HMATRIX_SLAVE_EBI]; u_avr32_hmatrix_scfg.SCFG.defmstr_type = AVR32_HMATRIX_DEFMSTR_TYPE_LAST_DEFAULT; AVR32_HMATRIX.scfg[AVR32_HMATRIX_SLAVE_EBI] = u_avr32_hmatrix_scfg.scfg; # endif #endif #ifdef AVR32_HMATRIX_MASTER_USBB_DMA union { unsigned long mcfg; avr32_hmatrix_mcfg_t MCFG; } u_avr32_hmatrix_mcfg; // For the USBB DMA HMATRIX master, use infinite length burst. u_avr32_hmatrix_mcfg.mcfg = AVR32_HMATRIX.mcfg[AVR32_HMATRIX_MASTER_USBB_DMA]; u_avr32_hmatrix_mcfg.MCFG.ulbt = AVR32_HMATRIX_ULBT_INFINITE; AVR32_HMATRIX.mcfg[AVR32_HMATRIX_MASTER_USBB_DMA] = u_avr32_hmatrix_mcfg.mcfg; // For the USBB DPRAM HMATRIX slave, use the USBB DMA as fixed default master. u_avr32_hmatrix_scfg.scfg = AVR32_HMATRIX.scfg[AVR32_HMATRIX_SLAVE_USBB_DPRAM]; u_avr32_hmatrix_scfg.SCFG.fixed_defmstr = AVR32_HMATRIX_MASTER_USBB_DMA; u_avr32_hmatrix_scfg.SCFG.defmstr_type = AVR32_HMATRIX_DEFMSTR_TYPE_FIXED_DEFAULT; AVR32_HMATRIX.scfg[AVR32_HMATRIX_SLAVE_USBB_DPRAM] = u_avr32_hmatrix_scfg.scfg; #endif #if (defined AT45DBX_MEM) && (AT45DBX_MEM == ENABLE) sysclk_enable_peripheral_clock(AT45DBX_SPI_MODULE); at45dbx_init(); #endif #if ((defined SD_MMC_MCI_0_MEM) && (SD_MMC_MCI_0_MEM == ENABLE)) \ || ((defined SD_MMC_MCI_1_MEM) && (SD_MMC_MCI_1_MEM == ENABLE)) sysclk_enable_pbb_module(SYSCLK_MCI); sysclk_enable_hsb_module(SYSCLK_DMACA); sd_mmc_mci_init(SD_SLOT_8BITS, sysclk_get_pbb_hz(), sysclk_get_cpu_hz()); #endif #if (defined SD_MMC_SPI_MEM) && (SD_MMC_SPI_MEM == ENABLE) // SPI options. spi_options_t spiOptions = { .reg = SD_MMC_SPI_NPCS, .baudrate = SD_MMC_SPI_MASTER_SPEED, // Defined in conf_sd_mmc_spi.h. .bits = SD_MMC_SPI_BITS, // Defined in conf_sd_mmc_spi.h. .spck_delay = 0, .trans_delay = 0, .stay_act = 1, .spi_mode = 0, .modfdis = 1 }; sysclk_enable_peripheral_clock(SD_MMC_SPI); // If the SPI used by the SD/MMC is not enabled. if (!spi_is_enabled(SD_MMC_SPI)) { // Initialize as master. spi_initMaster(SD_MMC_SPI, &spiOptions); // Set selection mode: variable_ps, pcs_decode, delay. spi_selectionMode(SD_MMC_SPI, 0, 0, 0); // Enable SPI. spi_enable(SD_MMC_SPI); } // Initialize SD/MMC with SPI PB clock. sd_mmc_spi_init(spiOptions,sysclk_get_pba_hz()); #endif // SD_MMC_SPI_MEM == ENABLE }
void sd_mmc_mci_resources_init (void) { static const gpio_map_t SD_MMC_MCI_GPIO_MAP = { {SD_SLOT_8BITS_CLK_PIN, SD_SLOT_8BITS_CLK_FUNCTION}, // SD CLK. {SD_SLOT_8BITS_CMD_PIN, SD_SLOT_8BITS_CMD_FUNCTION}, // SD CMD. {SD_SLOT_8BITS_DATA0_PIN, SD_SLOT_8BITS_DATA0_FUNCTION}, // SD DAT[0]. {SD_SLOT_8BITS_DATA1_PIN, SD_SLOT_8BITS_DATA1_FUNCTION}, // DATA Pin. {SD_SLOT_8BITS_DATA2_PIN, SD_SLOT_8BITS_DATA2_FUNCTION}, // DATA Pin. {SD_SLOT_8BITS_DATA3_PIN, SD_SLOT_8BITS_DATA3_FUNCTION}, // DATA Pin. {SD_SLOT_8BITS_DATA4_PIN, SD_SLOT_8BITS_DATA4_FUNCTION}, // DATA Pin. {SD_SLOT_8BITS_DATA5_PIN, SD_SLOT_8BITS_DATA5_FUNCTION}, // DATA Pin. {SD_SLOT_8BITS_DATA6_PIN, SD_SLOT_8BITS_DATA6_FUNCTION}, // DATA Pin. {SD_SLOT_8BITS_DATA7_PIN, SD_SLOT_8BITS_DATA7_FUNCTION} // DATA Pin. }; // MCI options. static const mci_options_t MCI_OPTIONS = { .card_speed = 400000, .card_slot = SD_SLOT_8BITS, // Default card initialization. }; // Assign I/Os to MCI. gpio_enable_module (SD_MMC_MCI_GPIO_MAP, sizeof (SD_MMC_MCI_GPIO_MAP) / sizeof (SD_MMC_MCI_GPIO_MAP[0])); // Enable pull-up for Card Detect. // gpio_enable_pin_pull_up(SD_SLOT_8BITS_CARD_DETECT); gpio_enable_pin_pull_up (SD_SLOT_8BITS_CARD_DETECT_STICK20); // Enable pull-up for Write Protect. gpio_enable_pin_pull_up (SD_SLOT_8BITS_WRITE_PROTECT); // // For STICK20 microSD Sockel gpio_enable_pin_pull_up (SD_SLOT_CMD_STICK20); gpio_enable_pin_pull_up (SD_SLOT_DATA0_STICK20); // // Initialize SD/MMC with MCI PB clock. sd_mmc_mci_init (&MCI_OPTIONS, pcl_freq_param.pba_f, pcl_freq_param.cpu_f); } #endif // SD_MMC_MCI_0_MEM == ENABLE || SD_MMC_MCI_1_MEM == ENABLE /******************************************************************************* TestUart0 Reviews Date Reviewer Info 16.08.13 RB First review *******************************************************************************/ #define EXAMPLE_USART (&AVR32_USART0) #define EXAMPLE_USART_RX_PIN AVR32_USART0_RXD_0_0_PIN #define EXAMPLE_USART_RX_FUNCTION AVR32_USART0_RXD_0_0_FUNCTION #define EXAMPLE_USART_TX_PIN AVR32_USART0_TXD_0_0_PIN #define EXAMPLE_USART_TX_FUNCTION AVR32_USART0_TXD_0_0_FUNCTION int TestUart0 (void) { int i; int i1; static const gpio_map_t USART_GPIO_MAP = { {EXAMPLE_USART_RX_PIN, EXAMPLE_USART_RX_FUNCTION}, {EXAMPLE_USART_TX_PIN, EXAMPLE_USART_TX_FUNCTION} }; // USART options. static const usart_options_t USART_OPTIONS = { .baudrate = 57600, .charlength = 8, .paritytype = USART_NO_PARITY, .stopbits = USART_1_STOPBIT, .channelmode = USART_NORMAL_CHMODE }; // Switch main clock to external oscillator 0 (crystal). // pm_switch_to_osc0(&AVR32_PM, FOSC0, OSC0_STARTUP); // Assign GPIO to USART. gpio_enable_module (USART_GPIO_MAP, sizeof (USART_GPIO_MAP) / sizeof (USART_GPIO_MAP[0])); // Initialize USART in RS232 mode. usart_init_rs232 (EXAMPLE_USART, &USART_OPTIONS, FPBA_HZ); // FOSC0); // for (i = 0; i < 10000; i++) { usart_putchar (EXAMPLE_USART, 'a'); for (i1 = 0; i1 < 10000; i1++); } return (TRUE); } /******************************************************************************* SmartCard_test Reviews Date Reviewer Info 16.08.13 RB First review *******************************************************************************/ int Simulation_USB_CCID (void); int nnn = 0; void SmartCard_test (void) { // Enable pull-up TX/RX // gpio_enable_pin_pull_up(ISO7816_USART_TX_PIN); // DelayCounterTest (); Test_ISO7816_Usart_Pins (); // ISO7816_test (); // ISO7816_ResetSC_test (); // ISO7816_InitSC (); // ISO7816_APDU_Test (); // LA_OpenPGP_V20_Test (); // // if (nnn == 0) { // Simulation_USB_CCID (); } }