Skip to content

Commit 97441f0

Browse files
shiliu-yangHsuan Han Lai
authored andcommitted
feat: add T5AI-CORE board (#305)
1 parent 5bf9a95 commit 97441f0

6 files changed

Lines changed: 243 additions & 0 deletions

File tree

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
CONFIG_PROJECT_VERSION="1.0.1"
2+
CONFIG_TUYA_PRODUCT_ID="u9bu0onwwwj6eyov"
3+
CONFIG_BOARD_CHOICE_T5AI=y
4+
CONFIG_BOARD_CHOICE_TUYA_T5AI_CORE=y
5+
CONFIG_MEM_SIZE=51200
6+
CONFIG_MEMP_NUM_UDP_PCB=10
7+
CONFIG_MEMP_NUM_TCP_SEG=80
8+
CONFIG_PBUF_LINK_ENCAPSULATION_HLEN=96
9+
CONFIG_TCP_SND_BUF=32768
10+
CONFIG_TCP_SND_QUEUELEN=44
11+
CONFIG_MEMP_NUM_NETBUF=32
12+
CONFIG_DEFAULT_UDP_RECVMBOX_SIZE=24
13+
CONFIG_MEMP_NUM_SYS_TIMEOUT=12
14+
CONFIG_LWIP_EAPOL_SUPPORT=0
15+
CONFIG_LWIP_TX_PBUF_ZERO_COPY=0
16+
CONFIG_CONFIG_TUYA_SOCK_SHIM=0
17+
CONFIG_LWIP_DHCPC_STATIC_IPADDR_ENABLE=1
18+
CONFIG_ETHARP_SUPPORT_STATIC_ENTRIES=1
19+
CONFIG_LWIP_NETIF_STATUS_CALLBACK=1
20+
CONFIG_LWIP_TIMEVAL_PRIVATE=0
21+
CONFIG_IN_ADDR_T_DEFINED=y

boards/T5AI/Kconfig

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,12 @@ choice
3737
rsource "./TUYA_T5AI_EVB/Kconfig"
3838
endif
3939

40+
config BOARD_CHOICE_TUYA_T5AI_CORE
41+
bool "TUYA_T5AI_CORE"
42+
if (BOARD_CHOICE_TUYA_T5AI_CORE)
43+
rsource "./TUYA_T5AI_CORE/Kconfig"
44+
endif
45+
4046
config BOARD_CHOICE_T5AI_MINI
4147
bool "T5AI_MINI"
4248
if (BOARD_CHOICE_T5AI_MINI)
Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
##
2+
# @file CMakeLists.txt
3+
# @brief
4+
#/
5+
6+
# MODULE_PATH
7+
set(MODULE_PATH ${CMAKE_CURRENT_LIST_DIR})
8+
9+
# MODULE_NAME
10+
get_filename_component(MODULE_NAME ${MODULE_PATH} NAME)
11+
12+
# LIB_SRCS
13+
aux_source_directory(${MODULE_PATH} LIB_SRCS)
14+
15+
# LIB_PUBLIC_INC
16+
set(LIB_PUBLIC_INC ${MODULE_PATH})
17+
18+
19+
########################################
20+
# Target Configure
21+
########################################
22+
add_library(${MODULE_NAME})
23+
24+
target_sources(${MODULE_NAME}
25+
PRIVATE
26+
${LIB_SRCS}
27+
)
28+
29+
target_include_directories(${MODULE_NAME}
30+
PRIVATE
31+
${LIB_PRIVATE_INC}
32+
33+
PUBLIC
34+
${LIB_PUBLIC_INC}
35+
)
36+
37+
38+
########################################
39+
# Layer Configure
40+
########################################
41+
list(APPEND COMPONENT_LIBS ${MODULE_NAME})
42+
set(COMPONENT_LIBS "${COMPONENT_LIBS}" PARENT_SCOPE)
43+
list(APPEND COMPONENT_PUBINC ${LIB_PUBLIC_INC})
44+
set(COMPONENT_PUBINC "${COMPONENT_PUBINC}" PARENT_SCOPE)

boards/T5AI/TUYA_T5AI_CORE/Kconfig

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
config CHIP_CHOICE
2+
string
3+
default "T5AI"
4+
5+
config BOARD_CHOICE
6+
string
7+
default "TUYA_T5AI_CORE"
8+
9+
config BOARD_CONFIG
10+
bool
11+
default y
12+
select ENABLE_AUDIO_CODECS
13+
select ENABLE_AUDIO_AEC
14+
select ENABLE_LED
15+
select ENABLE_BUTTON
Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
/**
2+
* @file board_com_api.h
3+
* @author Tuya Inc.
4+
* @brief Header file for common board-level hardware registration APIs.
5+
*
6+
* @copyright Copyright (c) 2021-2025 Tuya Inc. All Rights Reserved.
7+
*/
8+
9+
#ifndef __BOARD_COM_API_H__
10+
#define __BOARD_COM_API_H__
11+
12+
#include "tuya_cloud_types.h"
13+
14+
#ifdef __cplusplus
15+
extern "C" {
16+
#endif
17+
18+
/***********************************************************
19+
************************macro define************************
20+
***********************************************************/
21+
22+
/***********************************************************
23+
***********************typedef define***********************
24+
***********************************************************/
25+
26+
/***********************************************************
27+
********************function declaration********************
28+
***********************************************************/
29+
30+
/**
31+
* @brief Registers all the hardware peripherals (audio, button, LED) on the board.
32+
*
33+
* @return Returns OPERATE_RET_OK on success, or an appropriate error code on failure.
34+
*/
35+
OPERATE_RET board_register_hardware(void);
36+
37+
#ifdef __cplusplus
38+
}
39+
#endif
40+
41+
#endif /* __BOARD_COM_API_H__ */
Lines changed: 116 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,116 @@
1+
/**
2+
* @file tuya_t5ai_core.c
3+
* @brief tuya_t5ai_core module is used to
4+
* @version 0.1
5+
* @copyright Copyright (c) 2021-2025 Tuya Inc. All Rights Reserved.
6+
*/
7+
8+
#include "tuya_cloud_types.h"
9+
10+
#include "tal_api.h"
11+
12+
#include "tdd_audio.h"
13+
#include "tdd_led_gpio.h"
14+
#include "tdd_button_gpio.h"
15+
/***********************************************************
16+
************************macro define************************
17+
***********************************************************/
18+
#define BOARD_SPEAKER_EN_PIN TUYA_GPIO_NUM_39
19+
20+
#define BOARD_BUTTON_PIN TUYA_GPIO_NUM_29
21+
#define BOARD_BUTTON_ACTIVE_LV TUYA_GPIO_LEVEL_LOW
22+
23+
#define BOARD_LED_PIN TUYA_GPIO_NUM_9
24+
#define BOARD_LED_ACTIVE_LV TUYA_GPIO_LEVEL_HIGH
25+
26+
/***********************************************************
27+
***********************typedef define***********************
28+
***********************************************************/
29+
30+
/***********************************************************
31+
********************function declaration********************
32+
***********************************************************/
33+
34+
/***********************************************************
35+
***********************variable define**********************
36+
***********************************************************/
37+
38+
/***********************************************************
39+
***********************function define**********************
40+
***********************************************************/
41+
OPERATE_RET __board_register_audio(void)
42+
{
43+
OPERATE_RET rt = OPRT_OK;
44+
45+
#if defined(AUDIO_CODEC_NAME)
46+
TDD_AUDIO_T5AI_T cfg = {0};
47+
memset(&cfg, 0, sizeof(TDD_AUDIO_T5AI_T));
48+
49+
cfg.aec_enable = 1;
50+
51+
cfg.ai_chn = TKL_AI_0;
52+
cfg.sample_rate = TKL_AUDIO_SAMPLE_16K;
53+
cfg.data_bits = TKL_AUDIO_DATABITS_16;
54+
cfg.channel = TKL_AUDIO_CHANNEL_MONO;
55+
56+
cfg.spk_sample_rate = TKL_AUDIO_SAMPLE_16K;
57+
cfg.spk_pin = BOARD_SPEAKER_EN_PIN;
58+
cfg.spk_pin_polarity = TUYA_GPIO_LEVEL_LOW;
59+
60+
TUYA_CALL_ERR_RETURN(tdd_audio_register(AUDIO_CODEC_NAME, cfg));
61+
#endif
62+
return rt;
63+
}
64+
65+
static OPERATE_RET __board_register_button(void)
66+
{
67+
OPERATE_RET rt = OPRT_OK;
68+
69+
#if defined(BUTTON_NAME)
70+
BUTTON_GPIO_CFG_T button_hw_cfg = {
71+
.pin = BOARD_BUTTON_PIN,
72+
.level = BOARD_BUTTON_ACTIVE_LV,
73+
.mode = BUTTON_TIMER_SCAN_MODE,
74+
.pin_type.gpio_pull = TUYA_GPIO_PULLUP,
75+
};
76+
77+
TUYA_CALL_ERR_RETURN(tdd_gpio_button_register(BUTTON_NAME, &button_hw_cfg));
78+
#endif
79+
80+
return rt;
81+
}
82+
83+
static OPERATE_RET __board_register_led(void)
84+
{
85+
OPERATE_RET rt = OPRT_OK;
86+
87+
#if defined(LED_NAME)
88+
TDD_LED_GPIO_CFG_T led_gpio;
89+
90+
led_gpio.pin = BOARD_LED_PIN;
91+
led_gpio.level = BOARD_LED_ACTIVE_LV;
92+
led_gpio.mode = TUYA_GPIO_PUSH_PULL;
93+
94+
TUYA_CALL_ERR_RETURN(tdd_led_gpio_register(LED_NAME, &led_gpio));
95+
#endif
96+
97+
return rt;
98+
}
99+
100+
/**
101+
* @brief Registers all the hardware peripherals (audio, button, LED) on the board.
102+
*
103+
* @return Returns OPERATE_RET_OK on success, or an appropriate error code on failure.
104+
*/
105+
OPERATE_RET board_register_hardware(void)
106+
{
107+
OPERATE_RET rt = OPRT_OK;
108+
109+
TUYA_CALL_ERR_LOG(__board_register_audio());
110+
111+
TUYA_CALL_ERR_LOG(__board_register_button());
112+
113+
TUYA_CALL_ERR_LOG(__board_register_led());
114+
115+
return rt;
116+
}

0 commit comments

Comments
 (0)