Например TDA7294

Форум РадиоКот :: Просмотр темы - Параллельная шина в STM32F4
Форум РадиоКот
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)?

Вложения:
Комментарий к файлу: Картинки в хорошем качестве
Documents.rar [674.86 KiB]
Скачиваний: 200

Автор:  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/