Доброго всем времени суток.
Столкнулся с проблемой при работе с FRAM по SPI (MR45V*), вроде как практически тоже самое что и FM25CL.
Пытаюсь считать статус памяти, выдает или 0x00(преимущественно) или 0xFF. Но явно не то, что я ожидаю увидеть.
Код
void SPIE_init()
{
PORTE.DIRCLR = (1<<SPIMISO);
PORTE.DIRSET = (1<<SPIMOSI) | (1<<SPISCK) | (1<<SPICS);
PORTE.OUTSET = (1<<SPICS);
SPIE.CTRL = SPI_ENABLE_bm | SPI_MASTER_bm | SPI_MODE_0_gc | SPI_PRESCALER_DIV4_gc;
}
void FeRAM_out(void)
{
// Тут пытаюсь изменить статус памяти
PORTE.OUTCLR = (1<<SPICS); // Включаем ChipSelect
SPIE.DATA = 0x06; // Устанавливаю бит разрешения записи
while( !(SPIE_STATUS & SPI_IF_bm) ); // Жду когда отправится
PORTE.OUTSET = (1<<SPICS); // Выключаем ChipSelect
// Здесь пытаюсь считать статус
PORTE.OUTCLR = (1<<SPICS); // Включаем ChipSelect
SPIE.DATA = 0x05; // Еще раз Отправка команды на получение статуса
while( !(SPIE_STATUS & SPI_IF_bm) ); // Жду ответа об отправке
StatusSRWD = SPIE.DATA; // Получаю ответ
sendCharE0(StatusSRWD); // Скидываю ответ по UART для наглядности
PORTE.OUTSET = (1<<SPICS); // Выключаем ChipSelect
}
#WP и #HOLD подтянуты к питанию.
Вроде бы простая память, но где то накосячил и не могу выцепить ошибку(
Сообщение отредактировал Nosaer - Apr 24 2016, 11:23