STM32f103 использование портов I2C

Приветствую всех!
Как известно, в STM32 имеется 3 таких порта, но куда ни сунься - везде тычутся в РВ6-РВ7. Причем, в некоторых статьях рассуждают о таких высоких материях, что глаза на лоб… при этом не изображая простейшей схемы.
Короче, нигде так и не нашел ответов на 2 вопроса:

  1. Почем РВ6, РВ8 / РВ7, РВ9 обозначены на всех картинках одинаково как SCL1 / SDA1 ?
  2. Если я хочу сохранить ШИМ-контакты и подключить I2C-дисплейчик к ножкам РВ10 / РВ11, КАК ОБЪЯСНИТЬ ЭТО СКЕТЧУ (программе)???
    Благодарю за внимание!
    PS Кстати, внутри библиотек про I2C я (TotalCommander) не нашёл буквов “SDA” || “SCL”

В F103 - только два

потому что это один и тот же порт, а пины можно использовать либо одну пару, либо другую.

зависит от пакета, в котором вы работаете. Нужно инициализировать обьект Wire2 и потом использовать его в коде вместо Wire.
Кстати, хочу предупредить, что большинство ардуино библиотек могут работать только с первой шиной, для использования второй придется править код.

если вы хотите сохранить ШИМ выходы, нелогично использовать PB10 PB11 - это тоже ШИМ

// Bluepill USB connector on the top, MCU side - Blackpill USB connector on bottom, MCU Side  (pins are reversed vertically for Arduino Analog pin correct sequence.
// Left Side
#define PB9                     0
#define PB8                     1
#define PB7                     2
#define PB6                     3
#define PB5                     4
#define PB4                     5
#define PB3                     6
#define PA15                    7
#define PA12                    8  // USB DP
#define PA11                    9  // USB DM
#define PA10                    10
#define PA9                     11
#define PA8                     12
#define PB15                    13
#define PB14                    14
#define PB13                    15
#define PB12                    16 // LED Blackpill
// Right side
#define PC13                    17 // LED Bluepill
#define PC14                    18
#define PC15                    19
#define PA0                     PIN_A0
#define PA1                     PIN_A1
#define PA2                     PIN_A2
#define PA3                     PIN_A3
#define PA4                     PIN_A4
#define PA5                     PIN_A5
#define PA6                     PIN_A6
#define PA7                     PIN_A7
#define PB0                     PIN_A8
#define PB1                     PIN_A9
#define PB10                    30
#define PB11                    31
// Other
#define PB2                     32 // BOOT1
#define PA13                    33 // SWDI0
#define PA14                    34 // SWCLK

// Alternate pins number
#define PA0_ALT1                (PA0  | ALT1)
#define PA1_ALT1                (PA1  | ALT1)
#define PA2_ALT1                (PA2  | ALT1)
#define PA3_ALT1                (PA3  | ALT1)
#define PA4_ALT1                (PA4  | ALT1)
#define PA5_ALT1                (PA5  | ALT1)
#define PA6_ALT1                (PA6  | ALT1)
#define PA7_ALT1                (PA7  | ALT1)
#define PA8_ALT1                (PA8  | ALT1)
#define PA9_ALT1                (PA9  | ALT1)
#define PA10_ALT1               (PA10 | ALT1)
#define PA11_ALT1               (PA11 | ALT1)
#define PA15_ALT1               (PA15 | ALT1)
#define PB0_ALT1                (PB0  | ALT1)
#define PB0_ALT2                (PB0  | ALT2)
#define PB1_ALT1                (PB1  | ALT1)
#define PB1_ALT2                (PB1  | ALT2)
#define PB3_ALT1                (PB3  | ALT1)
#define PB10_ALT1               (PB10 | ALT1)
#define PB11_ALT1               (PB11 | ALT1)
#define PB13_ALT1               (PB13 | ALT1)
#define PB14_ALT1               (PB14 | ALT1)

#define NUM_DIGITAL_PINS        35
#define NUM_ANALOG_INPUTS       10

// On-board LED pin number
#if defined(ARDUINO_BLUEPILL_F103CB) || defined(ARDUINO_BLUEPILL_F103C8)
  #define LED_GREEN             PC13
#else
  // Default for Blackpill
  #define LED_GREEN             PB12
#endif
#ifndef LED_BUILTIN
  #define LED_BUILTIN           LED_GREEN
#endif

// On-board user button
#ifndef USER_BTN
  #define USER_BTN              PNUM_NOT_DEFINED
#endif

// SPI definitions
#ifndef PIN_SPI_SS
  #define PIN_SPI_SS            PA4
#endif
#ifndef PIN_SPI_MOSI
  #define PIN_SPI_MOSI          PA7
#endif
#ifndef PIN_SPI_MISO
  #define PIN_SPI_MISO          PA6
#endif
#ifndef PIN_SPI_SCK
  #define PIN_SPI_SCK           PA5
#endif

// I2C definitions
#ifndef PIN_WIRE_SDA
  #define PIN_WIRE_SDA          PB7
#endif
#ifndef PIN_WIRE_SCL
  #define PIN_WIRE_SCL          PB6
#endif

// Timer Definitions
// Use TIM6/TIM7 when possible as servo and tone don't need GPIO output pin
#ifndef TIMER_TONE
  #define TIMER_TONE            TIM3
#endif
#ifndef TIMER_SERVO
  #define TIMER_SERVO           TIM2
#endif

// UART Definitions
#ifndef SERIAL_UART_INSTANCE
  #define SERIAL_UART_INSTANCE  1
#endif

// Default pin used for generic 'Serial' instance
// Mandatory for Firmata
#ifndef PIN_SERIAL_RX
  #define PIN_SERIAL_RX         PA10
#endif
#ifndef PIN_SERIAL_TX
  #define PIN_SERIAL_TX         PA9
#endif

/*----------------------------------------------------------------------------
 *        Arduino objects - C++ only
 *----------------------------------------------------------------------------*/

#ifdef __cplusplus
  // These serial port names are intended to allow libraries and architecture-neutral
  // sketches to automatically default to the correct port name for a particular type
  // of use.  For example, a GPS module would normally connect to SERIAL_PORT_HARDWARE_OPEN,
  // the first hardware serial port whose RX/TX pins are not dedicated to another use.
  //
  // SERIAL_PORT_MONITOR        Port which normally prints to the Arduino Serial Monitor
  //
  // SERIAL_PORT_USBVIRTUAL     Port which is USB virtual serial
  //
  // SERIAL_PORT_LINUXBRIDGE    Port which connects to a Linux system via Bridge library
  //
  // SERIAL_PORT_HARDWARE       Hardware serial port, physical RX & TX pins.
  //
  // SERIAL_PORT_HARDWARE_OPEN  Hardware serial ports which are open for use.  Their RX & TX
  //                            pins are NOT connected to anything by default.
  #ifndef SERIAL_PORT_MONITOR
    #define SERIAL_PORT_MONITOR   Serial
  #endif
  #ifndef SERIAL_PORT_HARDWARE
    #define SERIAL_PORT_HARDWARE  Serial1
  #endif
#endif


Это не от блюпила, у блюпила нет Таймеров 6 и 7

да, прокосячил, делал сразу аж три дела, ПОПРАВИЛ
прописаны только эти порты под I2C

// I2C definitions
#ifndef PIN_WIRE_SDA
  #define PIN_WIRE_SDA          PB7
#endif
#ifndef PIN_WIRE_SCL
  #define PIN_WIRE_SCL          PB6
#endif

// Timer Definitions
// Use TIM6/TIM7 when possible as servo and tone don't need GPIO output pin
#ifndef TIMER_TONE
  #define TIMER_TONE            TIM3
#endif
#ifndef TIMER_SERVO
  #define TIMER_SERVO           TIM2
#endif

// UART Definitions
#ifndef SERIAL_UART_INSTANCE
  #define SERIAL_UART_INSTANCE  1
#endif

// Default pin used for generic 'Serial' instance
// Mandatory for Firmata
#ifndef PIN_SERIAL_RX
  #define PIN_SERIAL_RX         PA10
#endif
#ifndef PIN_SERIAL_TX
  #define PIN_SERIAL_TX         PA9
#endi

откуда это?

Они только толерантны к +5V

из аддона конечно

Мне стыдно за мою серость, но с чем это едят?..

если у вас пин в режиме выхода - какая нафик разница, толерантен он к 5в или нет?
И вообще, нетолерантность относится только к режиму аналогового входа.

это определение твоих портов в IDE для блюпила

берешь пример с новичков, как сказать так чтоб на самом деле ничего не сказать?
Какого файла из какого аддона, ссылку, имя файла…

Картинку СТМ с легендой посмотрите… и аналоговые входы зелёненькие.

ну ёшкин пистолет, куда ставил поддержку плат STM там и лежит, у меня тут:
D:\ARDUINO\arduino-1.8.19\portable\packages\STMicroelectronics\hardware\stm32\2.7.1\variants\STM32F1xx

А можно для чайника (меня) на конкретном примере?
Дисплейчик “маде ин Шанхай” с 4-мя ножками и текст:
{byte four=2*2 ;
// инициируем всю эту канитель и выводим
(“two x two equel”, four) ;// ибо кириллики не ожидаю

А то что аддонов больше одного, ты не догадываешься?

покажите. У меня все красненькие

в 1.8.19 будет видно только один, а вот в 2.х.х да, можно несколько поставить, но лежать они будут по другому пути


а красненькое питание…

Вы какое “зелененькое” имеете в виду?
Толерантность пина к 5в на вашей схеме обозначается не цветом, а закрашенной точкой, а нетолерантность - пустой.
Я вам специально выделил, куда смотреть - все аналоговые пины не толерантны.

Screenshot from 2024-01-16 18-00-33