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

STM32F103VET6 тонкости ремапа пинов

Нарвался совершенно случайно на очередные грабли. Вот простая конфигурация для STM32F103VET6. Как видим, ремап сделан и для SPI1 и для TIM2CH1. В данной конфигурации был важен именно таймер, т. к. я планировал звук выводить на пищалку именно через него (пин 77).

STM32F1_RemappingConflict.thumb.jpg.0b77d99112fd921453afde74c161c9e7.jpg

Куб ничего подозрительного не выдал, я естественно тоже никакого криминала не заметил, короче, плата была успешно сделана. Приступил к программированию и тут все порушилось: пин 77 не хотел делать НИЧЕГО! Висит в Hi-Z и все.

Разбор полетов показал, что SPI1 не имеет частичного ремапа и переносятся не только пины SCK,MISO,MOSI но и NSS! И насколько показывают мои эксперименты, для данной конфигурации платы пин 77 потерян - нужно выбирать что-то одно, но нужен и SPI1 и таймер (звук).

Была надежда, что пином будет управлять та периферия, которая инициализирует его последней. На практике вроде такое не подтвердилось... Вот решил посоветоваться, может что не так понимаю или есть еще варианты?    

TIM2CH1asA15.rar

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


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

5 часов назад, ivainc1789 сказал:

пин 77 не хотел делать НИЧЕГО! Висит в Hi-Z и все.

Если 77-пин у вас носит имя PA15, то он у вас не работает исключительно потому, что занят под JTAG (это его default функция).

Отключите полный JTАG (оставьте только двухпроводный SWD+SWCLK) после чего он у вас заработает. Лично у меня он импульсы считает :).

В CubeMX это делается так: Pinout & Configuration -> System Core -> SYS -> Debug -> Serial Wire.

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


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

Как-то так надо

void initBoard(void)
{
    RCC->APB2ENR = RCC_APB2ENR_IOPAEN + 1*RCC_APB2ENR_IOPBEN +
                   1*RCC_APB2ENR_IOPCEN + 0*RCC_APB2ENR_IOPDEN +
                   0*RCC_APB2ENR_USART1EN + RCC_APB2ENR_AFIOEN;
    AFIO->MAPR = AFIO_MAPR_SWJ_CFG_JTAGDISABLE;

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


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

11 часов назад, ivainc1789 сказал:

Разбор полетов показал, что SPI1 не имеет частичного ремапа и переносятся не только пины SCK,MISO,MOSI но и NSS! И насколько показывают мои эксперименты, для данной конфигурации платы пин 77 потерян - нужно выбирать что-то одно, но нужен и SPI1 и таймер (звук).

Не знаю, как в ваших Кубах, но в регистре SPI_CR1 есть битик SSM. При его установке в 1 нога NSS заменяется битом SSI того же регистра. Очевидно, что после этого она может использоваться для другой периферии.

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


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

18 часов назад, Xenia сказал:

В CubeMX это делается так: Pinout & Configuration -> System Core -> SYS -> Debug -> Serial Wire.

Именно так и сделано, по рисунку же видно...

15 часов назад, mcheb сказал:

Как-то так надо

Проверил состояние битов, все верно указано, куб нагенерил именно так!

11 часов назад, Сергей Борщ сказал:

но в регистре SPI_CR1 есть битик SSM

А вот этот битик был в 1, т. е. NSS менеджмент разрешен. Я его скинул так 

#define BITCLR(REG,BIT) ((REG) &= ~(BIT))

BITCLR(SPI1->CR1,SPI_CR1_SSM);

Проверил в CubeIDE - состояние сбросилось.

Но все эти меры не привели состояние пина 77 к возможности переключаться. Помогает только если отменить ремап SPI1...

 

P.S. Попробовал сконфигурировать SPI1 в режим master с пином NSS в режиме hardware выхода. Передача байтов по линиям MOSI и SCK проходит как нужно, но NSS все время в низком уровне. Поведение одинаково и с ремапом SPI1 и без оного...

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


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

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

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

Гость
Ответить в этой теме...

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

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

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

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

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

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