Задача использовать на arduino uno r3 tft display подключаемый через интерфейс spi и nrf24l+, проблема заключается в том, что и радио модульи дисплей использует одинаковые пины d 10-13, есть возможность обхода проблемы без ковыряния библиотек?
softSPI -вам в помощь. Позволяет организовать SPI практически на любых пинах котроллера и посадить тот же nRF24 на эти пины. Я активно использую - все прекрасно работает.
Код (C++): #include <DigitalIO.h> #include <RF24.h> const int _ce = 10; const int _csn = 8; SoftSPI<SOFT_SPI_MISO_PIN, SOFT_SPI_MOSI_PIN, SOFT_SPI_SCK_PIN, SPI_MODE> spi; RF24 radio(_ce,_csn); RF24Network network(radio); void setup() { spi.begin(); delay(500); radio.begin(); } Так же в файле RF24_config.h необходимо раскомментить строчку #define SOFTSPI И определить на каких выводах организуем SPI Код (C++): // change these pins to your liking /////////////////////////////////////////////// const uint8_t SOFT_SPI_MISO_PIN = 12; const uint8_t SOFT_SPI_MOSI_PIN = 9; const uint8_t SOFT_SPI_SCK_PIN = 11; const uint8_t SPI_MODE = 0;
2 AlexVS Может я и ошибаюсь, но Ваш пост я воспринимаю как хамство. SPI допускает использование нескольких устройств, для каждого свой пин CS (CE - синоним CS, например на ILI9340 он обозначен CS, на Nokia5110 - CE). Где здесь CS пин дисплея?
Воспринимайте как хотите. Вы мой первый ответ в данной теме прочли? Внимательно? Я про дисплей и не писал, я предложил вариант пересадить nRF24 на softSPI.
А почему нельзя посадить два устройства на аппаратный spi? И по-моему есть путаница относительно select/enable. Насколько я понял из текста библиотеки собственно к spi имеет отношение только Chip Select (_csn).
1. Можно, в основном работает без проблем, но бывают нюансы. Вот тогда в качестве альтернативы можно смело задействовать softSPI. 2. Не понятно, у кого путаница? У меня - нет. 3. Из текста какой библиотеки? Я тут приводил в пример всего 2, это DigitalIO.h и RF24.h. Или это замечание не ко мне?
Пока единственное, что приходит в голову - разница в допустимых скоростях обмена. Для дисплеев вроде упомянутого IL9340 скорость важна - и при 8 МГц он медленно работает.