AVR32 Taktrate von SPI

OP #3259262
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

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 13 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.