-
        

Ergebnis 1 bis 6 von 6

Thema: STM32F1xx SDIO für SD-Karte bereitet Kopfschmerzen

  1. #1
    Erfahrener Benutzer Roboter-Spezialist Avatar von erik_wolfram
    Registriert seit
    02.12.2009
    Ort
    Berlin
    Beiträge
    405

    STM32F1xx SDIO für SD-Karte bereitet Kopfschmerzen

    Anzeige

    SMARTPHONES & TABLETS-bis zu 77% RABATT-Kostenlose Lieferung-Aktuell | Cool | Unentbehrlich
    Hallo,

    ich merke grade, dass ich in diesem Unterforum ganzschön aktiv bin, Fragen zu stellen... (ich hoffe die Lösungen können auch anderen helfen!)
    Hier mein nächstes Problem:

    Ich versuche am Pollin Eval-Board das SDIO-Interface für das Arbeiten mit einer SD-Karte aufzusetzen. (FATFS bekomme ich bereits zum Laufen)
    Da ich einen Datenlogger erstellen möchte brauche ich die Geschwindigkeit des SDIO-Interfaces. Hierzu habe ich mir eine die entsprechende Bibliothek von STMicroelectronics Version V2.0.3 heruntergeladen.

    Mit reduzierter Geschwindigkeit (SDIO_TRANSFER_CLK_DIV = 0xB2) läuft das ganze via SD_POLLING_MODE.
    Wenn ich die Geschwindigkeit erhöhe scheitert das Lesen mit einem entsprechenden Fehler.
    Natürlich dachte ich bezüglich der Geschwindigkeit sofort an SD_DMA_MODE. Wenn ich dann aber einen Schreibvorgang initialisiere ( SD_WriteBlock ) friert mir diese Funktion ein.
    Woran kann das liegen? Der Lesevorgang geht ohne Probleme von statten.

    Gruß Erik
    Meine Projekte auf Youtube

  2. #2
    Unregistriert
    Gast
    Hi Erik,

    falsche Statusabfrage?
    Die LIB von STM kenne ich nicht, ich arbeite mit mikroPascal, auf einem STM32F407.
    Welchen F1xx hast Du?

    VG
    Peter

  3. #3
    Erfahrener Benutzer Roboter-Spezialist Avatar von erik_wolfram
    Registriert seit
    02.12.2009
    Ort
    Berlin
    Beiträge
    405
    Hallo,

    ich habe einen STM32F103VET6. Ich habe jetzt festgestellt, dass ich die Interrupts nicht initialisert habe. Dafür muss ich die Biblieothek erstmal für den 32f1xx anpassen - sie ist für einen 32f4xx geschrieben...
    Ich werde berichten was ich erreicht habe!
    Meine Projekte auf Youtube

  4. #4
    Erfahrener Benutzer Roboter-Spezialist Avatar von erik_wolfram
    Registriert seit
    02.12.2009
    Ort
    Berlin
    Beiträge
    405
    So anscheinend war es das - ich habe es jetzt halbwegs am laufen und kämpfe mit FATFS.

    Ich habe die Funktion "NVIC_Configuration()" nachgetragen. Diese wird jetzt unmittelbar in "SD_Init()" aufgerufen.
    Code:
    static void NVIC_Configuration( void )
    {
      NVIC_InitTypeDef NVIC_InitStructure;
    
      NVIC_PriorityGroupConfig( NVIC_PriorityGroup_1 );
    
      NVIC_InitStructure.NVIC_IRQChannel = SDIO_IRQn;
      NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;
      NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;
      NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
      NVIC_Init( &NVIC_InitStructure );
    }
    Weiterhin wurde das Interupt "verlinkt" (stm32f10x_it.c):
    Code:
    void SDIO_IRQHandler(void)
    {
        /* Process All SDIO Interrupt Sources */
        SD_ProcessIRQSrc();
    }
    Das ganze läuft jetzt ohne separates Interupt für den DMA - obwohl ich hier einige Beispiele gefunden habe die dies verwendeten....
    Vlt. benötigt der F4 dies?! Demnächst werde ich das ganze auch auf einem F4 umsetzen ...

    Die Clock-Divider (CLKDIV) für den SDIO konnte ich jetzt auf 1 reduizieren:
    SDIO_TRANSFER_CLK_DIV = 1

    Obwohl für die Frequenz gilt:
    SDIO_CK frequency = SDIOCLK / [CLKDIV + 2].
    läuft das ganze nicht mit CLKDIV = 0
    Geändert von erik_wolfram (12.01.2017 um 08:08 Uhr)
    Meine Projekte auf Youtube

  5. #5
    Unregistriert
    Gast
    Hi Erik,

    bis die SD-Card bekannt ist, darf der Clock max. 400KHz betragen, am ende von INIT habe ich auf 24Mhz / 4BitBus umgeschaltet.

    VG
    Peter

  6. #6
    Erfahrener Benutzer Roboter-Spezialist Avatar von erik_wolfram
    Registriert seit
    02.12.2009
    Ort
    Berlin
    Beiträge
    405
    Ahh ok, ich sehe grade, dass der AHB Bus mit 72 MHz taktet.
    Damit erhalte ich gemäß der Gleichung 24 MHz für CLKDIV = 1; die CLKDIV = 0 gelten dann nur für die 48 MHz CPU-Frequenz....
    Meine Projekte auf Youtube

Ähnliche Themen

  1. STM32F1xx FSMC und DMA zur LCD-Ansteuerung bereitet Probleme
    Von erik_wolfram im Forum ARM - 32-bit-Mikrocontroller-Architektur
    Antworten: 1
    Letzter Beitrag: 21.10.2016, 07:35
  2. Moley Robotics: Der Roboter bereitet das Essen zu
    Von Roboternetz-News im Forum Neuigkeiten / Technik-News / Nachrichten / Aktuelles
    Antworten: 1
    Letzter Beitrag: 16.04.2015, 00:59
  3. Arduino Due HSMCI - SD/SDIO/MMC
    Von Superhirn im Forum ARM - 32-bit-Mikrocontroller-Architektur
    Antworten: 0
    Letzter Beitrag: 25.01.2013, 11:57
  4. Raumfahrt: Weltraumroboter Dextre bereitet Betanken von Satelliten vor
    Von Roboternetz-News im Forum Neuigkeiten / Technik-News / Nachrichten / Aktuelles
    Antworten: 0
    Letzter Beitrag: 13.03.2012, 12:20
  5. Maussensor auslesen bereitet Probleme
    Von flntobi im Forum Sensoren / Sensorik
    Antworten: 12
    Letzter Beitrag: 29.05.2011, 14:38

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •