Forum: Mikrocontroller und Digitale Elektronik ATMEL DataFlash Continuous Array Read


von Hendrik (Gast)


Lesenswert?

Hallo zusammen,

ich versuche gerade auf einem EVK1104 (also AVR32 UC3) das on-board SPI 
dataflash im "continuous array read"-Modus auszulesen. Der Treiber in 
der ASF unterstützt diesen Modus nicht direkt, daher versuche ich direkt 
über SPI mit dem Chip zu kommunizieren. Leider kriege ich bei spi_read 
einen Timeout-Fehler zurück. Was mache ich falsch?

Hier der relevante Ausschnit aus meinem Code:
1
#define AT45DBX_CMDA_RD_ARRAY_AF_SM       0x0B        //!< Continuous Array Read, Any-Frequency Mode (Serial Mode).
2
3
// ...
4
5
{
6
  at45dbx_init(...);
7
  
8
  // ...
9
10
  // issue read continuous array command
11
    spi_selectChip(AT45DBX_SPI, AT45DBX_SPI_FIRST_NPCS);
12
  spi_write(AT45DBX_SPI, AT45DBX_CMDA_RD_ARRAY_AF_SM);
13
  // start at address 0
14
  spi_write(AT45DBX_SPI, 0);
15
  spi_write(AT45DBX_SPI, 0);
16
  spi_write(AT45DBX_SPI, 0);
17
  // dummy bytes
18
  spi_write(AT45DBX_SPI, 0xff);
19
  
20
  for(n=READ_SIZE; n!=0; --n)
21
  {
22
    status = spi_read(AT45DBX_SPI, &data);
23
    // TODO: process data
24
  }
25
26
  // ...
27
}

Wer kann mir helfen?

von Hendrik (Gast)


Lesenswert?

Ach herrje, hab's schon selber gefunden: vor dem spi_read fehlt 
natürlich der spi_write mit einem Dummy-Byte, damit überhaupt ein 
Taktsignal generiert wird:
1
      spi_write(AT45DBX_SPI, 0xff);
2
      status = spi_read(AT45DBX_SPI, &data);

Wenn die Lösung immer so einfach wäre…

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.