Core2 for AWS IoT EduKit BSP 1.5.1
core2forAWS.h
Go to the documentation of this file.
1
6#pragma once
7#include "axp192.h"
8#include "freertos/FreeRTOS.h"
9
10#if CONFIG_SOFTWARE_ILI9342C_SUPPORT || CONFIG_SOFTWARE_SDCARD_SUPPORT
11#include "freertos/semphr.h"
12#include "lvgl/lvgl.h"
13#include "disp_driver.h"
14#include "disp_spi.h"
15
42/* @[declare_xguisemaphore] */
43extern SemaphoreHandle_t xGuiSemaphore;
44/* @[declare_xguisemaphore] */
45#endif
46
47#if CONFIG_SOFTWARE_FT6336U_SUPPORT
48#include "ft6336u.h"
49#endif
50
51#if CONFIG_SOFTWARE_SK6812_SUPPORT
52#include "sk6812.h"
56/* @[declare_sk6812_side_left] */
57#define SK6812_SIDE_LEFT 0
58/* @[declare_sk6812_side_left] */
59
63/* @[declare_sk6812_side_right] */
64#define SK6812_SIDE_RIGHT 1
65/* @[declare_sk6812_side_right] */
66#endif
67
68#if CONFIG_SOFTWARE_BUTTON_SUPPORT
69#include "button.h"
70#endif
71
72#if CONFIG_SOFTWARE_MPU6886_SUPPORT
73#include "mpu6886.h"
74#endif
75
76#if CONFIG_SOFTWARE_RTC_SUPPORT
77#include "bm8563.h"
78#endif
79
80#if CONFIG_SOFTWARE_ATECC608_SUPPORT
81#include "cryptoauthlib.h"
82#include "atecc608.h"
83#endif
84
85#if CONFIG_SOFTWARE_SPEAKER_SUPPORT || CONFIG_SOFTWARE_MIC_SUPPORT
86#include "driver/i2s.h"
87#endif
88
89#if CONFIG_SOFTWARE_MIC_SUPPORT
90#include "microphone.h"
91#endif
92
93#if CONFIG_SOFTWARE_SPEAKER_SUPPORT
94#include "speaker.h"
95#endif
96
97#if CONFIG_SOFTWARE_SDCARD_SUPPORT
98#include "driver/gpio.h"
99#include "esp_freertos_hooks.h"
100#include "esp_vfs_fat.h"
101#include "sdmmc_cmd.h"
102#endif
103
104#if CONFIG_SOFTWARE_EXPPORTS_SUPPORT
105#include "driver/gpio.h"
106#include "driver/uart.h"
107#include "i2c_device.h"
108
115/* @[declare_port_a_sda_pin] */
116#define PORT_A_SDA_PIN GPIO_NUM_32
117/* @[declare_port_a_sda_pin] */
118
125/* @[declare_port_a_scl_pin] */
126#define PORT_A_SCL_PIN GPIO_NUM_33
127/* @[declare_port_a_scl_pin] */
128
136/* @[declare_port_b_adc_pin] */
137#define PORT_B_ADC_PIN GPIO_NUM_36
138/* @[declare_port_b_adc_pin] */
139
147/* @[declare_port_b_dac_pin] */
148#define PORT_B_DAC_PIN GPIO_NUM_26
149/* @[declare_port_b_dac_pin] */
150
158/* @[declare_port_c_uart_tx_pin] */
159#define PORT_C_UART_TX_PIN GPIO_NUM_14
160/* @[declare_port_c_uart_tx_pin] */
161
169/* @[declare_port_c_uart_rx_pin] */
170#define PORT_C_UART_RX_PIN GPIO_NUM_13
171/* @[declare_port_c_uart_rx_pin] */
172
179/* @[declare_port_c_uart_num] */
180#define PORT_C_UART_NUM UART_NUM_2
181/* @[declare_port_c_uart_num] */
182
190/* @[declare_port_a_i2c_standard_baud] */
191#define PORT_A_I2C_STANDARD_BAUD 100000
192/* @[declare_port_a_i2c_standard_baud] */
193
201/* @[declare_uart_rx_buf_size] */
202#define UART_RX_BUF_SIZE 2048
203/* @[declare_uart_rx_buf_size] */
204
211/* @[declare_pin_mode_t] */
212typedef enum {
216 I2C,
220 UART
225/* @[declare_pin_mode_t] */
226#endif
227
228#if CONFIG_SOFTWARE_ILI9342C_SUPPORT || CONFIG_SOFTWARE_SDCARD_SUPPORT
237/* @[declare_spi_host_use] */
238#define SPI_HOST_USE HSPI_HOST
239/* @[declare_spi_host_use] */
240
247/* @[declare_spi_dma_chan] */
248#define SPI_DMA_CHAN 2
249/* @[declare_spi_dma_chan] */
250#endif
251
268/* @[declare_core2foraws_init] */
269void Core2ForAWS_Init(void);
270/* @[declare_core2foraws_init] */
271
272#if CONFIG_SOFTWARE_BUTTON_SUPPORT
273
293/* @[declare_button_left] */
294extern Button_t* button_left;
295/* @[declare_button_left] */
296
316/* @[declare_button_middle] */
317extern Button_t* button_middle;
318/* @[declare_button_middle] */
319
341/* @[declare_button_right] */
342extern Button_t* button_right;
343/* @[declare_button_right] */
344
352/* @[declare_core2foraws_button_init] */
353void Core2ForAWS_Button_Init(void);
354/* @[declare_core2foraws_button_init] */
355#endif
356
357#if CONFIG_SOFTWARE_SPEAKER_SUPPORT
369/* @[declare_core2foraws_speaker_enable] */
370void Core2ForAWS_Speaker_Enable(bool state);
371/* @[declare_core2foraws_speaker_enable] */
372
373#endif
374
393/* @[declare_core2foraws_pmu_init] */
394void Core2ForAWS_PMU_Init(uint16_t ldo2_volt, uint16_t ldo3_volt, uint16_t dc2_volt, uint16_t dc3_volt);
395/* @[declare_core2foraws_pmu_init] */
396
411/* @[declare_core2foraws_pmu_getbatvolt] */
413/* @[declare_core2foraws_pmu_getbatvolt] */
414
429/* @[declare_core2foraws_pmu_getbatcurrent] */
431/* @[declare_core2foraws_pmu_getbatcurrent] */
432
433#if CONFIG_SOFTWARE_ILI9342C_SUPPORT
445/* @[declare_core2foraws_display_init] */
446void Core2ForAWS_Display_Init(void);
447/* @[declare_core2foraws_display_init] */
448
468/* @[declare_core2foraws_display_setbrightness] */
469void Core2ForAWS_Display_SetBrightness(uint8_t brightness);
470/* @[declare_core2foraws_display_setbrightness] */
471#endif
472
479/* @[declare_core2foraws_led_enable] */
480void Core2ForAWS_LED_Enable(uint8_t enable);
481/* @[declare_core2foraws_led_enable] */
482
490/* @[declare_core2foraws_motor_setstrength] */
491void Core2ForAWS_Motor_SetStrength(uint8_t strength);
492/* @[declare_core2foraws_motor_setstrength] */
493
494#if CONFIG_SOFTWARE_SK6812_SUPPORT
504/* @[declare_core2foraws_sk6812_init] */
505void Core2ForAWS_Sk6812_Init(void);
506/* @[declare_core2foraws_sk6812_init] */
507
536/* @[declare_core2foraws_sk6812_setcolor] */
537void Core2ForAWS_Sk6812_SetColor(uint16_t pos, uint32_t color);
538/* @[declare_core2foraws_sk6812_setcolor] */
539
565/* @[declare_core2foraws_sk6812_setsidecolor] */
566void Core2ForAWS_Sk6812_SetSideColor(uint8_t side, uint32_t color);
567/* @[declare_core2foraws_sk6812_setsidecolor] */
568
586/* @[declare_core2foraws_sk6812_setbrightness] */
587void Core2ForAWS_Sk6812_SetBrightness(uint8_t brightness);
588/* @[declare_core2foraws_sk6812_setbrightness] */
589
600/* @[declare_core2foraws_sk6812_show] */
601void Core2ForAWS_Sk6812_Show(void);
602/* @[declare_core2foraws_sk6812_show] */
603
618/* @[declare_core2foraws_sk6812_clear] */
619void Core2ForAWS_Sk6812_Clear(void);
620/* @[declare_core2foraws_sk6812_clear] */
621#endif
622
623#if CONFIG_SOFTWARE_SDCARD_SUPPORT
624
669/* @[declare_core2foraws_sdcard_mount] */
670esp_err_t Core2ForAWS_SDcard_Mount(const char *mount_path, sdmmc_card_t **out_card);
671/* @[declare_core2foraws_sdcard_mount] */
672
717/* @[declare_core2foraws_sdcard_unmount] */
718esp_err_t Core2ForAWS_SDcard_Unmount(const char *mount_path, sdmmc_card_t *out_card);
719/* @[declare_core2foraws_sdcard_unmount] */
720#endif
721
722#if CONFIG_SOFTWARE_EXPPORTS_SUPPORT
797/* @[declare_core2foraws_port_pinmode] */
798esp_err_t Core2ForAWS_Port_PinMode(gpio_num_t pin, pin_mode_t mode);
799/* @[declare_core2foraws_port_pinmode] */
800
853/* @[declare_core2foraws_port_read] */
854bool Core2ForAWS_Port_Read(gpio_num_t pin);
855/* @[declare_core2foraws_port_read] */
856
914/* @[declare_core2foraws_port_write] */
915esp_err_t Core2ForAWS_Port_Write(gpio_num_t pin, bool level);
916/* @[declare_core2foraws_port_write] */
917
985/* @[declare_core2foraws_port_a_i2c_begin] */
986I2CDevice_t Core2ForAWS_Port_A_I2C_Begin(uint8_t device_address, uint32_t baud);
987/* @[declare_core2foraws_port_a_i2c_begin] */
988
1053/* @[declare_core2foraws_port_a_i2c_read] */
1054esp_err_t Core2ForAWS_Port_A_I2C_Read(I2CDevice_t device, uint32_t register_address, uint8_t *data, uint16_t length);
1055/* @[declare_core2foraws_port_a_i2c_read] */
1056
1108/* @[declare_core2foraws_port_a_i2c_write] */
1109esp_err_t Core2ForAWS_Port_A_I2C_Write(I2CDevice_t device, uint32_t register_address, uint8_t *data, uint16_t length);
1110/* @[declare_core2foraws_port_a_i2c_write] */
1111
1152/* @[declare_core2foraws_port_a_i2c_close] */
1154/* @[declare_core2foraws_port_a_i2c_close] */
1155
1204/* @[declare_core2foraws_port_b_adc_readraw] */
1205uint32_t Core2ForAWS_Port_B_ADC_ReadRaw(void);
1206/* @[declare_core2foraws_port_b_adc_readraw] */
1207
1256/* @[declare_core2foraws_port_b_adc_readmillivolts] */
1258/* @[declare_core2foraws_port_b_adc_readmillivolts] */
1259
1291/* @[declare_core2foraws_port_b_dac_writemillivolts] */
1292esp_err_t Core2ForAWS_Port_B_DAC_WriteMilliVolts(uint16_t mvolts);
1293/* @[declare_core2foraws_port_b_dac_writemillivolts] */
1294
1375/* @[declare_core2foraws_port_c_uart_begin] */
1376esp_err_t Core2ForAWS_Port_C_UART_Begin(uint32_t baud);
1377/* @[declare_core2foraws_port_c_uart_begin] */
1378
1455/* @[declare_core2foraws_port_c_uart_send] */
1456int Core2ForAWS_Port_C_UART_Send(const char *message, size_t len);
1457/* @[declare_core2foraws_port_c_uart_send] */
1458
1537/* @[declare_core2foraws_port_c_uart_receive] */
1538int Core2ForAWS_Port_C_UART_Receive(uint8_t *message_buffer);
1539/* @[declare_core2foraws_port_c_uart_receive] */
1540#endif
Functions for the ATECC608 Trust&GO secure element.
Functions for the AXP192 Power Management Unit (PMU)
Functions for the BM8563 Real-Time Clock (RTC).
Functions for the virtual buttons using the FT633U touch controller.
void Core2ForAWS_Port_A_I2C_Close(I2CDevice_t device)
Frees the configuration pointer to the I2C peripheral connected on port A.
Definition: core2forAWS.c:530
uint32_t Core2ForAWS_Port_B_ADC_ReadRaw(void)
Read the raw ADC value from GPIO36.
Definition: core2forAWS.c:534
void Core2ForAWS_Button_Init(void)
Initializes the button_left, button_middle, button_right virtual buttons using the ft6336u touch cont...
Definition: core2forAWS.c:89
void Core2ForAWS_Motor_SetStrength(uint8_t strength)
Sets the speed of the vibration motor.
Definition: core2forAWS.c:139
void Core2ForAWS_Sk6812_SetColor(uint16_t pos, uint32_t color)
Sets the color of a single LED in the LED bars.
Definition: core2forAWS.c:232
void Core2ForAWS_Sk6812_Clear(void)
Turns off the LEDs in the LED bars and removes any set color.
Definition: core2forAWS.c:256
esp_err_t Core2ForAWS_Port_PinMode(gpio_num_t pin, pin_mode_t mode)
Sets the pin mode of the specified pin.
Definition: core2forAWS.c:431
float Core2ForAWS_PMU_GetBatCurrent(void)
Gets the battery current draw with the AXP192.
Definition: core2forAWS.c:164
uint32_t Core2ForAWS_Port_B_ADC_ReadMilliVolts(void)
Read the calibrated ADC voltage from GPIO36.
Definition: core2forAWS.c:538
SemaphoreHandle_t xGuiSemaphore
FreeRTOS semaphore to be used when performing any operation on the display.
Definition: core2forAWS.c:271
Button_t * button_left
Left virtual touch button.
Definition: core2forAWS.c:85
I2CDevice_t Core2ForAWS_Port_A_I2C_Begin(uint8_t device_address, uint32_t baud)
Allocates a peripheral connected to expansion port A.
Definition: core2forAWS.c:518
void Core2ForAWS_Init(void)
Initializes the power chip with default values, enables battery charging, and initializes all enabled...
Definition: core2forAWS.c:32
esp_err_t Core2ForAWS_Port_C_UART_Begin(uint32_t baud)
Configures the UART interface at the specified baud rate.
Definition: core2forAWS.c:549
Button_t * button_middle
Middle virtual touch button.
Definition: core2forAWS.c:86
esp_err_t Core2ForAWS_SDcard_Unmount(const char *mount_path, sdmmc_card_t *out_card)
Removes the FAT partition and unmounts the SD-Card.
Definition: core2forAWS.c:132
void Core2ForAWS_Sk6812_Show(void)
Updates the LEDs in the LED bars with any new values set using Core2ForAWS_Sk6812_SetColor,...
Definition: core2forAWS.c:252
void Core2ForAWS_Display_Init(void)
Initializes the display.
Definition: core2forAWS.c:280
float Core2ForAWS_PMU_GetBatVolt(void)
Gets the battery voltage with the AXP192.
Definition: core2forAWS.c:160
void Core2ForAWS_Sk6812_SetBrightness(uint8_t brightness)
Sets the brightness of the LED bars.
Definition: core2forAWS.c:248
void Core2ForAWS_Sk6812_SetSideColor(uint8_t side, uint32_t color)
Sets the color of all the LEDs on one side of the LED bars.
Definition: core2forAWS.c:236
void Core2ForAWS_Display_SetBrightness(uint8_t brightness)
Sets the brightness of the display.
Definition: core2forAWS.c:333
void Core2ForAWS_LED_Enable(uint8_t enable)
Turns on or off green LED.
Definition: core2forAWS.c:341
esp_err_t Core2ForAWS_SDcard_Mount(const char *mount_path, sdmmc_card_t **out_card)
Initializes and mounts the SD-Card.
Definition: core2forAWS.c:102
pin_mode_t
Modes supported by the BSP for the GPIO pins.
Definition: core2forAWS.h:212
@ DAC
Enable DAC mode. Only available on Port B—GPIO 26.
Definition: core2forAWS.h:219
@ OUTPUT
Set GPIO to output mode.
Definition: core2forAWS.h:214
@ ADC
Enable ADC mode. Only available on Port B—GPIO 36.
Definition: core2forAWS.h:218
@ I2C
Enable I2C mode. Only available on Port A—GPIO 32(SDA) and Port A—GPIO 33 (SCL).
Definition: core2forAWS.h:216
@ UART
Enable UART RX/TX mode. UART TX only available on Port C—GPIO 14 and UART RX is only available on Por...
Definition: core2forAWS.h:220
@ NONE
Reset GPIO to default state.
Definition: core2forAWS.h:213
@ INPUT
Set GPIO to input mode.
Definition: core2forAWS.h:215
esp_err_t Core2ForAWS_Port_Write(gpio_num_t pin, bool level)
Writes the specified level (0 or 1) to the specified digital pin.
Definition: core2forAWS.c:508
int Core2ForAWS_Port_C_UART_Receive(uint8_t *message_buffer)
Reads messages in the UART2 receiver ring buffer.
Definition: core2forAWS.c:572
esp_err_t Core2ForAWS_Port_A_I2C_Read(I2CDevice_t device, uint32_t register_address, uint8_t *data, uint16_t length)
Reads from I2C peripheral connected to expansion port A.
Definition: core2forAWS.c:522
int Core2ForAWS_Port_C_UART_Send(const char *message, size_t len)
Sends a specified length of a user defined message over UART2.
Definition: core2forAWS.c:568
void Core2ForAWS_Speaker_Enable(bool state)
Enables or disables the NS4168 speaker amplifier.
Definition: core2forAWS.c:153
void Core2ForAWS_Sk6812_Init(void)
Initializes the SK6812 LED bars.
Definition: core2forAWS.c:217
Button_t * button_right
Right virtual touch button.
Definition: core2forAWS.c:87
esp_err_t Core2ForAWS_Port_A_I2C_Write(I2CDevice_t device, uint32_t register_address, uint8_t *data, uint16_t length)
Writes to I2C peripheral connected to expansion port A.
Definition: core2forAWS.c:526
void Core2ForAWS_PMU_Init(uint16_t ldo2_volt, uint16_t ldo3_volt, uint16_t dc2_volt, uint16_t dc3_volt)
Initializes the AXP192 Power Management Unit (PMU).
Definition: core2forAWS.c:178
bool Core2ForAWS_Port_Read(gpio_num_t pin)
Reads the value from a specified digital pin that's set as an input — either 1 (high) or 0 (low).
Definition: core2forAWS.c:502
esp_err_t Core2ForAWS_Port_B_DAC_WriteMilliVolts(uint16_t mvolts)
Outputs the specified voltage (millivolts) to the DAC.
Definition: core2forAWS.c:544
Functions for the FT6336U capacitive touch panel controller.
void * I2CDevice_t
A pointer to the I2C peripheral configuration.
Definition: i2c_device.h:41
Functions for the SPM1423 microphone.
Functions for the MPU6886 inertial measurement unit (IMU).
Functions for the on-board 1W-0928 speaker using the NS4168 power amplifier.
The member defintions of the virtual button data.
Definition: button.h:28