Работа с SPI
- Войдите на сайт для отправки комментариев
Чт, 19/09/2013 - 21:44
1) Поясните пожалуйста физический смысл " фазы синхронизиции (CPHA)" в функции SPI.setDataMode библиотеки SPI.
2) Какой режим выбрать для модуля NRF24L01 для функции SPI.setDataMode ?
3) Согласно описанию "функция SPI.transfer() Передает один байт по шине SPI, используется как для прием, так и для передачи данных", то есть ведущее устройство посылает байт в буфер передачи (есть такой в функции?) и одновременно считывает байт из буфера приема? В связи с этим :
===3.1) Как распознать ситуацию когда буфер приема пуст? Обычно в Си возвращаемое значение -1, а как в Ардуино? ===3.2) Как корректно поступить, если передавать в SPI ничего не требуется, а читать принятое нужно ?
1.
2.
3.1
Обычно это NULL. Чем СИ отличается от "Ардуино"? Никак, "буфер" - это регистр размером в 1 байт.
3.2
Как корректно поступить, если передавать в SPI ничего не требуется, а читать принятое нужно ?
ну если так то ведомое устройство должно поддерживать режим передачи "ничего", что то типа пустой команды например
SPI работает только сразу на две стороны - прием и сразу передача, но бывают устройства (например сдвиговые ригистры) у которых либо вход либо выход не подключается к МК и например когда мы записываем данные 74HC595 на входе мы получаем никому не нужный муссор который просто игнорируем
спасибо ответившим, ардуино только начал изучать, поэтому не обижайтесь пожалуйста на подробные распросы, мне нужно это знать
3.1 Обычно это NULL. Чем СИ отличается от "Ардуино"? Никак, "буфер" - это регистр размером в 1 байт.
3.2 byte buf = SPI.transfer(0xff);
3. Если не секрет, из какого документа Nordic взяли режим SPI_MODE0 ?
3.1 NULL определен в ардуино как 0L или -1L ?
3.2 однако байт 0xff наряду с другими значениями также используется для передачи информации, SPI.transfer(0xff); как быть ? PS: описание функций http://arduino.ru/Reference/Library/SPI/setDataMode не слишком подробное, где посмотреть расширенное ?
Можете плодсказать такую команду?
Можете плодсказать такую команду?
кто сказал, что она там должна быть? используйте готовую библиотеку для NRF24 или читайте даташит на этот чип, там есть ответы на все вопросы
Кстати, у NRF24 есть такая команда:
#define NOP 0xFF
И еще 0xFF это и есть -1 для signed byte, char.
#define NOP 0xFF
И еще 0xFF это и есть -1 для signed byte, char.
oxFF тоже нужен как данные, что делать?
кто сказал, что она там должна быть? используйте готовую библиотеку для NRF24 или читайте даташит на этот чип, там есть ответы на все вопросы
не смог найти эту библиотеку, дайте пожалуйста ссылку
oxFF тоже нужен как данные, что делать?
вешаться
не смог найти эту библиотеку, дайте пожалуйста ссылку
https://github.com/maniacbug/RF24/
oxFF тоже нужен как данные, что делать?
Пошлите 2 байта:
0xFE и 0x00 означает 0xFE
0xFE и 0x01 означает 0xFF
Простое сложение: если 0xFE суммируем со следующим байтом и получаем нужный результат
там несколько веток (branch), руководствоваться "master" ?
прочел здесь http://avrproject.ru/publ/kak_podkljuchit/radiomoduli_nrf24l01/2-1-0-92
что nrf24l01 лояльна к 5В на входах , а в другом форуме пишут нельзя подавать 5В, может сделать такой делитель? R1/(R1+R2)=0,66; 5В*0,66=3,31В
Пошлите 2 байта:
0xFE и 0x00 означает 0xFE
0xFE и 0x01 означает 0xFF
Простое сложение: если 0xFE суммируем со следующим байтом и получаем нужный результат
но потеря любого байта не будет обнаружена и напрочь сбивает дальнейший обмен
На форуме несколько тем про NRF24. Практически на все ваши вопросы включая те которые еще не заданы есть ответы. Вы бы их прочитали прежде чем задавать вопросы.
делители никакие не нужны
делители никакие не нужны
1) почитаю, я правильно понял, что из-за особенностей SPI (одновременное чтение и запись) NRF24 при любом считывании будет еще и передавать данные?
2) ok
но потеря любого байта не будет обнаружена и напрочь сбивает дальнейший обмен
NRF24 не теряет байты!!!!!!!!!!!!!!!!!! Ни одного!!!!!!!!!!!!!!!
Это не 433 МГц с его простотой...
А если потеряет- это будет обнаружено!!!!!!!!!!!!!
да, согласен, 2,4G не сравним с 433 М, да у NRF24 есть протокол коррекции ошибок и повторов передачи, но время для повтора и длительность помех во времени могут соотноситься по разному и утверждать "ни одного" я бы не стал. Если будет обнаружено, но не исправлено, это и сесть потеря. Тем, кому нужна более высокая надежность, можно использовать надстройки к этому протоколу, формировать данные в пакеты, считать контрольные суммы и отбрасывать битые. Например, как в modbus.
PS: ищу простой проект на NRF24L01, который хочу повторить как начинающий
Вы параноик, который не хочет ничего изучать и пытается придумать свой велосипед. По SPI данные не теряются. Вам уже не раз советовали почитать даташит на NRF24L01. Вы это сделали? Нет. Отсюда и все эти бредовые вопросы...
Если будет обнаружено, но не исправлено, это и сесть потеря. Тем, кому нужна более высокая надежность, можно использовать надстройки к этому протоколу, формировать данные в пакеты, считать контрольные суммы и отбрасывать битые.
Все это реализовано хардово в NRF24L01.
Please!
Плохо помню, давно это было, но добавлял LCD keypad shield и бегал по дому смотрел.
Питал клиента с двух 18650 в касетте
Дальность так-себе, в прямой видимости приемлема.
Через пару-тройку стен-перекрытий (дерево-регипс) надо ориентировать приёмопередатчик.
server.ino
client.ino