Цитата(Aprox @ Aug 12 2008, 19:02)

Помогите, если кто уже прошел успешно этап разбирательства. Проблема в следующем. Использую SSP1 в STR912FA44W. Действую по описаниям в мануале и по примерам применения. Хочу добиться чтения с пина MISO в режиме мастера. Для этого пишу в DR (т.е. в Tx FIFO) байт и после контролируемой выдержки на его передачу, читаю из DR(т.е. из Rx FIFO). С удивлением вижу, что принимается не тот байт, что пришел от периферии, а тот, который я посылал по Tx! Чтения данных не получается. Как ни сравнивал свой код с примерами использования SSP, никаких отличий не нашел. Диаграммы сигналов по лог.анализатору нормальные. В errata про SSP ничего нет. Куда рыпаться дальше- не знаю. Помогите, кто проходил эту проблему.
У меня SSP работает нормально, может бит луббека установлен ? (Бит LMB в CR1)
Подключена ли ножка NSS и если да то куда подтянута ?
Код тоже неплохо посмотреть ?
Что значит контролируемой выдержки ? SSP синхронный дуплексный порт тоесть чтение происходит вместе с передачей.
Вот мой кусок примитивного обмена по SSP
Код
/******************************************************************************
* FUNCTION: spi_process
*
* PARAMETERS: u8_t data - байт записываемый в SPI
* DESCRIPTION: Выполняет обмен 1 байтом по SPI
* RETURNS: Прочитанный байт с SPI
*
* DATE: 30.12.2006
******************************************************************************/
u8_t spi_process(u8_t data)
{
SSP1_DR = data;
while((SSP1_SR & 0x04) == 0);
return(SSP1_DR);
}