NRF24l01 с Atmega 32u4 и внутренними часами

Будет ли nrf24l01 работать с Atmega 32u4, если я использую внутренние часы 32u4, или мне нужен внешний источник часов?

, 👍0

Обсуждение

Знание интерфейса между nrf24l01+ и Atmega32U4 также является ответом на ваш вопрос. И даже при использовании асинхронного последовательного порта это должно быть возможно (но иногда может быть менее надежным), @KIIV

Подключение к nrf24 через CE, CSN, SCK, MOSI, MISO - у меня nrf24 отлично работает на моем Pro Micro, теперь я пробую его на моей пользовательской печатной плате, где я не использую внешний генератор. Моя пользовательская печатная плата отлично работает в остальном, включая SPI, поскольку у меня есть другое устройство, работающее на SPI. Просто не работает с nrf24., @NewToArduino

И SPI является ** синхронным ** интерфейсом, поэтому есть мастер, отправляющий сигнал «CLK» для синхронизации данных выбранному подчиненному устройству., @KIIV

Исправление, другое мое устройство подключено через I2C, а не через SPI. Но я программирую 32u4 через SPI., @NewToArduino

Без хотя бы схем, тестовых сценариев и так далее (что работает или не работает и где) трудно догадаться., @KIIV

Должно быть все в порядке. I2C и SPI не заботятся о том, на какой скорости работает MCU. Только такие вещи, как UART, иногда требуют более стабильного источника тактовой частоты, например кристалла, вместо внутреннего RC-генератора., @Gerben

Я обнаружил ошибку на моей пользовательской печатной плате, я хотел, чтобы CE был контактом 4, а CSN - контактом 5, но я по ошибке поместил их на контакты 38 и 39 на микросхеме, которые являются A4 и A5. Любая проблема с аналоговыми контактами, такими как CE и CSN?, @NewToArduino


1 ответ


Лучший ответ:

1

Вы задаете вопрос «да/нет», на который ответ «да», nRF24L01 в качестве последовательного периферийного устройства будет работать так же, как если бы вы использовали Arduino UNO или любой другой микроконтроллер, при условии, что шина SPI правильно инициализирована.

Как правило, в части setup() вашего скетча/программы должно быть следующее:

  pinMode(CE_pin, OUTPUT);//включение чипа устанавливается как выход
  pinMode(CSN_pin, OUTPUT);//чип выбирает пин как выход
  pinMode(MOSI_pin, OUTPUT);//вывод данных SPI
  pinMode(MISO_pin, INPUT); //данные SPI в
  pinMode(SCK_pin, OUTPUT);//тактовый сигнал SPI

  digitalWrite(CSN_pin, HIGH);//SPI бездействует
  digitalWrite(CE_pin, LOW);

  SPI.setBitOrder(MSBFIRST);//Сначала старший бит SPI
  SPI.setDataMode(SPI_MODE0);// Mode 0 Нарастающий фронт данных, держите тактовую частоту на низком уровне
  SPI.setClockDivider(SPI_CLOCK_DIV2);//запускаем данные на частоте 16 МГц/2 - 8 МГц
  SPI.begin();//запуск библиотеки SPI
,