2 Andy
Буду очень благодарен, если поможете
Вот код инициализации:
CODE
void EMC_init (void)
{
EMC_CTRL |= 1;
PCONP |= (1 << 11);
// Инициализация ног
PINSEL6 = 0x55555555;
PINSEL7 = 0x55555555;
PINSEL8 = 0x55555555;
PINSEL9 = 0x55555555;
//Ноги инициализированы
EMC_CONFIG = 0; // Litle indian
EMC_STA_CFG0 |=1; // 16ти разрядная память
EMC_STA_CFG0 |= (1<<6); // Выбор девайса низким уровнем
EMC_STA_CFG0 |= (1 << 7); // Управление сигналами BLS0 и BLS1 для 16ти разрядной памяти
EMC_STA_CFG0 |= (1 << 8); // Разрешение задержек
EMC_STA_CFG0 &= ~(1 << 20); // Сбросить защиту от записи
// Выставить макс. задержки
EMC_STA_WAITWEN0 = (0x0F && 0x0f);
EMC_STA_WAITOEN0 = (0x0F && 0x0f);
EMC_STA_WAITRD0 = (0x0F && 0x0f);
EMC_STA_WAITPAGE0 = (0x1F && 0x1f);
EMC_STA_WAITWR0 = (0x1F && 0x1f);
EMC_STA_WAITTURN0 = (0x0F && 0x0f);
EMC_STA_EXT_WAIT = (0x1FF && 0x01ff);
}
А вот нехитрые опыты с записью и чтением:
CODE
while
{
ex_mem = (DWORD *) 0x80000000;
*(ex_mem) = 0xAA;
can_msg_out[0].data[0] = (char)(*ex_mem) ;
CAN1_SendStdMessage( &can_msg_out[0] );
}
Результаты считывания выдаются в проверенный CAN.
Считывается из этого адреса всегда 0xFF.
Байт статуса EMC_STAT всегда 0x05;
Сигналы:
0E - импульсы с частотой 125кГц и скважностью примерно 10%
WE - 3,3В постоянно
BLS0 и BLS1 - 3,3В постоянно
СE - постоянно 0В
Косяков получается что-то очень много:
WE должен менять уровент в зависимости от того, запись производится или чтение
BLS0 и BLS1 должны быть внизу хоть иногда.
На всякий случай прикладываю док на SRAM/