Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Двунаправленная 8-битная шина на STM32
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > ARM
Balabes
Здравствуйте!
Нужно реализовать подключение микросхемы к STM32F107VC6 тут двунаправленная 8-битная шина используется, а вот ноги МК похоже не умеют так работать. Подскажите глупому как быть.

GPIO_Mode_Out_PP — выход push-pull
GPIO_Mode_Out_OD — выход open-drain
GPIO_Mode_AF_PP — альтернативная функция, push-pull
GPIO_Mode_AF_OD — альтернативная функция, open-drain
GPIO_Mode_AIN — аналоговый высокоимпендансный вход
GPIO_Mode_IN_FLOATING — высокоимпендансный
GPIO_Mode_IPU — вход с подтяжкой к питанию
GPIO_Mode_IPD — вход с прижатием к земле

Нажмите для просмотра прикрепленного файла
Golikov A.
ну по 2 направленной шине нельзя одновременно писать и читать. Остается все как обычно переключать ее с входа на выход в зависимости от режима....
MSprut
Микросхема, которую хотите подцепить управляется от этого же МК. Конфигурируете порт на выход - выставляете адрес, конфигурируете на вход - считываете данные. Использовать выход в режиме пуш-пулл, а вход высокоимпедансный.
Balabes
т.е. процедуру инициализации повторять каждый раз, что то типа этого
Код
void toIN (void)
{
        GPIO_InitTypeDef         PE_config;

    PE_config.GPIO_Pin = GPIO_Pin_0 | GPIO_Pin_1 | GPIO_Pin_2  | GPIO_Pin_3  | GPIO_Pin_4  | GPIO_Pin_5  | GPIO_Pin_6  | GPIO_Pin_7;
    PE_config.GPIO_Mode = GPIO_Mode_IN_FLOATING;
    PE_config.GPIO_Speed = GPIO_Speed_2MHz;
        GPIO_Init(GPIOE, &PE_config);
}

void toOUT (void)
{
        GPIO_InitTypeDef         PE_config;

    PE_config.GPIO_Pin = GPIO_Pin_0 | GPIO_Pin_1 | GPIO_Pin_2  | GPIO_Pin_3  | GPIO_Pin_4  | GPIO_Pin_5  | GPIO_Pin_6  | GPIO_Pin_7;
    PE_config.GPIO_Mode = GPIO_Mode_Out_PP;
    PE_config.GPIO_Speed = GPIO_Speed_2MHz;
        GPIO_Init(GPIOE, &PE_config);
}


и каждый раз вызывать соответствующую функцию перед тем как использовать GPIO_ReadInputDataBit() и GPIO_WriteBit(). Я правильно понимаю?
ViKo
А FSMC на что дан!?

Цитата(Balabes @ Jun 18 2014, 15:18) *
и каждый раз вызывать соответствующую функцию перед тем как использовать GPIO_ReadInputDataBit() и GPIO_WriteBit(). Я правильно понимаю?

Если не будете использовать ублюдочную библиотеку, как обезьяна, а изучите регистры по Reference Manual, то все окажется намного проще.
jcxz
Цитата(ViKo @ Jun 18 2014, 18:49) *
Если не будете использовать ублюдочную библиотеку, как обезьяна, а изучите регистры по Reference Manual, то все окажется намного проще.

biggrin.gif a14.gif
adnega
+1 за FSMC
Balabes
жду совета писать в хексе в блокнот и сохранять *.bin

скорее всего по FSMC вы имеете ввиду этот режим?
Нажмите для просмотра прикрепленного файла
Lagman
Цитата(Balabes @ Jun 18 2014, 17:25) *
жду совета писать в хексе в блокнот и сохранять *.bin

Не получится, стандартный блокнот не принимает alt комбинации, точнее не правильно сохраняет.
A. Fig Lee
Цитата(adnega @ Jun 18 2014, 09:22) *
+1 за FSMC

А он в ней есть?
hd44780
В F107 FSMC нету. Только ногодрыг. Или другой проц.
Сергей Борщ
Цитата(Balabes @ Jun 18 2014, 16:25) *
жду совета писать в хексе в блокнот и сохранять *.bin
Простите, но использование конкретно этой библиотеки сродни отправки по электронной почте вордовского файла, в который вложена картинка скана распечатанной фотографии.
Balabes
это была шутка, можно расслабиться.
FSMC вроде есть, во всяком случае ничего о том что он отсутствует не написано (RM0008)
A. Fig Lee
Цитата(Balabes @ Jun 18 2014, 15:42) *
это была шутка, можно расслабиться.
FSMC вроде есть, во всяком случае ничего о том что он отсутствует не написано (RM0008)

Это мануаль, а не даташит.
Balabes
нашел, и правда видимо нет.

Low-density devices are STM32F101xx, STM32F102xx and STM32F103xx
microcontrollers where the Flash memory density ranges between 16 and 32 Kbytes.
Medium-density devices are STM32F101xx and STM32F103xx microcontrollers where
the Flash memory density ranges between 32 and 128 Kbytes.
High-density devices are STM32F101xx and STM32F103xx microcontrollers where the
Flash memory density ranges between 256 and 512 Kbytes.
XL-density devices are STM32F101xx and STM32F103xx microcontrollers where the
Flash memory density ranges between 768 Kbytes and 1 Mbyte.
Connectivity line devices are STM32F105xx and STM32F107xx microcontrollers.

This section applies to high-density and XL-density devices only.


И что ученые мужи посоветуют в этой ситуации?

Цитата(hd44780 @ Jun 18 2014, 19:10) *
В F107 FSMC нету. Только ногодрыг. Или другой проц.


а что вы имеете ввиду под "ногодрыг"?
adnega
Цитата(Balabes @ Jun 19 2014, 09:31) *
И что ученые мужи посоветуют в этой ситуации?
а что вы имеете ввиду под "ногодрыг"?

1. Заменить процессор на по-новее с FSMC (типа 407).
2. Если скорость обмена высокая не нужна и обмен не частый, то эмулировать интерфейс памяти - "ногодрыг". Т.е. программно переключать GPIO в соответствии с диаграммой.
jcxz
Цитата(adnega @ Jun 19 2014, 12:13) *
Т.е. программно переключать GPIO в соответствии с диаграммой.

Как вариант - использовать связку: TIMER+DMA+GPIO.
Balabes
на сколько известно скорость усартовская 9600-115200, так что ногодрыга должно хватить
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.