Перейти к содержанию
    

Двунаправленная 8-битная шина на STM32

Здравствуйте!

Нужно реализовать подключение микросхемы к 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 — вход с прижатием к земле

 

post-77442-1403092412_thumb.png

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

ну по 2 направленной шине нельзя одновременно писать и читать. Остается все как обычно переключать ее с входа на выход в зависимости от режима....

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Микросхема, которую хотите подцепить управляется от этого же МК. Конфигурируете порт на выход - выставляете адрес, конфигурируете на вход - считываете данные. Использовать выход в режиме пуш-пулл, а вход высокоимпедансный.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

т.е. процедуру инициализации повторять каждый раз, что то типа этого

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(). Я правильно понимаю?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А FSMC на что дан!?

 

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

Если не будете использовать ублюдочную библиотеку, как обезьяна, а изучите регистры по Reference Manual, то все окажется намного проще.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Если не будете использовать ублюдочную библиотеку, как обезьяна, а изучите регистры по Reference Manual, то все окажется намного проще.

:biggrin: :a14:

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

жду совета писать в хексе в блокнот и сохранять *.bin

 

скорее всего по FSMC вы имеете ввиду этот режим?

post-77442-1403097875_thumb.png

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

жду совета писать в хексе в блокнот и сохранять *.bin

Не получится, стандартный блокнот не принимает alt комбинации, точнее не правильно сохраняет.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

жду совета писать в хексе в блокнот и сохранять *.bin
Простите, но использование конкретно этой библиотеки сродни отправки по электронной почте вордовского файла, в который вложена картинка скана распечатанной фотографии.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

это была шутка, можно расслабиться.

FSMC вроде есть, во всяком случае ничего о том что он отсутствует не написано (RM0008)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

это была шутка, можно расслабиться.

FSMC вроде есть, во всяком случае ничего о том что он отсутствует не написано (RM0008)

Это мануаль, а не даташит.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

нашел, и правда видимо нет.

 

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.

 

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

 

В F107 FSMC нету. Только ногодрыг. Или другой проц.

 

а что вы имеете ввиду под "ногодрыг"?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...