Кто любит RISC в жизни, заходим, не стесняемся.
Ответить

Как настроить выходы на STM32F103C6T6 открытым коллектором?

Сб ноя 24, 2018 13:51:31

Как настроить выходы PB6 и PB7 на STM32F103C6T6 в режим открытого коллектора (к земле) с подтяжкой внешними
резисторами к + питания ?

Так правильно?:

настройка:
Код:
GPIO_InitTypeDef  GPIO_InitStructure;

RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);   //включаем тактирование

GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0 | GPIO_Pin_1;  //светодиоды D1 b D2
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; //обычный выход
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOB, &GPIO_InitStructure);
   
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6 | GPIO_Pin_7;  //софтварная I2C
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_OD;   //?
GPIO_Init(GPIOB, &GPIO_InitStructure);


Посылка сигнала:
Код:
GPIO_SetBits(GPIOB, GPIO_Pin_6); //высокий уровень 
GPIO_ResetBits(GPIOB, GPIO_Pin_6);//низкий уровень


Приём сигнала:
Код:
bool r_bit = (GPIO_ReadInputDataBit(GPIOB, GPIO_Pin_7));


Чем нужно заменить GPIO_Mode_AF_OD для варианта с внутренними резисторами подтяжки?

Re: Как настроить выходы на STM32F103C6T6 открытым коллектор

Сб ноя 24, 2018 14:00:13

GPIO_NOPULL , GPIO_MODE_OUTPUT_OD ?

Re: Как настроить выходы на STM32F103C6T6 открытым коллектор

Сб ноя 24, 2018 14:04:13

Чем нужно заменить GPIO_Mode_AF_OD для варианта с внутренними резисторами подтяжки?

Ничем, на F1 такого режима нет.

Re: Как настроить выходы на STM32F103C6T6 открытым коллектор

Сб ноя 24, 2018 14:33:53

Я пока использую STM32F10x_StdPeriph_Lib_V3.5.0 по моему могут быть только такие варианты (или ещё какие?):

GPIO_Mode – задает режим работи пинов. Может принимать следующие значения:

GPIO_Mode_AIN — аналоговый вход;
GPIO_Mode_IN_FLOATING — вход без подтяжки (Float)
GPIO_Mode_IPD — вход с подтяжкой к земле (Pull-down)
GPIO_Mode_IPU — вход с подтяжкой к питанию (Pull-up)
GPIO_Mode_Out_OD — выход с открытым стоком (Open Drain)
GPIO_Mode_Out_PP — выход с двумя состояниями (Push-Pull)
GPIO_Mode_AF_OD — выход с открытым стоком для альтернативных функций (Alternate Function). Используется когда выводы управляются периферией, которая может быть задействована на этом выводе. Например USART, I2C и тому подобное.
GPIO_Mode_AF_PP — то же что и перед этим, но с двумя состояниями.


Нужно выбрать из этого.

Re: Как настроить выходы на STM32F103C6T6 открытым коллектор

Сб ноя 24, 2018 14:37:15

Чем нужно заменить GPIO_Mode_AF_OD для варианта с внутренними резисторами подтяжки?

Ничем, на F1 такого режима нет.


Щта?
Вот сейчас открыл Reference Manual на STM32F103.
А там вот:
Буфер обмена01.jpg
(133.94 KiB) Скачиваний: 123


> In output mode (MODE[1:0] > 00):
00: General purpose output push-pull
01: General purpose output Open-drain <-
10: Alternate function output Push-pull
11: Alternate function output Open-drain <-


MODEy[1:0]: Port x mode bits (y= 0 .. 7)
These bits are written by software to configure the corresponding I/O port.
Refer to Table 20: Port bit configuration table.
00: Input mode (reset state)
01: Output mode, max speed 10 MHz.
10: Output mode, max speed 2 MHz.
11: Output mode, max speed 50 MHz.

Получаем:
[1101] -> 0x0D = GPIO Open-Drain 50MHz
[1111] -> 0x0F = GPIO Alternate Open-Drain 50MHz

Re: Как настроить выходы на STM32F103C6T6 открытым коллектор

Сб ноя 24, 2018 14:39:13

Получаем:
[1101] -> 0x0D = GPIO Open-Drain 50MHz
[1111] -> 0x0F = GPIO Alternate Open-Drain 50MHz

Встроенные подтяжки где?

Re: Как настроить выходы на STM32F103C6T6 открытым коллектор

Сб ноя 24, 2018 14:42:12

GPIO_Mode_AF_OD, пуллапы в любом случае внешние, внутренние для i2c не катят...

Re: Как настроить выходы на STM32F103C6T6 открытым коллектор

Сб ноя 24, 2018 14:47:39

Чем нужно заменить GPIO_Mode_AF_OD для варианта с внутренними резисторами подтяжки?


Это не для работы с шиной I2C это я просто для общего развития спрашиваю.

Re: Как настроить выходы на STM32F103C6T6 открытым коллектор

Сб ноя 24, 2018 14:50:45

DENIS451, без разницы , внутренние пуллапы только для кнопок и энкодера годятся даже если они присутствуют...

Re: Как настроить выходы на STM32F103C6T6 открытым коллектор

Сб ноя 24, 2018 14:51:52

DENIS451 писал(а):GPIO_Mode_Out_OD — выход с открытым стоком (Open Drain)
В чем разница между открытым стоком и открытым коллектором кроме типа транзистора?

Re: Как настроить выходы на STM32F103C6T6 открытым коллектор

Сб ноя 24, 2018 14:57:49

"Открытый коллектор" это я по привычке написал, я знаю что там на самом деле полевые транзисторы.

Добавлено after 4 minutes 18 seconds:
Re: Как настроить выходы на STM32F103C6T6 открытым коллектором?
GPIO_Mode_AF_OD, пуллапы в любом случае внешние, внутренние для i2c не катят...


Ок, а код для посылки битов и считывания правильный?

Провильная ли вообще последовательность кода, я ведь на порту B ещё обычные выходы для светодиодов включаю,
с другими настройками?

Re: Как настроить выходы на STM32F103C6T6 открытым коллектор

Сб ноя 24, 2018 15:04:08

Код:
GPIOB->BSRR  =  GPIO_BSRR_BS6;
GPIOB->BSRR   =  GPIO_BSRR_BR6;

GPIOB->ODR |=GPIO_ODR_ODR6;
GPIOB->ODR &=~GPIO_ODR_ODR6;

bool r_bit=GPIOB->IDR & GPIO_IDR_IDR7 ;


хоть bool и редкость ...

Re: Как настроить выходы на STM32F103C6T6 открытым коллектор

Сб ноя 24, 2018 16:42:29

Спасибо, буду проверять.

Re: Как настроить выходы на STM32F103C6T6 открытым коллектор

Пн ноя 26, 2018 23:55:51

Ничем, на F1 такого режима нет.
Щта?
Вот сейчас открыл Reference Manual на STM32F103.
А там вот:
Вложение Буфер%20обмена01.jpg больше недоступно.
В F103 нет, сам столкнулся при переносе кода с F303. Паяйте резистор.
output GPIO.png
(98.33 KiB) Скачиваний: 424
Ответить