spi.h
Go to the documentation of this file.
1 /*
2  * KubOS HAL
3  * Copyright (C) 2016 Kubos Corporation
4  *
5  * Licensed under the Apache License, Version 2.0 (the "License");
6  * you may not use this file except in compliance with the License.
7  * You may obtain a copy of the License at
8  *
9  * http://www.apache.org/licenses/LICENSE-2.0
10  *
11  * Unless required by applicable law or agreed to in writing, software
12  * distributed under the License is distributed on an "AS IS" BASIS,
13  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14  * See the License for the specific language governing permissions and
15  * limitations under the License.
16  */
27 #ifndef K_SPI_H
28 #define K_SPI_H
29 
30 #include "FreeRTOS.h"
31 #include "semphr.h"
32 
43 #ifndef K_NUM_SPI
44 #define K_NUM_SPI YOTTA_CFG_HARDWARE_SPICOUNT
45 #endif
46 
59 #define DEFAULT_SPI YOTTA_CFG_HARDWARE_DEFAULTS_SPI
60 
64 typedef enum {
65  K_SPI1 = 0,
67 } KSPINum;
68 
72 typedef enum {
75 } SPIRole;
76 
80 typedef enum {
84 } SPIDirection;
85 
89 typedef enum {
92 } SPIDataSize;
93 
97 typedef enum {
101 } KSPIStatus;
102 
106 typedef struct {
110  uint32_t speed;
111 } KSPIConf;
112 
116 typedef struct {
119  SemaphoreHandle_t spi_lock;
120 } KSPI;
121 
127 void k_spi_init(KSPINum spi, KSPIConf * conf);
128 
133 void k_spi_terminate(KSPINum spi);
134 
147 KSPIStatus k_spi_write(KSPINum spi, uint8_t * buffer, uint32_t len);
148 
161 KSPIStatus k_spi_read(KSPINum spi, uint8_t * buffer, uint32_t len);
162 
176 KSPIStatus k_spi_write_read(KSPINum spi, uint8_t * txBuffer, uint8_t * rxBuffer, uint32_t len);
177 
183 KSPI * kprv_spi_get(KSPINum spi);
184 
195 KSPIStatus kprv_spi_write(KSPINum spi, uint8_t * buffer, uint32_t len);
196 
207 KSPIStatus kprv_spi_read(KSPINum spi, uint8_t * buffer, uint32_t len);
208 
220 KSPIStatus kprv_spi_write_read(KSPINum spi, uint8_t * txBuffer, uint8_t * rxBuffer, uint32_t len);
221 
222 #endif
223 
224 /* @} */
KSPI * kprv_spi_get(KSPINum spi)
Definition: spi.h:66
KSPIStatus kprv_spi_read(KSPINum spi, uint8_t *buffer, uint32_t len)
SPIRole role
Definition: spi.h:107
Definition: spi.h:106
KSPIStatus k_spi_write(KSPINum spi, uint8_t *buffer, uint32_t len)
Definition: spi.h:82
KSPINum
Definition: spi.h:64
SPIDirection
Definition: spi.h:80
void k_spi_init(KSPINum spi, KSPIConf *conf)
Definition: spi.h:91
KSPIStatus k_spi_read(KSPINum spi, uint8_t *buffer, uint32_t len)
SPIDataSize
Definition: spi.h:89
Definition: spi.h:81
SPIDataSize data_size
Definition: spi.h:109
Definition: spi.h:90
SPIDirection direction
Definition: spi.h:108
SemaphoreHandle_t spi_lock
Definition: spi.h:119
Definition: spi.h:65
KSPIStatus
Definition: spi.h:97
KSPINum bus_num
Definition: spi.h:118
Definition: spi.h:116
uint32_t speed
Definition: spi.h:110
Definition: spi.h:83
Definition: spi.h:99
KSPIStatus kprv_spi_write_read(KSPINum spi, uint8_t *txBuffer, uint8_t *rxBuffer, uint32_t len)
KSPIStatus kprv_spi_write(KSPINum spi, uint8_t *buffer, uint32_t len)
Definition: spi.h:98
KSPIStatus k_spi_write_read(KSPINum spi, uint8_t *txBuffer, uint8_t *rxBuffer, uint32_t len)
Definition: spi.h:100
SPIRole
Definition: spi.h:72
Definition: spi.h:74
KSPIConf config
Definition: spi.h:117
Definition: spi.h:73
void k_spi_terminate(KSPINum spi)