Патафикс
Пт 25 ноября 2016 г., 2:03
Привет, я здесь новичок. Я использую https: // github.com/lowpowerlab/rfm69 Однако на моем нынешнем решении AVR оно трудно реализовать его на Maple Mini. Есть эта библиотека https: // github.com/ahessling/rfm69-stm32 который был реализован в простом C ++, однако это не особенно хорошо документировано.
Любой шанс у кого -то уже есть, или может дать несколько советов относительно того, с чего начать? Мне удается скомпилировать его без ошибок, но как только я загружаю его в Maple Mini Clone - он просто перестает отвечать, поэтому я знаю, что где -то все испортил.
Это очень упрощенная библиотека (LowpowerLab One), но у меня не было опыта MCUS, поэтому любые советы будут очень оценены.
Любой шанс у кого -то уже есть, или может дать несколько советов относительно того, с чего начать? Мне удается скомпилировать его без ошибок, но как только я загружаю его в Maple Mini Clone - он просто перестает отвечать, поэтому я знаю, что где -то все испортил.
Это очень упрощенная библиотека (LowpowerLab One), но у меня не было опыта MCUS, поэтому любые советы будут очень оценены.
Rogerclark
Пт 25 ноября 2016 г., 3:13
Вы можете попробовать использовать HAL Core для STM32 и библиотеки Non Arduino
https: // github.com/ahessling/rfm69-stm32
Но похоже, что она может использовать старую стандартную периферийную библиотеку, а не новую STM HAL, поэтому переносить ее в HAL может быть не таким простым.
Инструкции для HAL Core - см, ViewTopic.PHP?f = 16&t = 1553
Но вам нужно скачать филиал в работе в работе https: // github.com/stm32duino/arduino_c ... 1/дерево/WIP
В качестве альтернативы придерживаться Libmaple, тогда о вашем единственном выборе, если у вас нет способа использовать отладчик GNU (GDB), используя Stlink и т. Д.
Если просто включение файлов заставит его повесить, то проблема, вероятно, будет в конструкторе, особенно если он пытается хранить ссылки на выводы до настройки ()
https: // github.com/ahessling/rfm69-stm32
Но похоже, что она может использовать старую стандартную периферийную библиотеку, а не новую STM HAL, поэтому переносить ее в HAL может быть не таким простым.
Инструкции для HAL Core - см, ViewTopic.PHP?f = 16&t = 1553
Но вам нужно скачать филиал в работе в работе https: // github.com/stm32duino/arduino_c ... 1/дерево/WIP
В качестве альтернативы придерживаться Libmaple, тогда о вашем единственном выборе, если у вас нет способа использовать отладчик GNU (GDB), используя Stlink и т. Д.
Если просто включение файлов заставит его повесить, то проблема, вероятно, будет в конструкторе, особенно если он пытается хранить ссылки на выводы до настройки ()
Стивестронг
Пт 25 ноября 2016 г. 8:34
Патафикс написал:Мне удается скомпилировать его без ошибок, но как только я загружаю его в Maple Mini Clone - он просто перестает отвечать, поэтому я знаю, что где -то все испортил.
Патафикс
Пт 25 ноября 2016 г., 9:12
Спасибо за ваши ответы.
Он висит в конструкторе, так как я не могу получить сериал.начало (115200); Сериал.print ("Start"); Чтобы отобразить что -нибудь @ setup ().
Я попробую еще раз на выходных.
Еще пара вопросов:
Он висит в конструкторе, так как я не могу получить сериал.начало (115200); Сериал.print ("Start"); Чтобы отобразить что -нибудь @ setup ().
Я попробую еще раз на выходных.
Еще пара вопросов:
// select the RFM69 transceiver (save SPI settings, set CS low)
void RFM69::select() {
noInterrupts();
#if defined (SPCR) && defined (SPSR)
// save current SPI settings
_SPCR = SPCR;
_SPSR = SPSR;
#endif
// set RFM69 SPI settings
SPI.setDataMode(SPI_MODE0);
SPI.setBitOrder(MSBFIRST);
SPI.setClockDivider(SPI_CLOCK_DIV4); // decided to slow down from DIV2 after SPI stalling in some instances, especially visible on mega1284p when RFM69 and FLASH chip both present
digitalWrite(_slaveSelectPin, LOW);
}
// unselect the RFM69 transceiver (set CS high, restore SPI settings)
void RFM69::unselect() {
digitalWrite(_slaveSelectPin, HIGH);
// restore SPI settings to what they were before talking to RFM69
#if defined (SPCR) && defined (SPSR)
SPCR = _SPCR;
SPSR = _SPSR;
#endif
maybeInterrupts();
}
Стивестронг
Пт 25 ноября 2016 г., 10:29
Я бы порекомендовал подождать время после сериала.начинать(); (скажем, 6 секунд).
Или дождитесь серийного соединения:
Или дождитесь серийного соединения:
Serial.begin();
while ( !Serial.isConnected() );
Serial.print("start");
Патафикс
Пн 28 ноября 2016 г. 14:18
Интересное открытие. Пробовал что -нибудь простое - Читать значения регистрации от RFM69HW.
Возвращает все 0 значений, если я использую порт SPI1 (контакты 4-7) на Baite Maple Mini.
Возвращает ожидаемые значения, если я использую порт SPI2 (Pins 28-32) на Baite Maple Mini.
Проверьте все соединения и сигналы прибывают в припаянные булавки, возможно, это неисправная печатная плата, придется заказать еще один, чтобы проверить. Код для справки.
Работает:
Возвращает все 0 значений, если я использую порт SPI1 (контакты 4-7) на Baite Maple Mini.
Возвращает ожидаемые значения, если я использую порт SPI2 (Pins 28-32) на Baite Maple Mini.
Проверьте все соединения и сигналы прибывают в припаянные булавки, возможно, это неисправная печатная плата, придется заказать еще один, чтобы проверить. Код для справки.
Работает:
#include
byte data;
#define chipSelect 31
SPIClass spi(2);
void setup() {
spi.begin(); //Initialize the SPI_1 port.
spi.setBitOrder(MSBFIRST); // Set the SPI_1 bit order
spi.setDataMode(SPI_MODE0); //Set the SPI_2 data mode 0
spi.setClockDivider(SPI_CLOCK_DIV16); // Slow speed (72 / 16 = 4.5 MHz SPI_1 speed)
pinMode(chipSelect, OUTPUT);
Serial.println("aa");
}
void loop() {
readRegs();
delay(5000);
}
void readRegs()
{
byte regVal;
for (byte regAddr = 1; regAddr <= 0x4F; regAddr++)
{
digitalWrite(chipSelect, LOW); // manually take CSN low for SPI_1 transmission
spi.transfer(regAddr & 0x7f); // send address + r/w bit
regVal = spi.transfer(0);
digitalWrite(chipSelect, HIGH); // manually take CSN low for SPI_1 transmission
Serial.print(regAddr, HEX);
Serial.print(" - ");
Serial.print(regVal,HEX);
Serial.print(" - ");
Serial.println(regVal,BIN);
}
}
Патафикс
Пн 28 ноября 2016 г., 17:10
ОК, быстрое обновление RFM69HW прекрасно работает на Baite Maple Mini. Пришлось изменить Spiclass, чтобы использовать SPI2 по умолчанию и прокомментировать
#if defined (SPCR) && defined (SPSR)
SPCR = _SPCR;
SPSR = _SPSR;
#endif
Стивестронг
Вт 29 ноября 2016 г. 9:20 утра
В общем, я бы порекомендовал вам использовать PXY (Ex. PA5) Конвенция о названии для определения GPIOS, а не простых чисел.
Стивестронг
Чт 16 февраля 2017 г., 22:48
@patafix,
Не могли бы вы опубликовать здесь LIB для RFM69, который вы перенесли для STM32F103?
Я спрашиваю об этом, потому что в настоящее время я также работаю с этим чипом и у меня есть проблемы.
Не могли бы вы опубликовать здесь LIB для RFM69, который вы перенесли для STM32F103?
Я спрашиваю об этом, потому что в настоящее время я также работаю с этим чипом и у меня есть проблемы.
ZMEMW16
Солнце 19 февраля 2017 г. 12:52 утра
SPI1 V SPI2 длинная, длинная нить ... ... ...
Никто не собирается упомянуть источник CLK и разделители ?
Попробуйте снова SPI1 со SPI_CLOCK_DIV32 ??
или понял неправильную идею из потока?
Стивен
Никто не собирается упомянуть источник CLK и разделители ?
Попробуйте снова SPI1 со SPI_CLOCK_DIV32 ??
или понял неправильную идею из потока?
Стивен
Стивестронг
Солнце 19 февраля 2017 г. 11:55 утра
Моя проблема не была связана со SPI.
Приемная часть не сработала, как и ожидалось, но теперь, кажется, работает нормально.
Приемная часть не сработала, как и ожидалось, но теперь, кажется, работает нормально.
ZMEMW16
Солнце 19 февраля 2017 г. 18:14
аполы
Разница в фрагментах была spi1 cf spi2, но они использовали тот же разделитель.
CLK в разделитель для SPI1 и SPI2?
Стивен
Разница в фрагментах была spi1 cf spi2, но они использовали тот же разделитель.
CLK в разделитель для SPI1 и SPI2?
Стивен
Стивестронг
Солнце 19 февраля 2017 г. 18:32
Я в основном использую настройки MIT BeginTransaction:
// Start up
SPI.setModule(1); // nRF905
SPI.beginTransaction(SPISettings(9000000));
nRF905_Init();
Serial.println(F("-> nRF905 initialised."));
Serial.print("Initialise RFM69...");
SPI.setModule(2); // RFM69
SPI.beginTransaction(SPISettings(9000000));
if ( !rfm69.begin(RFM69_CS, RFM69_RST) ) {
...
}
ZMEMW16
Солнце 19 февраля 2017 г., 21:13
Стоит упомянуть
Каликс
Солнце 16 июля 2017 г. 8:13
У меня тоже проблемы на плате STM32L053R8. Эскиз компилирует ОК и работает на доске, но шлюз не получает никакого сообщения.
Я могу прочитать реестры и температуру от модуля RFM69HW.
Я могу прочитать реестры и температуру от модуля RFM69HW.
Стивестронг
Солнце 16 июля 2017 г. 8:23
С RTL SDR Вы могли бы проверить, действительно ли работает часть TX.
Каликс
Солнце 16 июля 2017 г. 10:15 утра
Я не уверен насчет настройки IRQ. Библиотека, которую я пытаюсь использовать, такая: https: // github.com/brainelectronics/rfm69-stm32
PS: я только что проверил с помощью программного обеспечения SDRSHARP и ... Ничто не выходит из TX. (У меня есть другие узлы 433 МГц, и я ясно вижу, когда они передают).
PS: я только что проверил с помощью программного обеспечения SDRSHARP и ... Ничто не выходит из TX. (У меня есть другие узлы 433 МГц, и я ясно вижу, когда они передают).