Program Listing for File spic-mtb.cpp
↰ Return to documentation for file (src/framework/mtb/pal/spic-mtb.cpp)
#include "spic-mtb.hpp"
#if (TLE5012_FRAMEWORK == TLE5012_FRMWK_MTB)
#include "mtb_rtos.h"
#include <mtb.h>
#include <platform.h>
using namespace tle5012;
SPICMtb::SPICMtb() : csPin(MTB_GPIO_NONE), port(MTB_SPI_0)
{
this->spi.port = port;
this->spi.chip_select = csPin;
this->spi.speed = 1000000;
this->spi.mode = (SPI_CLOCK_RISING_EDGE | SPI_CLOCK_IDLE_LOW | SPI_NO_DMA | SPI_LSB_FIRST | SPI_CS_ACTIVE_LOW);
this->spi.bits = 8;
}
SPICMtb::SPICMtb(mtb_spi_t port, mtb_gpio_t csPin)
{
this->spi.port = port;
this->spi.chip_select = csPin;
this->spi.speed = 1000000;
this->spi.mode = (SPI_CLOCK_RISING_EDGE | SPI_CLOCK_IDLE_LOW | SPI_NO_DMA | SPI_LSB_FIRST | SPI_CS_ACTIVE_LOW);
this->spi.bits = 8;
}
SPICMtb::SPICMtb(mtb_spi_t port, mtb_gpio_t csPin, uint8_t speed, uint8_t mode, uint8_t bits)
{
this->spi.port = port;
this->spi.chip_select = csPin;
this->spi.speed = speed;
this->spi.mode = mode;
this->spi.bits = bits;
}
SPICMtb::~SPICMtb()
{
deinit();
}
SPICMtb::Error_t SPICMtb::init()
{
this->segment.tx_buffer = sendBuffer;
this->segment.rx_buffer = receiveBuffer;
this->segment.length = 1;
mtb_spi_init( &this->spi );
return OK;
}
SPICMtb::Error_t SPICMtb::deinit()
{
mtb_spi_deinit( &this->spi );
return OK;
}
SPICMtb::Error_t SPICMtb::transfer(uint8_t send, uint8_t &received)
{
sendBuffer[0] = send;
receiveBuffer[0] = received;
mtb_spi_transfer( &this->spi, &this->segment, 1);
return OK;
}
SPICMtb::Error_t SPICMtb::transfer16(uint16_t send, uint16_t &received)
{
sendBuffer[0] = (uint8_t)((send >> 8) & 0xFF);
sendBuffer[1] = (uint8_t)(send & 0xFF);
mtb_spi_transfer( &this->spi, &this->segment, 2);
received = (uint16_t)(((uint16_t)receiveBuffer[0] << 8) | (receiveBuffer[1]));
return OK;
}
#endif