Вожусь с AT45DB081. Проинитил SPI вроде правильно - времянки заказанные, CS дергается как надо.
Пишу/читаю следующим кодом
Код
BYTE SPI_byte(BYTE b)
{
while(!(AT91C_BASE_SPI->SPI_SR & AT91C_SPI_TDRE));
AT91C_BASE_SPI->SPI_TDR = b;
return AT91C_BASE_SPI->SPI_RDR;
}
Запускаю простейшее - чтение статуса
Код
BYTE ReadStat(void)
{
SYNC_HI();SYNC_LO(); //это синхроимпульс для осцилла
SPI_byte(READ_STATUS);
return SPI_byte(0);
}
И что вижу - команда проходит нормально, а порожняковый байт нет.
Вставка еще одного SPI_byte(0); дает 16 клоков, но на SO Z-состояние - данных нет.
Что делать?