Ultibo API
C/C++ API for Ultibo Core
Loading...
Searching...
No Matches
spi.h
Go to the documentation of this file.
1/*
2 * This file is part of the Ultibo project, https://ultibo.org/
3 *
4 * The MIT License (MIT)
5 *
6 * Copyright (c) 2026 Garry Wood <garry@softoz.com.au>
7 *
8 * Permission is hereby granted, free of charge, to any person obtaining a copy
9 * of this software and associated documentation files (the "Software"), to deal
10 * in the Software without restriction, including without limitation the rights
11 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
12 * copies of the Software, and to permit persons to whom the Software is
13 * furnished to do so, subject to the following conditions:
14 *
15 * The above copyright notice and this permission notice shall be included in
16 * all copies or substantial portions of the Software.
17 *
18 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
19 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
20 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
21 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
22 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
23 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
24 * THE SOFTWARE.
25 */
26#ifndef _ULTIBO_SPI_H
27#define _ULTIBO_SPI_H
28
29#ifdef __cplusplus
30extern "C" {
31#endif
32
33#include "ultibo/globaltypes.h"
34#include "ultibo/globalconst.h"
35#include "ultibo/devices.h"
36
38#define SPI_NAME_PREFIX "SPI"
39#define SPISLAVE_NAME_PREFIX "SPISlave"
40
42#define SPI_TYPE_NONE 0
43#define SPI_TYPE_MASTER 1
44#define SPI_TYPE_SLAVE 2
45
46#define SPI_TYPE_MAX 2
47
49#define SPI_STATE_DISABLED 0
50#define SPI_STATE_ENABLED 1
51
52#define SPI_STATE_MAX 1
53
55#define SPI_FLAG_NONE 0x00000000
56#define SPI_FLAG_SLAVE 0x00000001
57#define SPI_FLAG_4WIRE 0x00000002
58#define SPI_FLAG_3WIRE 0x00000004
59#define SPI_FLAG_LOSSI 0x00000008
60#define SPI_FLAG_CPOL 0x00000010
61#define SPI_FLAG_CPHA 0x00000020
62#define SPI_FLAG_CSPOL 0x00000040
63#define SPI_FLAG_NO_CS 0x00000080
64#define SPI_FLAG_DMA 0x00000100
65
67#define SPI_TRANSFER_NONE 0x00000000
68#define SPI_TRANSFER_DMA 0x00000001
69#define SPI_TRANSFER_PIO 0x00000002
70#define SPI_TRANSFER_DELAY 0x00000004
71
73
77{
78 uint32_t flags;
79 uint32_t maxsize;
80 uint32_t minclock;
81 uint32_t maxclock;
82 uint32_t selectcount;
83 uint32_t mode;
84 uint32_t clockrate;
85 uint32_t clockphase;
86 uint32_t clockpolarity;
87 uint32_t selectpolarity;
88 uint32_t bytedelay;
89};
90
91
95{
96 uint32_t pin;
97 uint32_t mode;
98 uint32_t divider;
99 uint32_t clockrate;
100 uint32_t clockphase;
101 uint32_t clockpolarity;
102 uint32_t selectpolarity;
103 uint32_t bytedelay;
104};
105
106
108typedef struct _SPI_DEVICE SPI_DEVICE;
109
111typedef uint32_t STDCALL (*spi_enumerate_cb)(SPI_DEVICE *spi, void *data);
113typedef uint32_t STDCALL (*spi_notification_cb)(DEVICE *device, void *data, uint32_t notification);
114
116typedef uint32_t STDCALL (*spi_device_start_proc)(SPI_DEVICE *spi, uint32_t mode, uint32_t clockrate, uint32_t clockphase, uint32_t clockpolarity);
117typedef uint32_t STDCALL (*spi_device_stop_proc)(SPI_DEVICE *spi);
118
119typedef uint32_t STDCALL (*spi_device_read_proc)(SPI_DEVICE *spi, uint16_t chipselect, void *dest, uint32_t size, uint32_t flags, uint32_t *count);
120typedef uint32_t STDCALL (*spi_device_write_proc)(SPI_DEVICE *spi, uint16_t chipselect, void *source, uint32_t size, uint32_t flags, uint32_t *count);
121typedef uint32_t STDCALL (*spi_device_write_read_proc)(SPI_DEVICE *spi, uint16_t chipselect, void *source, void *dest, uint32_t size, uint32_t flags, uint32_t *count);
122
124typedef uint32_t STDCALL (*spi_device_set_mode_proc)(SPI_DEVICE *spi, uint32_t mode);
125
126typedef uint32_t STDCALL (*spi_device_get_clock_rate_proc)(SPI_DEVICE *spi, uint16_t chipselect);
127typedef uint32_t STDCALL (*spi_device_set_clock_rate_proc)(SPI_DEVICE *spi, uint16_t chipselect, uint32_t clockrate);
128
131
134
135typedef uint32_t STDCALL (*spi_device_get_select_polarity_proc)(SPI_DEVICE *spi, uint16_t chipselect);
136typedef uint32_t STDCALL (*spi_device_set_select_polarity_proc)(SPI_DEVICE *spi, uint16_t chipselect, uint32_t selectpolarity);
137
139typedef uint32_t STDCALL (*spi_device_set_byte_delay_proc)(SPI_DEVICE *spi, uint32_t delay);
140
142
144{
145 // Device Properties
147 // SPI Properties
148 uint32_t spiid;
149 uint32_t spistate;
150 uint32_t spimode;
169 // Statistics Properties
172 // Driver Properties
175 uint32_t divider;
176 uint32_t clockrate;
177 uint32_t clockphase;
178 uint32_t clockpolarity;
179 uint32_t selectpolarity;
180 uint32_t bytedelay;
183 // Internal Properties
186};
187
189
199uint32_t STDCALL spi_device_start(SPI_DEVICE *spi, uint32_t mode, uint32_t clockrate, uint32_t clockphase, uint32_t clockpolarity);
200
207
219uint32_t STDCALL spi_device_read(SPI_DEVICE *spi, uint16_t chipselect, void *dest, uint32_t size, uint32_t flags, uint32_t *count);
220
232uint32_t STDCALL spi_device_write(SPI_DEVICE *spi, uint16_t chipselect, void *source, uint32_t size, uint32_t flags, uint32_t *count);
233
246uint32_t STDCALL spi_device_write_read(SPI_DEVICE *spi, uint16_t chipselect, void *source, void *dest, uint32_t size, uint32_t flags, uint32_t *count);
247
254
261uint32_t STDCALL spi_device_set_mode(SPI_DEVICE *spi, uint32_t mode);
262
269uint32_t STDCALL spi_device_get_clock_rate(SPI_DEVICE *spi, uint16_t chipselect);
270
278uint32_t STDCALL spi_device_set_clock_rate(SPI_DEVICE *spi, uint16_t chipselect, uint32_t clockrate);
279
286
293uint32_t STDCALL spi_device_set_clock_phase(SPI_DEVICE *spi, uint32_t clockphase);
294
301
308uint32_t STDCALL spi_device_set_clock_polarity(SPI_DEVICE *spi, uint32_t clockpolarity);
309
316uint32_t STDCALL spi_device_get_select_polarity(SPI_DEVICE *spi, uint16_t chipselect);
317
325uint32_t STDCALL spi_device_set_select_polarity(SPI_DEVICE *spi, uint16_t chipselect, uint32_t selectpolarity);
326
333
340uint32_t STDCALL spi_device_set_byte_delay(SPI_DEVICE *spi, uint32_t delay);
341
350
358
364
371
378
385
392
399
406
413
420uint32_t STDCALL spi_device_enumerate(spi_enumerate_cb callback, void *data);
421
430uint32_t STDCALL spi_device_notification(SPI_DEVICE *spi, spi_notification_cb callback, void *data, uint32_t notification, uint32_t flags);
431
433
437uint32_t STDCALL spi_get_count(void);
438
443
448
453
457uint32_t STDCALL spi_type_to_string(uint32_t spitype, char *string, uint32_t len);
458
462uint32_t STDCALL spi_state_to_string(uint32_t spistate, char *string, uint32_t len);
463
464uint32_t STDCALL spi_chip_select_to_string(uint16_t chipselect, char *string, uint32_t len);
465uint32_t STDCALL spi_mode_to_string(uint32_t mode, char *string, uint32_t len);
466uint32_t STDCALL spi_clock_phase_to_string(uint32_t phase, char *string, uint32_t len);
467uint32_t STDCALL spi_clock_polarity_to_string(uint32_t polarity, char *string, uint32_t len);
468uint32_t STDCALL spi_select_polarity_to_string(uint32_t polarity, char *string, uint32_t len);
469
470#ifdef __cplusplus
471}
472#endif
473
474#endif // _ULTIBO_SPI_H
struct _DEVICE DEVICE
Definition devices.h:373
#define SPI_CS_MAX
Definition globalconst.h:1486
#define STDCALL
Definition globaltypes.h:45
HANDLE SEMAPHORE_HANDLE
Definition globaltypes.h:107
HANDLE MUTEX_HANDLE
Definition globaltypes.h:105
uint32_t STDCALL(* spi_device_get_clock_polarity_proc)(SPI_DEVICE *spi)
Definition spi.h:132
SPI_DEVICE *STDCALL spi_device_create(void)
Create a new SPI entry.
uint32_t STDCALL(* spi_device_write_read_proc)(SPI_DEVICE *spi, uint16_t chipselect, void *source, void *dest, uint32_t size, uint32_t flags, uint32_t *count)
Definition spi.h:121
uint32_t STDCALL spi_mode_to_string(uint32_t mode, char *string, uint32_t len)
uint32_t STDCALL(* spi_device_set_clock_polarity_proc)(SPI_DEVICE *spi, uint32_t clockpolarity)
Definition spi.h:133
uint32_t STDCALL(* spi_device_read_proc)(SPI_DEVICE *spi, uint16_t chipselect, void *dest, uint32_t size, uint32_t flags, uint32_t *count)
Definition spi.h:119
uint32_t STDCALL spi_type_to_string(uint32_t spitype, char *string, uint32_t len)
Convert an SPI type value to a string.
uint32_t STDCALL spi_device_set_byte_delay(SPI_DEVICE *spi, uint32_t delay)
Set the delay between bytes written for the specified SPI device.
uint32_t STDCALL spi_clock_polarity_to_string(uint32_t polarity, char *string, uint32_t len)
uint32_t STDCALL(* spi_device_set_select_polarity_proc)(SPI_DEVICE *spi, uint16_t chipselect, uint32_t selectpolarity)
Definition spi.h:136
uint32_t STDCALL(* spi_device_start_proc)(SPI_DEVICE *spi, uint32_t mode, uint32_t clockrate, uint32_t clockphase, uint32_t clockpolarity)
Definition spi.h:116
uint32_t STDCALL spi_chip_select_to_string(uint16_t chipselect, char *string, uint32_t len)
uint32_t STDCALL(* spi_enumerate_cb)(SPI_DEVICE *spi, void *data)
Definition spi.h:111
uint32_t STDCALL spi_device_destroy(SPI_DEVICE *spi)
Destroy an existing SPI entry.
uint32_t STDCALL(* spi_device_set_clock_rate_proc)(SPI_DEVICE *spi, uint16_t chipselect, uint32_t clockrate)
Definition spi.h:127
uint32_t STDCALL(* spi_device_write_proc)(SPI_DEVICE *spi, uint16_t chipselect, void *source, uint32_t size, uint32_t flags, uint32_t *count)
Definition spi.h:120
uint32_t STDCALL(* spi_device_set_clock_phase_proc)(SPI_DEVICE *spi, uint32_t clockphase)
Definition spi.h:130
uint32_t STDCALL spi_device_get_byte_delay(SPI_DEVICE *spi)
Get the delay between bytes written for the specified SPI device.
uint32_t STDCALL spi_device_register(SPI_DEVICE *spi)
Register a new SPI in the SPI table.
uint32_t STDCALL(* spi_device_get_properties_proc)(SPI_DEVICE *spi, SPI_PROPERTIES *properties)
Definition spi.h:141
uint32_t STDCALL spi_device_get_properties(SPI_DEVICE *spi, SPI_PROPERTIES *properties)
Get the properties for the specified SPI device.
SPI_DEVICE *STDCALL spi_device_find_by_description(const char *description)
Find an SPI device by description in the device table.
SPI_DEVICE *STDCALL spi_device_find_by_name(const char *name)
Find an SPI device by name in the device table.
uint32_t STDCALL spi_device_get_clock_rate(SPI_DEVICE *spi, uint16_t chipselect)
Get the clock rate of the specified SPI device.
struct _SPI_PROPERTIES SPI_PROPERTIES
Definition spi.h:75
uint32_t STDCALL spi_device_set_clock_polarity(SPI_DEVICE *spi, uint32_t clockpolarity)
Set the clock polarity for the specified SPI device.
uint32_t STDCALL(* spi_device_get_select_polarity_proc)(SPI_DEVICE *spi, uint16_t chipselect)
Definition spi.h:135
uint32_t STDCALL spi_device_start(SPI_DEVICE *spi, uint32_t mode, uint32_t clockrate, uint32_t clockphase, uint32_t clockpolarity)
Start the specified SPI device ready for writing and reading.
uint32_t STDCALL(* spi_device_get_clock_phase_proc)(SPI_DEVICE *spi)
Definition spi.h:129
uint32_t STDCALL spi_device_set_select_polarity(SPI_DEVICE *spi, uint16_t chipselect, uint32_t selectpolarity)
Set the chip select polarity for the specified SPI device.
uint32_t STDCALL spi_device_set_clock_phase(SPI_DEVICE *spi, uint32_t clockphase)
Set the clock phase for the specified SPI device.
uint32_t STDCALL spi_device_write(SPI_DEVICE *spi, uint16_t chipselect, void *source, uint32_t size, uint32_t flags, uint32_t *count)
Write data to the specified SPI device Because SPI writes and then reads for each byte,...
struct _SPI_CHIP_SELECT SPI_CHIP_SELECT
Definition spi.h:93
uint32_t STDCALL spi_state_to_string(uint32_t spistate, char *string, uint32_t len)
Convert an SPI state value to a string.
SPI_DEVICE *STDCALL spi_device_check(SPI_DEVICE *spi)
Check if the supplied SPI is in the SPI table.
uint32_t STDCALL(* spi_device_stop_proc)(SPI_DEVICE *spi)
Definition spi.h:117
uint32_t STDCALL spi_device_enumerate(spi_enumerate_cb callback, void *data)
Enumerate all SPI devices in the SPI table.
uint32_t STDCALL spi_device_read(SPI_DEVICE *spi, uint16_t chipselect, void *dest, uint32_t size, uint32_t flags, uint32_t *count)
Read data from the specified SPI device Because SPI writes and then reads for each byte,...
uint32_t STDCALL spi_device_notification(SPI_DEVICE *spi, spi_notification_cb callback, void *data, uint32_t notification, uint32_t flags)
Register a notification for SPI device changes.
uint32_t STDCALL(* spi_notification_cb)(DEVICE *device, void *data, uint32_t notification)
Definition spi.h:113
uint32_t STDCALL spi_clock_phase_to_string(uint32_t phase, char *string, uint32_t len)
uint32_t STDCALL spi_select_polarity_to_string(uint32_t polarity, char *string, uint32_t len)
uint32_t STDCALL spi_device_get_mode(SPI_DEVICE *spi)
Get the device mode of the specified SPI device.
uint32_t STDCALL spi_device_deregister(SPI_DEVICE *spi)
Deregister an SPI from the SPI table.
uint32_t STDCALL(* spi_device_get_byte_delay_proc)(SPI_DEVICE *spi)
Definition spi.h:138
uint32_t STDCALL(* spi_device_set_byte_delay_proc)(SPI_DEVICE *spi, uint32_t delay)
Definition spi.h:139
uint32_t STDCALL spi_get_count(void)
Get the current SPI count.
uint32_t STDCALL spi_device_set_mode(SPI_DEVICE *spi, uint32_t mode)
Set the device mode for the specified SPI device.
uint32_t STDCALL spi_device_get_select_polarity(SPI_DEVICE *spi, uint16_t chipselect)
Get the chip select polarity of the specified SPI device.
uint32_t STDCALL spi_device_set_default(SPI_DEVICE *spi)
Set the current default SPI device.
uint32_t STDCALL spi_device_stop(SPI_DEVICE *spi)
Stop the specified SPI device and terminate writing and reading.
uint32_t STDCALL spi_device_get_clock_phase(SPI_DEVICE *spi)
Get the clock phase of the specified SPI device.
struct _SPI_DEVICE SPI_DEVICE
Definition spi.h:108
uint32_t STDCALL(* spi_device_get_clock_rate_proc)(SPI_DEVICE *spi, uint16_t chipselect)
Definition spi.h:126
uint32_t STDCALL(* spi_device_set_mode_proc)(SPI_DEVICE *spi, uint32_t mode)
Definition spi.h:124
uint32_t STDCALL spi_device_set_clock_rate(SPI_DEVICE *spi, uint16_t chipselect, uint32_t clockrate)
Set the clock rate for the specified SPI device.
uint32_t STDCALL(* spi_device_get_mode_proc)(SPI_DEVICE *spi)
Definition spi.h:123
SPI_DEVICE *STDCALL spi_device_create_ex(uint32_t size)
Create a new SPI entry.
SPI_DEVICE *STDCALL spi_device_find(uint32_t spiid)
Find an SPI device by ID in the SPI table.
uint32_t STDCALL spi_device_write_read(SPI_DEVICE *spi, uint16_t chipselect, void *source, void *dest, uint32_t size, uint32_t flags, uint32_t *count)
Write data to and Read data from the specified SPI device in one operation Because SPI writes and the...
SPI_DEVICE *STDCALL spi_device_get_default(void)
Get the current default SPI device.
uint32_t STDCALL spi_device_properties(SPI_DEVICE *spi, SPI_PROPERTIES *properties)
Get the properties for the specified SPI device.
uint32_t STDCALL spi_device_get_clock_polarity(SPI_DEVICE *spi)
Get the clock polarity of the specified SPI device.
Definition spi.h:95
uint32_t selectpolarity
The chip select polarity for this chip select (eg SPI_CS_POLARITY_LOW).
Definition spi.h:102
uint32_t pin
The GPIO pin for this chip select (eg GPIO_PIN_46)(GPIO_PIN_UNKNOWN for internal).
Definition spi.h:96
uint32_t bytedelay
Delay between bytes written for this chip select (Microseconds).
Definition spi.h:103
uint32_t mode
The mode for this chip select (eg SPI_MODE_0).
Definition spi.h:97
uint32_t clockphase
The clock phase (CPHA) for this chip select (eg SPI_CLOCK_PHASE_LOW).
Definition spi.h:100
uint32_t clockpolarity
The clock polarity (CPOL) for this chip select (eg SPI_CLOCK_POLARITY_LOW).
Definition spi.h:101
uint32_t divider
The clock divider for this chip select (Used internally by drivers).
Definition spi.h:98
uint32_t clockrate
The clock rate for this chip select.
Definition spi.h:99
Definition spi.h:144
uint32_t spimode
SPI mode (eg SPI_MODE_4WIRE).
Definition spi.h:150
MUTEX_HANDLE lock
Device lock.
Definition spi.h:173
SPI_DEVICE * next
Next entry in SPI table.
Definition spi.h:185
uint32_t selectpolarity
Default Chip Select Polarity (eg SPI_CS_POLARITY_LOW).
Definition spi.h:179
spi_device_get_byte_delay_proc devicegetbytedelay
A Device specific DeviceGetByteDelay method implementing the standard SPI device interface (Or nil if...
Definition spi.h:166
SPI_CHIP_SELECT chipselects[SPI_CS_MAX+1]
Chip selects.
Definition spi.h:182
uint32_t transfercount
Definition spi.h:170
uint32_t bytedelay
Delay between bytes written (Microseconds).
Definition spi.h:180
spi_device_get_mode_proc devicegetmode
A Device specific DeviceGetMode method implementing the standard SPI device interface (Or nil if the ...
Definition spi.h:156
uint32_t transfererrors
Definition spi.h:171
SPI_DEVICE * prev
Previous entry in SPI table.
Definition spi.h:184
spi_device_set_clock_phase_proc devicesetclockphase
A Device specific DeviceSetClockPhase method implementing the standard SPI device interface (Or nil i...
Definition spi.h:161
DEVICE device
The Device entry for this SPI.
Definition spi.h:146
SPI_PROPERTIES properties
Device properties.
Definition spi.h:181
uint32_t spistate
SPI state (eg SPI_STATE_ENABLED).
Definition spi.h:149
spi_device_set_select_polarity_proc devicesetselectpolarity
A Device specific DeviceSetSelectPolarity method implementing the standard SPI device interface (Or n...
Definition spi.h:165
spi_device_stop_proc devicestop
A Device specific DeviceStop method implementing the standard SPI device interface (Mandatory).
Definition spi.h:152
spi_device_write_proc devicewrite
A Device specific DeviceWrite method implementing the standard SPI device interface (Or nil if the de...
Definition spi.h:154
uint32_t clockphase
Clock Phase (eg SPI_CLOCK_PHASE_LOW).
Definition spi.h:177
spi_device_get_clock_polarity_proc devicegetclockpolarity
A Device specific DeviceGetClockPolarity method implementing the standard SPI device interface (Or ni...
Definition spi.h:162
spi_device_get_select_polarity_proc devicegetselectpolarity
A Device specific DeviceGetSelectPolarity method implementing the standard SPI device interface (Or n...
Definition spi.h:164
spi_device_get_properties_proc devicegetproperties
A Device specific DeviceGetProperties method implementing the standard SPI device interface (Or nil i...
Definition spi.h:168
spi_device_start_proc devicestart
A Device specific DeviceStart method implementing the standard SPI device interface (Mandatory).
Definition spi.h:151
spi_device_set_clock_polarity_proc devicesetclockpolarity
A Device specific DeviceSetClockPolarity method implementing the standard SPI device interface (Or ni...
Definition spi.h:163
spi_device_get_clock_rate_proc devicegetclockrate
A Device specific DeviceGetClockRate method implementing the standard SPI device interface (Or nil if...
Definition spi.h:158
uint32_t clockpolarity
Clock Polarity (eg SPI_CLOCK_POLARITY_LOW).
Definition spi.h:178
spi_device_get_clock_phase_proc devicegetclockphase
A Device specific DeviceGetClockPhase method implementing the standard SPI device interface (Or nil i...
Definition spi.h:160
uint32_t divider
Clock divider (Used internally by drivers).
Definition spi.h:175
spi_device_read_proc deviceread
A Device specific DeviceRead method implementing the standard SPI device interface (Or nil if the def...
Definition spi.h:153
spi_device_write_read_proc devicewriteread
A Device specific DeviceWriteRead method implementing the standard SPI device interface (Mandatory).
Definition spi.h:155
uint32_t clockrate
Clock rate (Hz).
Definition spi.h:176
SEMAPHORE_HANDLE wait
Write/Read wait event.
Definition spi.h:174
spi_device_set_clock_rate_proc devicesetclockrate
A Device specific DeviceSetClockRate method implementing the standard SPI device interface (Or nil if...
Definition spi.h:159
uint32_t spiid
Unique Id of this SPI in the SPI table.
Definition spi.h:148
spi_device_set_mode_proc devicesetmode
A Device specific DeviceSetMode method implementing the standard SPI device interface (Or nil if the ...
Definition spi.h:157
spi_device_set_byte_delay_proc devicesetbytedelay
A Device specific DeviceSetByteDelay method implementing the standard SPI device interface (Or nil if...
Definition spi.h:167
Definition spi.h:77
uint32_t maxclock
Maximum supported clock rate.
Definition spi.h:81
uint32_t selectpolarity
Default chip select polarity (eg SPI_CS_POLARITY_LOW).
Definition spi.h:87
uint32_t bytedelay
Delay between bytes written (Microseconds).
Definition spi.h:88
uint32_t mode
Current mode (eg SPI_MODE_4WIRE).
Definition spi.h:83
uint32_t flags
Device flags (eg SPI_FLAG_SLAVE).
Definition spi.h:78
uint32_t clockphase
Current clock phase (CPHA) (eg SPI_CLOCK_PHASE_LOW).
Definition spi.h:85
uint32_t clockpolarity
Current clock polarity (CPOL) (eg SPI_CLOCK_POLARITY_LOW).
Definition spi.h:86
uint32_t minclock
Minimum supported clock rate.
Definition spi.h:80
uint32_t maxsize
Maximum supported data transfer size.
Definition spi.h:79
uint32_t clockrate
Current clock rate.
Definition spi.h:84
uint32_t selectcount
Number of chip selects supported.
Definition spi.h:82