Driver for YX5300 MP3 Player Module.
It is easy to port this library to any platform. But now it is ready for use in:
- ESP32 (esp-idf)
- Add
YX5300.h
andYX5300.c
files to your project. It is optional to useYX5300_platform.h
andYX5300_platform.c
files (open and configYX5300_platform.h
file). - Initialize platform-dependent part of handler.
- Call
YX5300_Init()
. - Call other functions and enjoy.
Using YX5300_platform files
#include <stdio.h>
#include "YX5300.h"
#include "YX5300_platform.h"
int main(void)
{
YX5300_Handler_t Handler = {0};
YX5300_Platform_Init(&Handler);
YX5300_Init(&Handler);
YX5300_SetVolume(&Handler, 30);
YX5300_PlayTrack(&Handler, 1);
while (1)
{
DelayMs(10000);
YX5300_PlayNext(&Handler);
}
YX5300_DeInit(&Handler);
return 0;
}
Without using YX5300_platform files (esp-idf)
#include <stdio.h>
#include <stdint.h>
#include "sdkconfig.h"
#include "esp_system.h"
#include "esp_err.h"
#include "driver/uart.h"
#include "driver/gpio.h"
#include "freertos/FreeRTOS.h"
#include "YX5300.h"
#define YX5300_UART_NUM UART_NUM_2
#define YX5300_UART_TXD_GPIO GPIO_NUM_23
#define YX5300_UART_RXD_GPIO GPIO_NUM_19
static int8_t YX5300_Platform_Init(void)
{
uart_config_t uart_config = {
.baud_rate = 9600,
.data_bits = UART_DATA_8_BITS,
.parity = UART_PARITY_DISABLE,
.stop_bits = UART_STOP_BITS_1,
.flow_ctrl = UART_HW_FLOWCTRL_DISABLE,
.source_clk = UART_SCLK_APB};
uart_param_config(YX5300_UART_NUM, &uart_config);
uart_set_pin(YX5300_UART_NUM, YX5300_UART_TXD_GPIO, YX5300_UART_RXD_GPIO, -1, -1);
uart_driver_install(YX5300_UART_NUM, 256, 256, 0, NULL, 0);
return 0;
}
static int8_t YX5300_Platform_DeInit(void)
{
uart_driver_delete(YX5300_UART_NUM);
return 0;
}
static int8_t YX5300_Platform_Delay(uint16_t Delay)
{
vTaskDelay(Delay / portTICK_PERIOD_MS);
return 0;
}
static int8_t YX5300_Platform_Send(uint8_t *Data, uint8_t Len)
{
uart_wait_tx_done(YX5300_UART_NUM, portMAX_DELAY);
uart_write_bytes(YX5300_UART_NUM, Data, Len);
return 0;
}
void app_main(void)
{
YX5300_Handler_t Handler = {0};
YX5300_PLATFORM_LINK_INIT(&Handler, YX5300_Platform_Init);
YX5300_PLATFORM_LINK_DEINIT(&Handler, YX5300_Platform_DeInit);
YX5300_PLATFORM_LINK_DELAY(&Handler, YX5300_Platform_Delay);
YX5300_PLATFORM_LINK_SEND(&Handler, YX5300_Platform_Send);
YX5300_Init(&Handler);
YX5300_SetVolume(&Handler, 30);
YX5300_PlayTrack(&Handler, 1);
while (1)
{
DelayMs(10000);
YX5300_PlayNext(&Handler);
}
YX5300_DeInit(&Handler);
return 0;
}