libyggdrasil  v1.0.0
spi.h
Go to the documentation of this file.
1  /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
2  * _____.___. .___ .__.__ *
3  * \__ | | ____ ____ __| _/___________ _____|__| | *
4  * / | |/ ___\ / ___\ / __ |\_ __ \__ \ / ___/ | | *
5  * \____ / /_/ > /_/ > /_/ | | | \// __ \_\___ \| | |__ *
6  * / ______\___ /\___ /\____ | |__| (____ /____ >__|____/ *
7  * \/ /_____//_____/ \/ \/ \/ *
8  * - Midgard - *
9  * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
10  * This software can be used by students and other personal of the *
11  * Bern University of Applied Sciences under the terms of the MIT *
12  * license. *
13  * For other persons this software is under the terms of the GNU *
14  * General Public License version 2. *
15  * *
16  * Copyright © 2021, Bern University of Applied Sciences. *
17  * All rights reserved. *
18  * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
26 #include <c/common/types.h>
27 
28 #include <stm32f7xx_hal.h>
29 
33 typedef struct {
34  SPI_HandleTypeDef *interface;
35 } spi_t;
36 
37 
41 enum SPIMode {
42  SPIMode_0 = 0b00,
43  SPIMode_1 = 0b01,
44  SPIMode_2 = 0b10,
45  SPIMode_3 = 0b11,
46 };
47 
55 
63 
71 C_LINKAGE void yggdrasil_SPI_Write(spi_t spi, void *data, size_t size);
72 
80 C_LINKAGE void yggdrasil_SPI_Read(spi_t spi, void *data, size_t size);
81 
89 C_LINKAGE void yggdrasil_SPI_SetMode(spi_t spi, enum SPIMode mode);
yggdrasil_SPI_Init
C_LINKAGE bool yggdrasil_SPI_Init(spi_t spi)
SPI initialization.
Definition: spi.cpp:39
types.h
Commonly used type definitions and helper templates.
SPIMode_3
@ SPIMode_3
CPOL = 1 | CPHA = 1.
Definition: spi.h:45
SPIMode_2
@ SPIMode_2
CPOL = 1 | CPHA = 0.
Definition: spi.h:44
SPIMode_1
@ SPIMode_1
CPOL = 0 | CPHA = 1.
Definition: spi.h:43
SPIMode_0
@ SPIMode_0
CPOL = 0 | CPHA = 0.
Definition: spi.h:42
yggdrasil_SPI_Read
C_LINKAGE void yggdrasil_SPI_Read(spi_t spi, void *data, size_t size)
SPI read.
Definition: spi.cpp:51
yggdrasil_SPI_Deinit
C_LINKAGE bool yggdrasil_SPI_Deinit(spi_t spi)
SPI deinitialization.
Definition: spi.cpp:43
yggdrasil_SPI_Write
C_LINKAGE void yggdrasil_SPI_Write(spi_t spi, void *data, size_t size)
SPI write.
Definition: spi.cpp:47
spi_t
SPI handle type.
Definition: spi.h:33
yggdrasil_SPI_SetMode
C_LINKAGE void yggdrasil_SPI_SetMode(spi_t spi, enum SPIMode mode)
Set the spi mode (CPOL and CPHA)
Definition: spi.cpp:55
SPIMode
SPIMode
SPI modes.
Definition: spi.h:41
C_LINKAGE
#define C_LINKAGE
Definition: attributes.h:43
spi_t::interface
SPI_HandleTypeDef * interface
Definition: spi.h:34