ATMEL DataFlash Continuous Array Read

Gast #3164891
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?
Gast #3164905
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…

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren