Easyelectronics.ru

Электроника для всех
Текущее время: 23 июл 2018, 05:27

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



    • JLCPCB - Платы прототипов всего за 2$ c бесплатной доставкой (при первом заказе)
    • 10 PCBs за $2 для 2 слоев, $15 для 4 слойной, $74 для 6 слойной платы.
    • Крупнейший китайский производитель прототипных плат. 290000+ клиентов & 8000+ заказов в день!
    • LCSC - Крупнейший китайский онлайн магазин радиодеталей.

Начать новую тему Ответить на тему  [ Сообщений: 5 ] 
Автор Сообщение
 Заголовок сообщения: STM8S и назначение альтернативных функций GPIO? [РЕШЕНО]
СообщениеДобавлено: 26 дек 2017, 20:42 
Заглядывает иногда

Зарегистрирован: 19 июн 2013, 16:35
Сообщения: 41
Дело в том, что как минимум i2c в процессоре STM8S105C6T6 (STM8S-DISCOVERY) имеет два альтернативных варианта ножек, то есть (см. вложение) сигналы могут быть выданы на порт В или на порт Е.

По умолчанию все отлично работает с портом Е, а если мне нужно что бы i2c было на порту В? в STM32 это делалось ремепингом портов, и назначением ему альтернативной функции. Тут же все что есть в документации, это:
Цитата:
Alternate function input
Some I/Os can be used as alternate function input. For example as the port may be used as
the input capture input to a timer. Alternate function inputs are not selected automatically,
you select them by writing to a control bit in the registers of the corresponding peripheral
.
For Alternate Function input, you should select floating or pull-up input configuration in the
DDR and CR1 registers.


В общем как заставить работать i2c через порт В я так и не понял... что за "control bit in the registers of the corresponding peripheral"?


Вложения:
i2c.jpg
i2c.jpg [ 32.77 Кб | Просмотров: 1006 ]


Последний раз редактировалось zwitch 28 дек 2017, 18:52, всего редактировалось 1 раз.
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: STM8S и назначение альтернативных функций GPIO?
СообщениеДобавлено: 26 дек 2017, 21:30 
Заглядывает иногда

Зарегистрирован: 04 окт 2017, 22:23
Сообщения: 62
Посмотрите на такую интересную штуку, как option byte......


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: STM8S и назначение альтернативных функций GPIO?
СообщениеДобавлено: 27 дек 2017, 01:53 
Старожил

Зарегистрирован: 23 дек 2012, 16:46
Сообщения: 297
Откуда: Новый Уренгой
нужно делать ремап на альтернативную функцию, например, с помощью программы ST Visual Programmer
но ремапить I2C надо осторожно, т.к. настоящий открытый коллектор имеют только дефолтные ноги.

_________________
vk.com/casusnur


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: STM8S и назначение альтернативных функций GPIO?
СообщениеДобавлено: 27 дек 2017, 11:49 
Старожил

Зарегистрирован: 26 ноя 2012, 10:28
Сообщения: 2516
Откуда: КЧР, поселок Нижний Архыз
Какой, нафиг, "вижуал", когда все элементарно делается!
Скажем, вот так ремапится I2C на STM8S105:
Код:
U8 unlock_EEPROM(){
   // unlock memory
   FLASH_DUKR = EEPROM_KEY1;
   FLASH_DUKR = EEPROM_KEY2;
   // check bit DUL=1 in FLASH_IAPSR
   if(!(FLASH_IAPSR & 0x08))
      return 0;
   return 1;
}

void lock_EEPROM(){
   while(!(FLASH_IAPSR & 0x04)); // wait till end
   // clear DUL to lock write
   FLASH_IAPSR &= ~0x08;
}

/**
* check OPT2 bit AFR6 for I2C remapping to PB4/PB5
*/
U8 opt2_default_setup(){
   U8 ret = 0;
   U8 val = OPT2 | 0x40;
   if(OPT2 & 0x40) return 0;
   disableInterrupts();
   FLASH_CR2 = 0x80; // enable write OPT
   FLASH_NCR2 = ~0x80;
   if(!unlock_EEPROM()){ret = 1; goto out;}
   if(!(FLASH_CR2 & 0x80)){ret = 3; goto out;}
   // set AFR6 in OPT2 & reset in NOPT2
   OPT2 = val;
   NOPT2 = ~val;
   lock_EEPROM();
   FLASH_CR2 &= ~0x80; // disable write OPT
   FLASH_NCR2 |= 0x80;
   ret = 2;
out:
   enableInterrupts();
   return ret;
}


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: STM8S и назначение альтернативных функций GPIO?
СообщениеДобавлено: 27 дек 2017, 13:47 
Заглядывает иногда

Зарегистрирован: 19 июн 2013, 16:35
Сообщения: 41
casus писал(а):
нужно делать ремап на альтернативную функцию, например, с помощью программы ST Visual Programmer
но ремапить I2C надо осторожно, т.к. настоящий открытый коллектор имеют только дефолтные ноги.

самое забавное, что по умолчанию когда в CubeMX активируешь i2c, то подствечиваются как дефолтные именно PB4/PB5 )

Eddy_Em писал(а):
Скажем, вот так ремапится I2C на STM8S105
СПАСИБО!

radioslon писал(а):
Посмотрите на такую интересную штуку, как option byte......
Ох, забыл я про это совсем! Отвык я от PIC и STM8 совсем, с их конфигурационными словами, разбаловали меня за последние 6 лет STM32 )

Всем спасибо, коллеги, с вашей помощью решил проблему! Осталось загадкой, почему по умолчанию STM8CubeMX подсвечивает именно порт "В" для i2c а не "Е"...


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 5 ] 

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


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

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


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

Найти:
Перейти:  

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB