Skip to content

mysensors-rus/STM32_GatewayEthernet_nRF24

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

9 Commits
 
 
 
 
 
 
 
 

Repository files navigation

STM32_GatewayEthernet_nRF24

Пример MySensors Ethernet шлюза на STM32 (Для поддержки STM32 в среде Arduino требуется установка фреймворка - https://github.com/rogerclarkmelbourne/Arduino_STM32).

Стандартно библиотека Ethernet_STM настроена на работу с портом SPI1. Cигнал SS(NSS) настроен на ногу PA4. Настройки жёстко зашиты в файле ..//Arduino_STM32/STM32F1/libraries/Ethernet_STM/src/utility/w5500.cpp. Речь разумеется идёт о сбоке скетча с использованием фреймворка Arduino_STM32. Если w5500 у нас висит один на шине SPI, то всё хорошо. А как быть если у нас несколько устройств или нога PA4 уже занята?! В этом случае нам необходимо внести некоторые исправления в библиотеку w5500, а именно в файл w5500.cpp. Для определения ноги SS служит дефайн - #define STM32_SPI_CS PA4. Записав его в виде #define STM32_SPI_CS PB12, мы назначим на ногу PB12 сигнал SS.

Если же мы хотим сменить порт например на SPI2, то нам надо внести следующие правки в файл w5500.cpp:

После строки W5500Class W5100; добавить следующие строки:

#define MYSPI 2 #ifdef MYSPI SPIClass MY_SPI(MYSPI); #else #define MY_SPI SPI #endif

И заменить 'SPI.' на 'MY_SPI.' во всех вхождениях.

И последнее. Если мы хотим раскачегарить камень на полную катушку и завести его на 128Мгц, то обязательно надо снизить частоту используемого порта SPI.

Применительно к нашему случаю, строку:

MY_SPI.setClockDivider(SPI_CLOCK_DIV4);

записать следующим образом:

MY_SPI.setClockDivider(SPI_CLOCK_DIV8);

Без этой замены мы можем наблюдать разнообразные неподдающиеся логике глюки и задумчиво чесать макушку. Файл w5500.cpp с внесёнными правками прикладываю.

About

Запускаем MySensors Ethernet шлюз nRF24 на STM32

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 2

  •  
  •  

Languages