Миландр

Ключевым подразделением нашей компании является Центр Проектирования интегральных микросхем
Текущее время: 2017-ноя-22 15:59

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 6 ] 
Автор Сообщение
СообщениеДобавлено: 2017-авг-04 18:15 
Не в сети

Зарегистрирован: 2017-июл-24 10:16
Сообщения: 41
разбираюсь с модулем внешней памяти который шел
с отладкой 1986 ве3
ноги называются по другому и идут на другие пины контроллера
я выяснил, что этот модуль памяти должен жить
по всем адреса с 0x200000 по 0x2fffff
я выбираю регион 60000000 и хочу записать/почитать
по адресу 0x60200000
но никакие данные не записываются.
шина даннх работают, так как горят светодиоды на портах B
а с адресами и управлением непонятно
что у меня неправильно в настройке?
за образец взял какую то программу на вашем сайте, которая
как утверждается должна работать с внешней памятью

Код:
/**
  * Инициализация шин адреса и данных
  */
void ext_bus_ports_init(void)
{
    /* Разрешим тактирование всех портов */
    RST_CLK_PCLKcmd(ALL_PORTS_CLK, ENABLE);

// Шина адреса

    /* PORTF пины PF5...PF15 для шины адреса A2...A12 на выход.
     * Альтернативный режим для выводов */
    port_init_struct.PORT_Pin =   (PORT_Pin_5 |  PORT_Pin_6 | PORT_Pin_7 | PORT_Pin_8 |
             PORT_Pin_9 |  PORT_Pin_10 | PORT_Pin_11 | PORT_Pin_12 |
                                 PORT_Pin_13 | PORT_Pin_14 | PORT_Pin_15);
    port_init_struct.PORT_OE = PORT_OE_OUT;       // Выход
    port_init_struct.PORT_FUNC = PORT_FUNC_ALTER;    // альтернативная
    port_init_struct.PORT_MODE = PORT_MODE_DIGITAL;
    port_init_struct.PORT_SPEED = PORT_SPEED_FAST;   // поставить на PORT_SPEED_FAST !!!
    port_init_struct.PORT_PULL_UP = PORT_PULL_UP_OFF;
    port_init_struct.PORT_PULL_DOWN = PORT_PULL_DOWN_OFF;
    PORT_Init(MDR_PORTF, &port_init_struct);

    /* PORTD пин PD3  для А13 переопределенная */
    port_init_struct.PORT_Pin =   PORT_Pin_3;
    port_init_struct.PORT_OE = PORT_OE_OUT;       // Выход
    port_init_struct.PORT_FUNC = PORT_FUNC_OVERRID; // переопределенная
    port_init_struct.PORT_MODE = PORT_MODE_DIGITAL;
    port_init_struct.PORT_SPEED = PORT_SPEED_FAST;  // поставить на PORT_SPEED_FAST !!!
    port_init_struct.PORT_PULL_UP = PORT_PULL_UP_OFF;
    port_init_struct.PORT_PULL_DOWN = PORT_PULL_DOWN_OFF;
    PORT_Init(MDR_PORTD, &port_init_struct);
   

    /* PORTE пины PE0...PE5 адреса A14...A19 */
    port_init_struct.PORT_Pin = (PORT_Pin_0 | PORT_Pin_1 |PORT_Pin_2 | PORT_Pin_3 |
              PORT_Pin_4 | PORT_Pin_5);
    port_init_struct.PORT_OE = PORT_OE_OUT;
    port_init_struct.PORT_FUNC = PORT_FUNC_ALTER; // альтернативная
    port_init_struct.PORT_MODE = PORT_MODE_DIGITAL;
    port_init_struct.PORT_SPEED = PORT_SPEED_FAST;
    port_init_struct.PORT_PULL_UP = PORT_PULL_UP_OFF;
    port_init_struct.PORT_PULL_DOWN = PORT_PULL_DOWN_OFF;
    PORT_Init(MDR_PORTE, &port_init_struct);


    /* PORTI пины  PI4,PI5 на адреса, которые формируются A20...A21  */
    port_init_struct.PORT_Pin = (PORT_Pin_4 | PORT_Pin_5);
    port_init_struct.PORT_OE = PORT_OE_OUT;
    port_init_struct.PORT_FUNC = PORT_FUNC_OVERRID; // переопределенная
    port_init_struct.PORT_MODE = PORT_MODE_DIGITAL;
    port_init_struct.PORT_SPEED = PORT_SPEED_FAST;
    port_init_struct.PORT_PULL_UP = PORT_PULL_UP_OFF;
    port_init_struct.PORT_PULL_DOWN = PORT_PULL_DOWN_OFF;
    PORT_Init(MDR_PORTI, &port_init_struct);



// Данные

    /* PORTA пины 0..15 для шины данных 0...15 - основная */
    port_init_struct.PORT_Pin = ALL_PORT_PINS;
    port_init_struct.PORT_FUNC = PORT_FUNC_MAIN;
    port_init_struct.PORT_MODE = PORT_MODE_DIGITAL;
    port_init_struct.PORT_PD_SHM = PORT_PD_SHM_OFF;
    port_init_struct.PORT_GFEN = PORT_GFEN_OFF;
    port_init_struct.PORT_SPEED = PORT_SPEED_FAST;
    port_init_struct.PORT_PULL_UP = PORT_PULL_UP_OFF;
    port_init_struct.PORT_PULL_DOWN = PORT_PULL_DOWN_OFF;
    PORT_Init(MDR_PORTA, &port_init_struct);

    /* PORTB пины 0..15 для шины данных 0...15  */
    port_init_struct.PORT_Pin = ALL_PORT_PINS;
    port_init_struct.PORT_FUNC = PORT_FUNC_MAIN;
    port_init_struct.PORT_MODE = PORT_MODE_DIGITAL;
    port_init_struct.PORT_PD_SHM = PORT_PD_SHM_OFF;
    port_init_struct.PORT_GFEN = PORT_GFEN_OFF;
    port_init_struct.PORT_SPEED = PORT_SPEED_SLOW;
    port_init_struct.PORT_PULL_UP = PORT_PULL_UP_OFF;
    port_init_struct.PORT_PULL_DOWN = PORT_PULL_DOWN_OFF;
    PORT_Init(MDR_PORTB, &port_init_struct);


// управление

    /* PORTC пины 9..12 для управления шиной - альтерн */
    port_init_struct.PORT_Pin = (PORT_Pin_9 | PORT_Pin_10 | PORT_Pin_11| PORT_Pin_12);
    port_init_struct.PORT_OE = PORT_OE_OUT;
    port_init_struct.PORT_FUNC = PORT_FUNC_ALTER;
    port_init_struct.PORT_MODE = PORT_MODE_DIGITAL;
    port_init_struct.PORT_PD = PORT_PD_DRIVER;
    port_init_struct.PORT_SPEED = PORT_SPEED_SLOW;
    port_init_struct.PORT_PULL_UP = PORT_PULL_UP_OFF;
    port_init_struct.PORT_PULL_DOWN = PORT_PULL_DOWN_OFF;
    PORT_Init(MDR_PORTC, &port_init_struct);

    /* Выбрали: CS0(_CE1) = 0, и CS1 (CE2) = 1   */
    //PORT_ResetBits(MDR_PORTE, PORT_Pin_12);
    //PORT_SetBits(MDR_PORTE, PORT_Pin_13);
}

/**
* Настройки параметров внешней памяти
*/
void ext_bus_mem_init(void)
{
    //    EXT_BUS_CNTRL->EXT_BUS_CONTROL = 0x00008002; 

    /* Enables the HSI clock for EBC control */// RST_CLK_PER_CLOCK_PCLK_EN_EXT_BUS_CNTRL - это тоже самое?
    RST_CLK_PCLKcmd(RST_CLK_PCLK_EBC, ENABLE);

    /* Initializes EBC_InitStruct by default values */
    EBC_StructInit(&EBC_InitStruct);

    /* Specifies external bus mode RAM */
    EBC_InitStruct.EBC_Mode = EBC_MODE_RAM;

    /* Calculates the Wait States number for 8 MHz frequency and time interval = 500 ns */
    EBC_InitStruct.EBC_WaitState = EBC_CalcWaitStates(8000, 500);

    /* Initializes the EBC peripheral registers */
    EBC_Init(&EBC_InitStruct);

    /* Inittializes the EBC memory region 0х60000000 */
    EBC_MemRegionStructInit(&EBC_MemRegionInitStruct);

    /* Initializes the EBC memory region  */
    EBC_MemRegionInit(&EBC_MemRegionInitStruct, EBC_MEM_REGION_60000000);

    /* Enables the specified EBC memory region settigs. */
    EBC_MemRegionCMD(EBC_MEM_REGION_60000000, ENABLE);

}


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 2017-авг-05 11:16 
Не в сети

Зарегистрирован: 2009-июл-21 14:13
Сообщения: 1011
Откуда: Тула
В одном из проектов 16-битная шина на ВЕ91 по сути настраивается так:
Код:
   MDR_RST_CLK->PER_CLOCK |= RST_CLK_PER_CLOCK_PCLK_EN_EXT_BUS_CNTRL;
   MDR_EBC->CONTROL = 0xF002; // max wait, RAM

плюс ноги и их тактирование, разумеется.
По Вашему коду пробежался - замечаний нет.
Проверяйте прямо на выводах м/с ОЗУ так ли приходят сигналы, как надо, обращайте внимание на полярность (~СЕ ~WE ~RD).

_________________
сочувствующий…


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 2017-авг-05 15:19 
Не в сети

Зарегистрирован: 2017-июл-24 10:16
Сообщения: 41
prostoRoman писал(а):
обращайте внимание на полярность (~СЕ ~WE ~RD).

а, кстати, есть возможность программно ее поменять?


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 2017-авг-08 14:17 
Не в сети

Зарегистрирован: 2017-июл-24 10:16
Сообщения: 41
поменял порты, выще забыл добавить ~WE и ~RD
шину EBC инициализирую такими значениями:
и выбираю регион 60000000
Код:
    MDR_EBC->CONTROL = 0xf002;// wait state = F +  RAM ON
    MDR_EBC->MEM_REGION[2] = 0x1b0f;


пытаюсь писать/читать - ничего
похоже в миландре даже не запускали плату памяти с платой ВЕ3


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 2017-авг-09 14:57 
Не в сети

Зарегистрирован: 2017-июл-24 10:16
Сообщения: 41
заработал модуль внешней памяти - моя ошибка была в том,
что я не затактировал порт PORTI которому нужно вызывать отдельную функцию
теперь все работает. с BE3


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 2017-сен-12 15:12 
Не в сети

Зарегистрирован: 2017-июл-24 10:16
Сообщения: 41
в соседней ветке писал что с внешней памятью были проблемы - писалось сразу
на 4 адреса подряд
посидел целый день с осциллографом, исправил ошибки - памя заработала
создаю пр компиляции большой массив
и записываю туда данные, потом читаю
внешняя память работает.
для отладочной платы BE3 ноги на плате памяти будут другие
сам для себя исправил в схематике обозначения выводов


Вложения:
Комментарий к файлу: Проект и схематик
ext_ram.rar [1.55 МБ]
Скачиваний: 13
Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 6 ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
Powered by phpBB® Forum Software © phpBB Group
Русская поддержка phpBB