Dependents:   Kamal_CAN ReadFromSerial446 USNA-UMBC-KF-02_v3-noise USNA-UMBC-KF-01

Committer:
tecnosys
Date:
Sat Jan 30 08:46:04 2010 +0000
Revision:
0:d8f50b1e384f
Child:
1:dbc44582f2f8

        

Who changed what in which revision?

UserRevisionLine numberNew contents of line
tecnosys 0:d8f50b1e384f 1
tecnosys 0:d8f50b1e384f 2 #ifndef _MCP2515_H_
tecnosys 0:d8f50b1e384f 3 #define _MCP2515_H_
tecnosys 0:d8f50b1e384f 4
tecnosys 0:d8f50b1e384f 5 #include <mbed.h>
tecnosys 0:d8f50b1e384f 6 #include "mcp2515_defs.h"
tecnosys 0:d8f50b1e384f 7
tecnosys 0:d8f50b1e384f 8 #define MCPDEBUG (1)
tecnosys 0:d8f50b1e384f 9 #define MCPDEBUG_TXBUF (0)
tecnosys 0:d8f50b1e384f 10
tecnosys 0:d8f50b1e384f 11 #define MCP_CS_PORT PORTB
tecnosys 0:d8f50b1e384f 12 #define MCP_CS_DDR DDRB
tecnosys 0:d8f50b1e384f 13 #define MCP_CS_BIT PB0
tecnosys 0:d8f50b1e384f 14
tecnosys 0:d8f50b1e384f 15 #define MCP_N_TXBUFFERS (3)
tecnosys 0:d8f50b1e384f 16
tecnosys 0:d8f50b1e384f 17 #define MCP_RXBUF_0 (MCP_RXB0SIDH)
tecnosys 0:d8f50b1e384f 18 #define MCP_RXBUF_1 (MCP_RXB1SIDH)
tecnosys 0:d8f50b1e384f 19
tecnosys 0:d8f50b1e384f 20 #define MCP_TXBUF_0 (MCP_TXB0SIDH)
tecnosys 0:d8f50b1e384f 21 #define MCP_TXBUF_1 (MCP_TXB1SIDH)
tecnosys 0:d8f50b1e384f 22 #define MCP_TXBUF_2 (MCP_TXB2SIDH)
tecnosys 0:d8f50b1e384f 23
tecnosys 0:d8f50b1e384f 24 // #define MCP2515_SELECT() (SPI_SS_LOW())
tecnosys 0:d8f50b1e384f 25 // #define MCP2515_UNSELECT() (SPI_SS_HIGH())
tecnosys 0:d8f50b1e384f 26
tecnosys 0:d8f50b1e384f 27 #define MCP2515_SELECT() ( MCP_CS_PORT &= ~(1<<MCP_CS_BIT) )
tecnosys 0:d8f50b1e384f 28 #define MCP2515_UNSELECT() ( MCP_CS_PORT |= (1<<MCP_CS_BIT) )
tecnosys 0:d8f50b1e384f 29
tecnosys 0:d8f50b1e384f 30 #define MCP2515_OK (0)
tecnosys 0:d8f50b1e384f 31 #define MCP2515_FAIL (1)
tecnosys 0:d8f50b1e384f 32 #define MCP_ALLTXBUSY (2)
tecnosys 0:d8f50b1e384f 33
tecnosys 0:d8f50b1e384f 34 typedef unsigned char u8;
tecnosys 0:d8f50b1e384f 35
tecnosys 0:d8f50b1e384f 36 // Connections to the chip
tecnosys 0:d8f50b1e384f 37 //volatile bit mcp2515_rst @ PORTC . 1;
tecnosys 0:d8f50b1e384f 38 //volatile bit mcp2515_rst_tris @ TRISC . 1;
tecnosys 0:d8f50b1e384f 39
tecnosys 0:d8f50b1e384f 40 // Function declarations
tecnosys 0:d8f50b1e384f 41 /*
tecnosys 0:d8f50b1e384f 42 void can_reset();
tecnosys 0:d8f50b1e384f 43 char can_read_register(char reg);
tecnosys 0:d8f50b1e384f 44 void can_write_bits(char address, char data, char mask);
tecnosys 0:d8f50b1e384f 45 void can_init(short id);
tecnosys 0:d8f50b1e384f 46 char can_peek_message();
tecnosys 0:d8f50b1e384f 47 char can_rx_byte();
tecnosys 0:d8f50b1e384f 48 void can_set_id(short id);
tecnosys 0:d8f50b1e384f 49 void can_init_buffer();
tecnosys 0:d8f50b1e384f 50 void can_load_byte(char input);
tecnosys 0:d8f50b1e384f 51 void can_tx_buffer();
tecnosys 0:d8f50b1e384f 52 void can_read_status();
tecnosys 0:d8f50b1e384f 53 */
tecnosys 0:d8f50b1e384f 54
tecnosys 0:d8f50b1e384f 55 #include "mbed.h"
tecnosys 0:d8f50b1e384f 56 #include "SPI.h"
tecnosys 0:d8f50b1e384f 57 class mcp2515 {
tecnosys 0:d8f50b1e384f 58 public:
tecnosys 0:d8f50b1e384f 59 mcp2515(PinName mosi, PinName miso, PinName clk, PinName ncs);
tecnosys 0:d8f50b1e384f 60 // float read (void);
tecnosys 0:d8f50b1e384f 61 // void setThigh (float);
tecnosys 0:d8f50b1e384f 62 // void setTlow (float);
tecnosys 0:d8f50b1e384f 63 // float getThigh (void);
tecnosys 0:d8f50b1e384f 64 // float getTlow (void);
tecnosys 0:d8f50b1e384f 65 virtual void _reset();
tecnosys 0:d8f50b1e384f 66 uint8_t configRate(const uint8_t canSpeed);
tecnosys 0:d8f50b1e384f 67 void setRegister(const uint8_t address, const uint8_t value);
tecnosys 0:d8f50b1e384f 68
tecnosys 0:d8f50b1e384f 69 uint8_t readRegister(const uint8_t address);
tecnosys 0:d8f50b1e384f 70 void modifyRegister(const uint8_t address, const uint8_t mask, const uint8_t data);
tecnosys 0:d8f50b1e384f 71 uint8_t setCANCTRL_Mode(uint8_t newmode);
tecnosys 0:d8f50b1e384f 72 uint8_t init(const uint8_t canSpeed);
tecnosys 0:d8f50b1e384f 73 void initCANBuffers(void);
tecnosys 0:d8f50b1e384f 74 void setRegisterS(const uint8_t address, const uint8_t values[], const uint8_t n);
tecnosys 0:d8f50b1e384f 75 void write_can_id( const uint8_t mcp_addr, const uint8_t ext, const uint32_t can_id );
tecnosys 0:d8f50b1e384f 76 //
tecnosys 0:d8f50b1e384f 77
tecnosys 0:d8f50b1e384f 78 void readRegisterS(const uint8_t address, uint8_t values[], const uint8_t n);
tecnosys 0:d8f50b1e384f 79 uint8_t readXXStatus_helper(const uint8_t cmd);
tecnosys 0:d8f50b1e384f 80 uint8_t readStatus(void);
tecnosys 0:d8f50b1e384f 81 uint8_t RXStatus(void);
tecnosys 0:d8f50b1e384f 82
tecnosys 0:d8f50b1e384f 83 void read_can_id( const uint8_t mcp_addr, uint8_t* ext, uint32_t* can_id );
tecnosys 0:d8f50b1e384f 84 void read_canMsg( const uint8_t buffer_sidh_addr, CANMessage* msg);
tecnosys 0:d8f50b1e384f 85 void write_canMsg( const uint8_t buffer_sidh_addr, CANMessage* msg);
tecnosys 0:d8f50b1e384f 86
tecnosys 0:d8f50b1e384f 87 uint8_t getNextFreeTXBuf(uint8_t *txbuf_n);
tecnosys 0:d8f50b1e384f 88
tecnosys 0:d8f50b1e384f 89 void start_transmit(const uint8_t buffer_sidh_addr);
tecnosys 0:d8f50b1e384f 90
tecnosys 0:d8f50b1e384f 91 SPI _spi;
tecnosys 0:d8f50b1e384f 92 DigitalOut _ncs;
tecnosys 0:d8f50b1e384f 93 // Private functions
tecnosys 0:d8f50b1e384f 94 private :
tecnosys 0:d8f50b1e384f 95 void _select (void);
tecnosys 0:d8f50b1e384f 96 void _deselect (void);
tecnosys 0:d8f50b1e384f 97 int status();
tecnosys 0:d8f50b1e384f 98 void _pollbusy() ;
tecnosys 0:d8f50b1e384f 99
tecnosys 0:d8f50b1e384f 100 uint8_t _spi_readwrite(uint8_t data);
tecnosys 0:d8f50b1e384f 101 uint8_t _spi_read(void);
tecnosys 0:d8f50b1e384f 102
tecnosys 0:d8f50b1e384f 103
tecnosys 0:d8f50b1e384f 104 };
tecnosys 0:d8f50b1e384f 105
tecnosys 0:d8f50b1e384f 106 #endif // _MCP2515_H_