c
mcp2515.h
- Committer:
- tecnosys
- Date:
- 2010-01-30
- Revision:
- 0:d8f50b1e384f
- Child:
- 1:dbc44582f2f8
File content as of revision 0:d8f50b1e384f:
#ifndef _MCP2515_H_ #define _MCP2515_H_ #include <mbed.h> #include "mcp2515_defs.h" #define MCPDEBUG (1) #define MCPDEBUG_TXBUF (0) #define MCP_CS_PORT PORTB #define MCP_CS_DDR DDRB #define MCP_CS_BIT PB0 #define MCP_N_TXBUFFERS (3) #define MCP_RXBUF_0 (MCP_RXB0SIDH) #define MCP_RXBUF_1 (MCP_RXB1SIDH) #define MCP_TXBUF_0 (MCP_TXB0SIDH) #define MCP_TXBUF_1 (MCP_TXB1SIDH) #define MCP_TXBUF_2 (MCP_TXB2SIDH) // #define MCP2515_SELECT() (SPI_SS_LOW()) // #define MCP2515_UNSELECT() (SPI_SS_HIGH()) #define MCP2515_SELECT() ( MCP_CS_PORT &= ~(1<<MCP_CS_BIT) ) #define MCP2515_UNSELECT() ( MCP_CS_PORT |= (1<<MCP_CS_BIT) ) #define MCP2515_OK (0) #define MCP2515_FAIL (1) #define MCP_ALLTXBUSY (2) typedef unsigned char u8; // Connections to the chip //volatile bit mcp2515_rst @ PORTC . 1; //volatile bit mcp2515_rst_tris @ TRISC . 1; // Function declarations /* void can_reset(); char can_read_register(char reg); void can_write_bits(char address, char data, char mask); void can_init(short id); char can_peek_message(); char can_rx_byte(); void can_set_id(short id); void can_init_buffer(); void can_load_byte(char input); void can_tx_buffer(); void can_read_status(); */ #include "mbed.h" #include "SPI.h" class mcp2515 { public: mcp2515(PinName mosi, PinName miso, PinName clk, PinName ncs); // float read (void); // void setThigh (float); // void setTlow (float); // float getThigh (void); // float getTlow (void); virtual void _reset(); uint8_t configRate(const uint8_t canSpeed); void setRegister(const uint8_t address, const uint8_t value); uint8_t readRegister(const uint8_t address); void modifyRegister(const uint8_t address, const uint8_t mask, const uint8_t data); uint8_t setCANCTRL_Mode(uint8_t newmode); uint8_t init(const uint8_t canSpeed); void initCANBuffers(void); void setRegisterS(const uint8_t address, const uint8_t values[], const uint8_t n); void write_can_id( const uint8_t mcp_addr, const uint8_t ext, const uint32_t can_id ); // void readRegisterS(const uint8_t address, uint8_t values[], const uint8_t n); uint8_t readXXStatus_helper(const uint8_t cmd); uint8_t readStatus(void); uint8_t RXStatus(void); void read_can_id( const uint8_t mcp_addr, uint8_t* ext, uint32_t* can_id ); void read_canMsg( const uint8_t buffer_sidh_addr, CANMessage* msg); void write_canMsg( const uint8_t buffer_sidh_addr, CANMessage* msg); uint8_t getNextFreeTXBuf(uint8_t *txbuf_n); void start_transmit(const uint8_t buffer_sidh_addr); SPI _spi; DigitalOut _ncs; // Private functions private : void _select (void); void _deselect (void); int status(); void _pollbusy() ; uint8_t _spi_readwrite(uint8_t data); uint8_t _spi_read(void); }; #endif // _MCP2515_H_