amiro-os / components / bus / spi / HWSPIDriver.cpp @ 58fe0e0b
History | View | Annotate | Download (1.079 KB)
| 1 | 58fe0e0b | Thomas Schöpping | #include <hal.h> |
|---|---|---|---|
| 2 | #include <amiro/bus/spi/HWSPIDriver.hpp> |
||
| 3 | |||
| 4 | using namespace chibios_rt; |
||
| 5 | |||
| 6 | namespace amiro {
|
||
| 7 | |||
| 8 | HWSPIDriver:: |
||
| 9 | HWSPIDriver(::SPIDriver *driver, const ::SPIConfig *config) :
|
||
| 10 | driver(driver), |
||
| 11 | config(config) {
|
||
| 12 | |||
| 13 | } |
||
| 14 | |||
| 15 | HWSPIDriver:: |
||
| 16 | ~HWSPIDriver() {
|
||
| 17 | |||
| 18 | |||
| 19 | } |
||
| 20 | |||
| 21 | void
|
||
| 22 | HWSPIDriver:: |
||
| 23 | exchange(uint8_t *readData, const uint8_t *writeData, size_t length) {
|
||
| 24 | spiAcquireBus(this->driver);
|
||
| 25 | spiStart(this->driver, this->config); |
||
| 26 | spiSelect(this->driver);
|
||
| 27 | spiExchange(this->driver, length, writeData, readData);
|
||
| 28 | spiUnselect(this->driver);
|
||
| 29 | spiReleaseBus(this->driver);
|
||
| 30 | } |
||
| 31 | |||
| 32 | void
|
||
| 33 | HWSPIDriver:: |
||
| 34 | read(uint8_t *data, size_t length) {
|
||
| 35 | spiAcquireBus(this->driver);
|
||
| 36 | spiStart(this->driver, this->config); |
||
| 37 | spiSelect(this->driver);
|
||
| 38 | spiReceive(this->driver, length, data);
|
||
| 39 | spiUnselect(this->driver);
|
||
| 40 | spiReleaseBus(this->driver);
|
||
| 41 | } |
||
| 42 | |||
| 43 | void
|
||
| 44 | HWSPIDriver:: |
||
| 45 | write(const uint8_t *data, size_t length) {
|
||
| 46 | spiAcquireBus(this->driver);
|
||
| 47 | spiStart(this->driver, this->config); |
||
| 48 | spiSelect(this->driver);
|
||
| 49 | spiSend(this->driver, length, data);
|
||
| 50 | spiUnselect(this->driver);
|
||
| 51 | spiReleaseBus(this->driver);
|
||
| 52 | } |
||
| 53 | |||
| 54 | } /* amiro */ |