У меня два устройства поцеплено к SPI, LCD и MMC карточка в режиме SPI.
LCD с автовыбором CS, побайтный обмен.
MMC с "ручным управленем" пересылка данных или побайтно или блоки с ДМА доступом.
По отдельности работают. Вместе/попеременно не хотят.
После инициализации вызываю функции перед обращения к устройствам только изменяя режим
void SPI_to_LCD (void) // SPI настроен на обмен с LCD
{
AT91F_SPI_Disable(AT91C_BASE_SPI0);
AT91F_SPI_CfgMode (AT91C_BASE_SPI0, 0x30001); // Write to the MR register Master, CS 0 0x30001
AT91F_SPI_Enable(AT91C_BASE_SPI0);
}
ДМА не причем, так как MMC работает.
Может какие либо флаги чистить?
Не переинициализировать же SPI с нуля?
Или чего-то упустил?