Forum: Mikrocontroller und Digitale Elektronik AVR32 Taktrate von SPI


von Godi S. (godi22)


Lesenswert?

Hallo,

ich habe einen AVR32 (AT32UC3A0512) an diesem eine SD-Karte über den 
SPI0 angeschlossen ist.
Als Dateisystem verwende ich FAT aus dem ASF.
Nach langem herumprobieren funktioniert jetzt das formatieren und 
beschreiben der Karte.

Jedoch weiß ich nicht genau wie die Frequenz des SPI eingestellt gehört.
Im Handbuch des AVR32 sieht man im Blockschaltbild dass der SPI mittels 
PBA getaktet wird.
Die Taktfreqenz des PBA ist bei mir 30MHz und die CPU hat 60MHz.
Deshalb habe ich im conf_sd_mmc_spi.h file den SD_MMC_SPI_MASTER_SPEED 
auf 30MHz definiert.
Dies Funktioniert aber nicht. Wenn ich 12 oder 24MHz Einstelle dann 
funktioniert es.

Initialisierungscode:
1
/*! \brief Initializes SD/MMC resources: GPIO, SPI and SD/MMC.
2
 */
3
static void sd_mmc_resources_init(void) {
4
  // GPIO pins used for SD/MMC interface
5
  static const gpio_map_t SD_MMC_SPI_GPIO_MAP = {
6
    {SD_MMC_SPI_SCK_PIN,  SD_MMC_SPI_SCK_FUNCTION },  // SPI Clock.
7
    {SD_MMC_SPI_MISO_PIN, SD_MMC_SPI_MISO_FUNCTION},  // MISO.
8
    {SD_MMC_SPI_MOSI_PIN, SD_MMC_SPI_MOSI_FUNCTION},  // MOSI.
9
    {SD_MMC_SPI_NPCS_PIN, SD_MMC_SPI_NPCS_FUNCTION}   // Chip Select NPCS.
10
  };
11
12
  // SPI options.
13
  spi_options_t spiOptions = {
14
    .reg          = SD_MMC_SPI_NPCS,
15
    .baudrate     = SD_MMC_SPI_MASTER_SPEED,  // Defined in conf_sd_mmc_spi.h.
16
    .bits         = SD_MMC_SPI_BITS,          // Defined in conf_sd_mmc_spi.h.
17
    .spck_delay   = 0,
18
    .trans_delay  = 0,
19
    .stay_act     = 1,
20
    .spi_mode     = 0,
21
    .modfdis      = 1
22
  };
23
24
  // Assign I/Os to SPI.
25
  gpio_enable_module(SD_MMC_SPI_GPIO_MAP,
26
                     sizeof(SD_MMC_SPI_GPIO_MAP) / sizeof(SD_MMC_SPI_GPIO_MAP[0]));
27
28
  // Initialize as master.
29
  spi_initMaster(SD_MMC_SPI, &spiOptions);
30
31
  // Set SPI selection mode: variable_ps, pcs_decode, delay.
32
  spi_selectionMode(SD_MMC_SPI, 0, 0, 0);
33
34
  // Enable SPI module.
35
  spi_enable(SD_MMC_SPI);
36
37
  // Initialize SD/MMC driver with SPI clock (PBA).
38
  sd_mmc_spi_init(spiOptions, CONFIG_SYSCLK_PBA);
39
}


Welche Frequenz gehört denn für den SD_MMC_SPI_MASTER_SPEED eingestellt?
Wie groß sollte die Anzahl der Bits (SD_MMC_SPI_BITS) eingestell sein? 
(Momentan default-wert 8)

godi

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.