1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
|
#include "sdkconfig.h"
#include "freertos/FreeRTOS.h"
#include "freertos/task.h"
#include "esp_system.h"
#include "esp_spi_flash.h"
#include "driver/spi_master.h"
#ifdef CONFIG_IDF_TARGET_ESP32
#define LCD_HOST HSPI_HOST
#define PIN_NUM_MISO 25
#define PIN_NUM_MOSI 23
#define PIN_NUM_CLK 19
#define PIN_NUM_CS 22
#define PIN_NUM_DC 21
#define PIN_NUM_RST 18
#define PIN_NUM_BCKL 5
#elif defined CONFIG_IDF_TARGET_ESP32S2
#define LCD_HOST SPI2_HOST
#define PIN_NUM_MISO 37
#define PIN_NUM_MOSI 35
#define PIN_NUM_CLK 36
#define PIN_NUM_CS 34
#define PIN_NUM_DC 4
#define PIN_NUM_RST 5
#define PIN_NUM_BCKL 6
#elif defined CONFIG_IDF_TARGET_ESP32C3
#define LCD_HOST SPI2_HOST
#define PIN_NUM_MISO 2
#define PIN_NUM_MOSI 7
#define PIN_NUM_CLK 6
#define PIN_NUM_CS 10
#define PIN_NUM_DC 9
#define PIN_NUM_RST 4
#define PIN_NUM_BCKL 5
#endif
void ws_init()
{
}
uint8_t buffer[256];
void app_main(void)
{
esp_err_t error;
spi_device_handle_t spi;
spi_bus_config_t cfg = {
.miso_io_num = PIN_NUM_MISO,
.mosi_io_num = PIN_NUM_MOSI,
.sclk_io_num = PIN_NUM_CLK,
.quadwp_io_num = -1,
.quadhd_io_num = -1,
.max_transfer_sz = 320 * 2 + 8,
};
spi_device_interface_config_t devcfg = {
.clock_speed_hz = 25 * 100 * 1000, /* 2.5 MHz */
.mode = 0,
.spics_io_num = PIN_NUM_CS,
.queue_size = 7,
.pre_cb = NULL,
};
printf("Hello, World!\n");
printf("miso: %d\n", PIN_NUM_MISO);
printf("mosi: %d\n", PIN_NUM_MOSI);
printf("sclk: %d\n", PIN_NUM_CLK);
error = spi_bus_initialize(HSPI_HOST, &cfg, SPI_DMA_CH_AUTO);
printf("Bus Init\n");
ESP_ERROR_CHECK(error);
error = spi_bus_add_device(HSPI_HOST, &devcfg, &spi);
printf("Add Device\n");
ESP_ERROR_CHECK(error);
printf("Configuration complete!!\n");
for (int i = 0; i < sizeof(buffer); ++ i) {
buffer[i] = 0xfa;
}
spi_transaction_t t = {0};
t.tx_buffer = buffer;
t.length = sizeof(buffer) * 8;
spi_transaction_t* rt;
while (1) {
error = spi_device_queue_trans(spi, &t, portMAX_DELAY);
assert(error == ESP_OK);
printf("SPI Transaction Equeued!!\n");
error = spi_device_get_trans_result(spi, &rt, portMAX_DELAY);
assert(error == ESP_OK);
printf("SPI Transaction Sent!!\n");
}
}
|