stm32f103c8t6 переключение портов SPI (работа с nrf24l01+)
- Войдите на сайт для отправки комментариев
Вс, 19/01/2020 - 23:59
Всем привет!
Хочу подключить nrf24l01 к stm32f103c8t6. Стандартно подключается к пинам PA5 (SCK1), PA6(MOSO1), PA7(MOSI1). У меня эти пины заняты, уже печатка разведена, по этому их использовать не получится. В тоже время на stm32f103c8t6 есть еще один порт SPI, тоже под номером "1" (???):
PB3 (SCK1), PB4 (MISO1), PB5 (MOSI1)
Вопрос: как в коде указать что именно эти пины будут использоваться для SPI?
Ищите stm32 pin remapping.
Всем привет!
Хочу подключить nrf24l01 к stm32f103c8t6. Стандартно подключается к пинам PA5 (SCK1), PA6(MOSO1), PA7(MOSI1). У меня эти пины заняты, уже печатка разведена, по этому их использовать не получится. В тоже время на stm32f103c8t6 есть еще один порт SPI, тоже под номером "1" (???):
PB3 (SCK1), PB4 (MISO1), PB5 (MOSI1)
чем ремапить первый SPI - проще использовать второй, тот что на пинах B12 - B15
Решилось все установкой "нормальной" поддержки STM в среде Ардуино ИДЕ.
Ядро для STM брал здесь: https://github.com/stm32duino/Arduino_Core_STM32
Порт переназначается слюдующей командой:
SPIClass SPI_3(PB5, PB4, PB3, PA15);
...
SPI_3.begin();
Столкнулся с другой проблемой. Заливаю тестовый скетч для проверки SPI порта:
Проверяю осциллографом: данные передаются. Но стоит подключить библиотеку nrf24l01 и SPI порт перестает работать...
Библиотеку использую эту: https://github.com/nRF24/RF24
Может нужно какую-то специальную библиотеку использовать? Хотя во многих примерах (для STM) я видел именно эту библиотеку...
почитайте описание к этой библиотеке SPI - могу ошибаться. но если вы задаете CS пин в классе - как у вас написано - он будет управляться SPI либой, а не библиотекой NRF и тут может быть конфликт.
Тут даже не в CS пине дело. Даже если библиотека его неправильно переназначит (даже если неправильно определит весь порт) все равно какой-то порт должен работать и слать данные (если не ошибаюсь). Но в моем случае на всей плате не дергается ни одна ножка кроме PA15. На ней присутствуют импульсы.
Если же использовать тот же скетч, но убрать из него библиотеку nrf24l01 то все работает (то есть порт работает). Похоже на то что библиотека меняет настройки SPI. Попробую ее поковырять...
Многие библиотеки рассчитаны под работу только с первым SPI на дефолтных пинах и ни СПИ2, ни ремаппинг не поддерживают
еще посмотрите, под какое ядро СТМ рассчитана библиотека NRF - под старый аддон Роджера Кларка или под новый. что поставили Вы
А где это посмотреть можно?
А где это посмотреть можно?
Под какой аддон? - обычно в комментариях и описании к библиотеке
В описании к библиотеке есть много всего, но STM не присутствует: http://tmrh20.github.io/RF24/pages.html
Перепробовал много вариантов, но все без толку. Библиотека сама инициализирует SPI, из-за этого ничего не работает :(
В описании к библиотеке есть много всего, но STM не присутствует: http://tmrh20.github.io/RF24/pages.html
Перепробовал много вариантов, но все без толку. Библиотека сама инициализирует SPI, из-за этого ничего не работает :(
ну значит надо открыть библиотеку и подправить под СТМ. Обычно требуется изменить немного, только инициализацию.Я так три или четыре библиотеки адаптировал к СТМ32
Я попробовал - не мой уровень. Просто не смог разобраться. Может вы сможете помочь?
Я попробовал - не мой уровень. Просто не смог разобраться. Может вы сможете помочь?