Форум РадиоКот https://radiokot.ru/forum/ |
|
Параллельная шина в STM32F4 https://radiokot.ru/forum/viewtopic.php?f=59&t=132770 |
Страница 1 из 1 |
Автор: | Kirra [ Чт июн 23, 2016 00:07:58 ] | ||
Заголовок сообщения: | Параллельная шина в STM32F4 | ||
Вообщем, есть такая штука, как российская DDS 1508ПЛ8Т. Она умеет подключаться к микроконтроллеру либо по SPI, либо по 16-разрядной параллельной шине. Я хочу подключить её через параллельную шину к STM32F427, или к STM32F407. Конфигурация DDS состоит в записи необходимых данных в регистры DDS. На рисунке набросал его алгоритм. В двух словах, есть 16-разрядов данных со стандартными стробами чтения (RDn) и записи (WRn), бит выбора кристалла CSn и бит ADR (который определяет, что именно передается, адрес или данные). ![]() Запись в регистр DDS происходит в два этапа: сначала в шину записывается адрес интересующего нас регистра, потом записываются данные. Биты DATA[0..15] подключаются к шине данных микроконтроллера, а бит ADR подключается к одному из битов адреса микроконтроллера (например к биту ADDRESS0). Тогда, если, например, адресное пространство шины отображается на 0x50000000 запись адреса и запись данных будет такое. Значение 0x50000000 я взял из российского МК, в STM32F4 наверняка оно другое. Т.е. поставили ADR в 0, и данные на шине - это адрес регистра, поставили ADR в 1, данные с шины идут а регистр, адрес которого мы записали перед этим. Вообщем, примерно такой вот код. Код: (*(volatile uint16_t *)0x50000000) = address; (*(volatile uint16_t *)0x50000001) = data; Вопрос вот в чём. Хочу подключить также к аппаратной внешней шине STM32F407. Открыл STMCube, выбрал примерно так ![]() Верно ли выбрал, что это модуль FSMC? но в STM32F427 нет FSMC, а есть FMC (который похоже более продвинутый) ![]() В нём выбрал, что DDS это SRAM и он предложил использовать такие пины. Вообщем, хочу спросить совета опытных товарищей: верно ли подключил DDS к STM32F407 и STM32F427, при учёты описанный выше специфики работы? И вообще, заработает ли такая связка (STM32 + 1508ПЛ8)?
|
Автор: | Kirra [ Чт июн 23, 2016 20:14:47 ] |
Заголовок сообщения: | Re: Параллельная шина в STM32F4 |
Вообщем, немного подумал, и пришёл вот к чему. По большому счёту, c этой DDS идет работа, как с обычной статической RAM, только у которой всего два адреса (один для адресов, другой для регистров). Поэтому, судя по тому, что мне дал гугль, у STM32F407 есть для этих целей FSMC, а в STM32F427 есть FMC. И то, и другое можно использовать для моих целей (по крайней мере я так думаю). Только в 100-выводных корпусах не выведены младшие биты адреса, но это не проблема, т.к. можно заюзать любой другой бит адреса, благо он нужен лишь один. Поэтому смысл ставить 144-ногую микросхему нет смысла. И если, к примеру, я возьму бит ADDRESS18 (PD13), то код получится примерно такой вот. Код: #define ADDRESS (*((volatile uint16_t *) 0x60000000)) // ADR = 0 #define DATA (*((volatile uint16_t *) 0x60040000)) // ADR = 1 /** И тут записываем в DDS что хотим */ ADDRESS = 0x0001; DATA = 0xFFFF; Но это надо проверить. На днях попробую сваять франкенштейна из припаянной 1508 к STM32F4Discavery и отпишусь о результатах:) |
Автор: | Albert_V [ Пт июн 24, 2016 19:22:19 ] |
Заголовок сообщения: | Re: Параллельная шина в STM32F4 |
Имеет ли смысл делать такую связку? Дело в том, что придётся ещё на шину ставить преобразователи уровней, поскольку у 1508ПЛ8Т питание 5V и, соответственно, уровень логической "1" не менее 4V. ---------- ИЗВИНЯЮСЬ!!!!! Это у 1508ПЛ7 5V. У 1508ПЛ8Т питание 1,8/3,3V |
Автор: | Kirra [ Сб июн 25, 2016 18:54:00 ] |
Заголовок сообщения: | Re: Параллельная шина в STM32F4 |
Albert_V писал(а): Дело в том, что придётся ещё на шину ставить преобразователи уровней, поскольку у 1508ПЛ8Т питание 5V и, соответственно, уровень логической "1" не менее 4V. Возможно, что вы путаете 1508ПЛ8Т с чем-то другим. У 1508ПЛ8Т всего 4 питания: +3,3В цифровое, +3,3В аналоговое, +1,8В питание вычислительного ядра и +1,8В аналоговое питание ЦАП. Преобразователи не нужны. Уже реализовывал проекты с ней (только в качестве микроконтроллеров были 1986ВЕ94Т и 1986ВЕ1Т), всё работало без проблем. На этой неделе не успел спаять франкенштейна STM32+1508ПЛ8Т, если на след недели успею, то отпишусь P.S. Извиняюсь, сразу не заметил (подумал что это подпись, вчерашнее пиво даёт о себе знать ![]() Albert_V писал(а): ИЗВИНЯЮСЬ!!!!!
Это у 1508ПЛ7 5V. У 1508ПЛ8Т питание 1,8/3,3V |
Страница 1 из 1 | Часовой пояс: UTC + 3 часа |
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group http://www.phpbb.com/ |