Implemented Low Level Compunications
This commit is contained in:
49
can-interface/components/mcp2521/spi_interface_commands.cpp
Normal file
49
can-interface/components/mcp2521/spi_interface_commands.cpp
Normal file
@@ -0,0 +1,49 @@
|
||||
#include <string.h>
|
||||
|
||||
#include "mcp2521.hpp"
|
||||
#include "reg.hpp"
|
||||
|
||||
void MCP2521_SPI_Interface::reset() {
|
||||
spi_transaction_ext_t t = {
|
||||
.base = {
|
||||
.flags = SPI_TRANS_VARIABLE_CMD | SPI_TRANS_VARIABLE_ADDR,
|
||||
.cmd = MCP2521_OP_RESET,
|
||||
.addr = 8,
|
||||
.length = 0,
|
||||
.rxlength = 0,
|
||||
.tx_buffer = NULL,
|
||||
.rx_buffer = NULL
|
||||
},
|
||||
.command_bits = 8,
|
||||
.address_bits = 0,
|
||||
.dummy_bits = 0,
|
||||
};
|
||||
|
||||
spi_device_transmit(this->spi_device_handle, (spi_transaction_t*)(&t));
|
||||
}
|
||||
|
||||
void MCP2521_SPI_Interface::read_reg(uint8_t address, uint8_t *data, size_t length) {
|
||||
spi_transaction_ext_t t = {
|
||||
.base = {
|
||||
.flags = SPI_TRANS_VARIABLE_CMD | SPI_TRANS_VARIABLE_ADDR,
|
||||
.cmd = MCP2521_OP_READ,
|
||||
.addr = address,
|
||||
.length = 8 * length,
|
||||
.rxlength = 8 * length,
|
||||
.tx_buffer = &this->spi_tx_buffer,
|
||||
.rx_buffer = &this->spi_rx_buffer,
|
||||
},
|
||||
.command_bits = 8,
|
||||
.address_bits = 8,
|
||||
.dummy_bits = 0,
|
||||
};
|
||||
|
||||
spi_device_transmit(this->spi_device_handle, (spi_transaction_t*)(&t));
|
||||
memcpy(data, this->spi_rx_buffer, length);
|
||||
}
|
||||
|
||||
uint8_t MCP2521_SPI_Interface::read_reg(uint8_t address) {
|
||||
uint8_t data;
|
||||
read_reg(address, &data, 1);
|
||||
return data;
|
||||
}
|
||||
Reference in New Issue
Block a user