Core2 for AWS IoT EduKit BSP 1.5.1
disp_spi.h
Go to the documentation of this file.
6#ifndef DISP_SPI_H
7#define DISP_SPI_H
8
9#ifdef __cplusplus
10extern "C" {
11#endif
12
13#include <stdint.h>
14#include <stdbool.h>
15#include <driver/spi_master.h>
16
17typedef enum _disp_spi_send_flag_t {
22 DISP_SPI_RECEIVE = 0x00000008,
23 DISP_SPI_CMD_8 = 0x00000010, /* Reserved */
24 DISP_SPI_CMD_16 = 0x00000020, /* Reserved */
25 DISP_SPI_ADDRESS_8 = 0x00000040, /* Reserved */
26 DISP_SPI_ADDRESS_16 = 0x00000080, /* Reserved */
27 DISP_SPI_ADDRESS_24 = 0x00000100, /* Reserved */
28 DISP_SPI_ADDRESS_32 = 0x00000200, /* Reserved */
29 DISP_SPI_MODE_DIO = 0x00000400, /* Reserved */
30 DISP_SPI_MODE_QIO = 0x00000800, /* Reserved */
31 DISP_SPI_MODE_DIOQIO_ADDR = 0x00001000, /* Reserved */
33
34typedef struct _disp_spi_read_data {
35 uint8_t _dummy_byte;
36 union {
37 uint8_t byte;
38 uint16_t word;
39 uint32_t dword;
40 } __attribute__((packed));
41} disp_spi_read_data __attribute__((aligned(4)));
42
49/* @[declare_spi_mutex] */
50extern SemaphoreHandle_t spi_mutex;
51/* @[declare_spi_mutex] */
52
53void disp_spi_add_device(spi_host_device_t host);
54void disp_spi_add_device_config(spi_host_device_t host, spi_device_interface_config_t *devcfg);
55void disp_spi_transaction(const uint8_t *data, size_t length,
56 disp_spi_send_flag_t flags, disp_spi_read_data *out, uint64_t addr);
58
59static inline void disp_spi_send_data(uint8_t *data, size_t length) {
60 disp_spi_transaction(data, length, DISP_SPI_SEND_POLLING, NULL, 0);
61}
62
63static inline void disp_spi_send_colors(uint8_t *data, size_t length) {
64 disp_spi_transaction(data, length,
66 NULL, 0);
67}
68
81/* @[declare_spi_poll] */
82void spi_poll();
83/* @[declare_spi_poll] */
84
85
86/* @brief Receive data helpers */
87#define member_size(type, member) sizeof(((type *)0)->member)
88
89#define SPI_READ_DUMMY_LEN member_size(disp_spi_read_data, _dummy_byte)
90#define SPI_READ_BYTE_LEN (SPI_READ_DUMMY_LEN + member_size(disp_spi_read_data, byte))
91#define SPI_READ_WORD_LEN (SPI_READ_DUMMY_LEN + member_size(disp_spi_read_data, word))
92#define SPI_READ_DWORD_LEN (SPI_READ_DUMMY_LEN + member_size(disp_spi_read_data, dword))
93
94#ifdef __cplusplus
95} /* extern "C" */
96#endif
97
98#endif /*DISP_SPI_H*/
uint32_t dword
Definition: disp_spi.h:2
void disp_spi_transaction(const uint8_t *data, size_t length, disp_spi_send_flag_t flags, disp_spi_read_data *out, uint64_t addr)
Definition: disp_spi.c:77
struct _disp_spi_read_data __attribute__((aligned(4)))
void spi_poll()
Polls the SPI bus for a pending SPI transaction to complete.
Definition: disp_spi.c:34
SemaphoreHandle_t spi_mutex
Semaphore for the shared SPI bus.
Definition: disp_spi.c:21
uint8_t _dummy_byte
Definition: disp_spi.h:0
uint8_t byte
Definition: disp_spi.h:0
disp_spi_send_flag_t
Definition: disp_spi.h:17
@ DISP_SPI_MODE_DIO
Definition: disp_spi.h:29
@ DISP_SPI_MODE_DIOQIO_ADDR
Definition: disp_spi.h:31
@ DISP_SPI_SEND_SYNCHRONOUS
Definition: disp_spi.h:20
@ DISP_SPI_SEND_POLLING
Definition: disp_spi.h:19
@ DISP_SPI_ADDRESS_24
Definition: disp_spi.h:27
@ DISP_SPI_ADDRESS_8
Definition: disp_spi.h:25
@ DISP_SPI_SIGNAL_FLUSH
Definition: disp_spi.h:21
@ DISP_SPI_ADDRESS_16
Definition: disp_spi.h:26
@ DISP_SPI_MODE_QIO
Definition: disp_spi.h:30
@ DISP_SPI_ADDRESS_32
Definition: disp_spi.h:28
@ DISP_SPI_CMD_8
Definition: disp_spi.h:23
@ DISP_SPI_RECEIVE
Definition: disp_spi.h:22
@ DISP_SPI_SEND_QUEUED
Definition: disp_spi.h:18
@ DISP_SPI_CMD_16
Definition: disp_spi.h:24
void disp_spi_add_device(spi_host_device_t host)
Definition: disp_spi.c:57
void disp_spi_add_device_config(spi_host_device_t host, spi_device_interface_config_t *devcfg)
Definition: disp_spi.c:49
uint16_t word
Definition: disp_spi.h:1
void disp_wait_for_pending_transactions(void)
Definition: disp_spi.c:147