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

STM32F103RC PWM+SPI

STM32F103RC на PA15 выдаю ШИМ через TIM2_CH1. Таймер берет данные через DMA никакие прерывания не используются.

Добавил SPI3 на PB3, PB4, PB5 и chipselect на PD2.

SPI корректно работает, но оказалось что после включения SPI перестает работать ШИМ.

В KEIL вижу что DMA и TIM2 по прежнему тикают.

 

Стал упрощать программу и увидел что уже включение клока для SPI отрубает ШИМ.

Сделал бесконечный цикл, перед ним никакой инициализации SPI3 нет, его регистры имееют нулевые значения:

    Delay(1000);
    RCC->APB1ENR |= (1<<15);    //spi3    
    while(1);

Если в этом куске кода убрать включение SPI в RCC то ШИМ отлично работает.

На ногу PA15 где мой ШИМ попадает SPI3_NSS неужели он как-то мешает?

После включения SPI NSS по дефолту отключен

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


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

На ногу PA15 где мой ШИМ попадает SPI3_NSS неужели он как-то мешает?

Похоже на конфликт альтернативных функций от различной периферии, висящей на одной ноге ....

Попробуйте использовать другой пин для TIM2_CH1, хотя бы временно.

 

Вполне возможно, что этот случай подходит под эту тему: https://electronix.ru/forum/index.php?showtopic=143734

 

зы. А вообще, "распиновку" удобно делать в кубе. Он помогает избежать подобные конфликты еще на этапе трассировки платы.

Хотя ни кубом, ни SPL/HAL не пользуюсь, но именно этот инструмент от куба оказался для меня вполне годным и удобным (других все равно нет).

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


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

Попробуйте использовать другой пин для TIM2_CH1, хотя бы временно.
Туда приходит выход другой микросхемы. Получится два выхода натравлены друг на друга.

Плата в одном количестве для которой нужно написать свою прошивку и она покрыта лаком. Нет желания отпаивать что-то чтобы проверить на другом пине.

А вообще, "распиновку" удобно делать в кубе. Он помогает избежать подобные конфликты еще на этапе трассировки платы.
Пробовал там нет конфликтов.

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


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

Получится два выхода натравлены друг на друга.

Тот пин можно настроить на вход, чтобы он не подключал выходной буфер.

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

 

Пробовал там нет конфликтов.

Что говорит errata?

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


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

Тот пин

это выход логического элемента 74HC14.

в errata не вижу ничего похожего на мой случай.

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


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

это выход логического элемента 74HC14.

 

Чую, что мы о разном толкуем ))

Покажите схему подключения этого "конфликтного" пина и другого пина, куда можно перекинуть (перемаппировать) временно этот выход от конфликтующей периферии.

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


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

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

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

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

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

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

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

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

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

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