Arduino Mega и шина SPI
Теоретически шина SPI на Arduino позволяет подключать к ней одновременно несколько устройств. Причем активным устройством на текущий момент, для работы скетча будет считаться то устройство, у которого низкий уровень сигнала на пине Cabel Select.
Например, подключаем два устройства к ардуине : SD картридер и сетевой интерфейс на микросхеме enc28j60, по следующей схеме:
Arduino Mega | enc28j60 | SD |
49 (SS, nCS, CS, CSB, CSN, nSS, STE) | CS | |
50 (SCLK, SCK, CLK) | SO | SPI_CLK |
51 (MOSI, SDI, DI, SI) | SI | SPI_MOSI |
52 (MISO, SDO, DO, SO) | SCK | SPI_MISO |
53 (SS, nCS, CS, CSB, CSN, nSS, STE) | SD_CS | |
GND | GND | GND |
5V | VCC | 5V |
Или может быть понятнее рисунок:
Т.е. как мы видим, часть пинов используется совместно, но пины 49 и 53 выделены для управления, для того чтобы скетч и «железка» знали, какое именно устройство в данный момент может передавать данные по общим пинам. Если на управляющем пине низкий уровень напряжения, то скетч и железка считает, что может передавать данные именно та железка, которая подведена к данному пину. Например по моей схеме: если на 49 пине низкий уровень, а на 53 высокий, то работает сетевая карта. И наоборот.
На деле как оказалось конечному пользователю не нужно заморачиватся выставлением уровней на управляющих пинах…если конечно драйвера железок написаны правильно…
Например мой скетч по работе одновременно и с SD и с сетевой картой заработал с полпинка..
Пример скетча: » Читать далее