Модуль CAN шины на микросхеме MCP2515 и TJA1050 с SPI интерфейсом предназначен для простого и удобного подключения контроллеров к CAN шине. Модуль позволит просто организовать внутреннюю CAN сеть для построения системы умного дома.
Микросхема MCP2515 представляет собой автономный контроллер CAN и имеет встроенный интерфейс SPI для связи с микроконтроллерами. Микросхема TJA1050 в свою очередь действует как интерфейс между ИС контроллера MCP2515 и физической шиной CAN.
Пины J3 дублируют контакты выходного интерфейсного разъема. Перемычка J1 – подключение нагрузочного терминала параллельно контактам выходного разъема.
Пример
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 |
// demo: CAN-BUS Shield, receive data with check mode // send data coming to fast, such as less than 10ms, you can use this way // loovee, 2014-6-13 #include <SPI.h> #include <mcp_can.h> // the cs pin of the version after v1.1 is default to D9 // v0.9b and v1.0 is default D10 const int SPI_CS_PIN = 10; MCP_CAN CAN(SPI_CS_PIN); // Set CS pin void setup() { Serial.begin(115200); while (CAN_OK != CAN.begin(CAN_1000KBPS)) // init can bus : baudrate = 500k { Serial.println("CAN BUS Shield init fail"); Serial.println(" Init CAN BUS Shield again"); delay(100); } Serial.println("CAN BUS Shield init ok!"); } void loop() { unsigned char len = 0; unsigned char buf[8]; if (CAN_MSGAVAIL == CAN.checkReceive()) // check if data coming { CAN.readMsgBuf(&len, buf); // read data, len: data length, buf: data buf unsigned int canId = CAN.getCanId(); Serial.println("-----------------------------"); Serial.print("Get data from ID: "); Serial.println(canId, HEX); for (int i = 0; i < len; i++) // print the data { Serial.print(buf[i], HEX); Serial.print("t"); } Serial.println(); } } |
Скачать библиотеку v1 (ZIP)
Скачать библиотеку v2 (ZIP)
Скачать документацию MCP2515 (PDF)
Открыть схему модуля (PDF)