CH32V переключение состояния GPIO с UART и обратно

Если ваш вопрос не влез ни в одну из вышеперечисленных тем, вам сюда.
Ответить
Открыл глаза
Сообщения: 43
Зарегистрирован: Ср дек 25, 2019 23:41:33

Сообщение dmitrij999 »

Доброго времени суток!

Необходимо сформировать в UART сигнал BREAK определенной длины (не менее 176 мкс, для передачи по DMX и ответа по RDM).
Делаю следующим образом:

Код: Выделить всё

USART_Cmd(_USARTx, DISABLE);
_GPIO_Port->CFGLR &= ~(1<<22);                      // Set GPIO Pin 2 as GPIO output OD
GPIO_SetBits(_GPIO_Port, GPIO_Pin_2);           // Set GPIO Pin 2 to 0 within 180 us
delay_us(180);
GPIO_ResetBits(_GPIO_Port, GPIO_Pin_2);           // Set GPIO Pin 2 to 1
delay_us(40);
_GPIO_Port->CFGLR |= (1<<22);                       // and set back to USART out
USART_Cmd(_USARTx, ENABLE);
Однако по логическому анализатору перед посылкой нет никакого BREAK
Как могу изменить режим GPIO на лету, кроме как деинициировать порт целиком?
_USARTx указывает на USART2, а _GPIO_Port на GPIOA
Реклама
Открыл глаза
Сообщения: 43
Зарегистрирован: Ср дек 25, 2019 23:41:33

Сообщение dmitrij999 »

Пока в качестве обходного варианта подключил еще один пин, сконфигурированный на выход типа "открытый сток" и через него формирую BREAK
Реклама
Друг Кота
Аватара пользователя
Сообщения: 5802
Зарегистрирован: Ср ноя 11, 2009 17:19:30
Откуда: Воронеж

Сообщение >TEHb< »

Там есть регистр AFR?
GPIO_SetBits разве устанавливает ноль, а не единицу?
Усложнять просто. Упрощать сложно.
Контактная информация:
Открыл глаза
Сообщения: 43
Зарегистрирован: Ср дек 25, 2019 23:41:33

Сообщение dmitrij999 »

Там есть регистр AFR?
Регистр ремапа? Нет, но есть AFIO
GPIO_SetBits разве устанавливает ноль, а не единицу?
Как бы там ни было, реакции на логическом анализаторе не видел
Реклама
Эиком - электронные компоненты и радиодетали
Друг Кота
Аватара пользователя
Сообщения: 5802
Зарегистрирован: Ср ноя 11, 2009 17:19:30
Откуда: Воронеж

Сообщение >TEHb< »

Смысл в том, что сама система GPIO может не подключаться к физической ножке. То есть функцию порта надо переназначать.
Усложнять просто. Упрощать сложно.
Контактная информация:
Реклама
Открыл глаза
Сообщения: 43
Зарегистрирован: Ср дек 25, 2019 23:41:33

Сообщение dmitrij999 »

То есть функцию порта надо переназначать.
Получается, что функцию пина переназначаю.
Дело в том, что на пине PA2 по умолчанию сидит USART2, а я хотел бы иметь возможность переназначить с AF_PP на Out_OD и обратно
Реклама
Ответить

Вернуться в «Разные вопросы по МК»