Each LPC1768 is capable of controlling 2 CAN bus lines. Linking multiple chips together via SPI allows for more bus lines to be monitored simultaneously. Master unit.

Dependencies:   mbed

spiMasterProtocol.cpp

Committer:
ggudgel
Date:
2014-10-31
Revision:
0:855b6e84e744

File content as of revision 0:855b6e84e744:

#include "spiMasterProtocol.h"

spiMasterProtocol::spiMasterProtocol() {
    spiLine = new SPI(p5, p6, p7);
    spiLine->format(8,3);        // Setup:  bit data, high steady state clock, 2nd edge capture
    spiLine->frequency(1000000); // 1MHz
    
    chipSelect = new DigitalOut(p8);
    chipSelect->write(1);
}
 
 int spiMasterProtocol::get42() {
    int temp = write(0x42);
    wait_us(5);
    int data = write(0x00);
    wait_us(5);
    int dataExtra = write(0x00);
    
    printf("get42():\n\r");
    printf("temp = %d\n\r", temp);
    printf("data = %d\n\r", data);
    printf("dataExtra = %d\n\r", data);
    printf("\n");
    
    return data;
}

 int spiMasterProtocol::get84() {
    int temp = write(0x84);
    wait_us(5);
    int data1 = write(0x00);
    wait_us(5);
    int data2 = write(0x00);
    
    printf("get84():\n\r");
    printf("temp = %d\n\r", temp);
    printf("data1 = %d\n\r", data1);
    printf("data2 = %d\n\r", data2);
    printf("\n");
    
    return data2;
}

int spiMasterProtocol::write(int m) {
    chipSelect->write(0);
    
    int returnMess = spiLine->write(m);
    
    chipSelect->write(1);
    
    return returnMess;
}