Пытаюсь запустить EMC на процессоре LPC2388, ревизия "B".
Сделал инициализацию, пытаюсь выполнить чтение - тишина. Тыкаюсь осциллографом - ножки OE и CS всегда в единице.
Скорее всего, кривая инициализация.
У кого-то есть готовый работающий пример инициализации EMC на этом контроллере? Я делаю так.
Код
//перед вызовом этой функции запускается инициализация PLL.
void Init_EMC(void)
{
SCS |= 0x00000002; // Reset EMC.
EMCCONTROL = 0x00000001; // Enable EMC.
PCONP |= 0x00000800; // Turn on EMC PCLK.
PINSEL6 |= 0x5555; // D0-D7. 0101010101010101(b)
PINSEL8 = 0x55555555; // A0-A15.
}
#define EMC_BASE 0x80000000
//запись
void inline WriteEMCFPGA(unsigned int addr, unsigned char dtx)
{
unsigned char * p;
p = (unsigned char*)(addr + EMC_BASE);
*p=dtx;
}
//чтение
unsigned char inline ReadEMCFPGA(unsigned int addr)
{
unsigned char * p;
p = (unsigned char*)(addr + EMC_BASE);
return *p;
}
void Init_EMC(void)
{
SCS |= 0x00000002; // Reset EMC.
EMCCONTROL = 0x00000001; // Enable EMC.
PCONP |= 0x00000800; // Turn on EMC PCLK.
PINSEL6 |= 0x5555; // D0-D7. 0101010101010101(b)
PINSEL8 = 0x55555555; // A0-A15.
}
#define EMC_BASE 0x80000000
//запись
void inline WriteEMCFPGA(unsigned int addr, unsigned char dtx)
{
unsigned char * p;
p = (unsigned char*)(addr + EMC_BASE);
*p=dtx;
}
//чтение
unsigned char inline ReadEMCFPGA(unsigned int addr)
{
unsigned char * p;
p = (unsigned char*)(addr + EMC_BASE);
return *p;
}
Что делаю не так или чего не делаю?
Спасибо.