Files
99_7018_lmx/apps/common/audio/audio_export_demo.c

141 lines
4.0 KiB
C
Raw Normal View History

2025-10-29 13:10:02 +08:00
#include "app_config.h"
#ifdef AUDIO_PCM_DEBUG
#include "uartPcmSender.h"
extern int aec_uart_init();
extern int aec_uart_fill(u8 ch, void *buf, u16 size);
extern void aec_uart_write(void);
extern int aec_uart_close(void);
/*
16k pcm
*/
static short const sin0_16k[16] = {
0x0000, 0x30fd, 0x5a83, 0x7641, 0x7fff, 0x7642, 0x5a82, 0x30fc, 0x0000, 0xcf04, 0xa57d, 0x89be, 0x8000, 0x89be, 0xa57e, 0xcf05,
};
static u16 tx1_s_cnt = 0;
static int get_sine0_data(u16 *s_cnt, s16 *data, u16 points, u8 ch)
{
while (points--) {
if (*s_cnt >= 16) {
*s_cnt = 0;
}
*data++ = sin0_16k[*s_cnt] / 2;
if (ch == 2) {
*data++ = sin0_16k[*s_cnt] / 2;
}
(*s_cnt)++;
}
return 0;
}
/*
*************************************************************
* uart data export 使
* 1512byte数据,
* 2aec_uart_write()3
* 3UART DMA发送一次数据需要约8ms时间 > 8ms
* 4 uartPcmSender.h
* 5使JL的串口导出工具接收数据
*
*************************************************************
*/
void audio_export_demo_task(void *param)
{
printf("audio_export_demo_task\n");
s16 data[256];
int len = 512;
/*生成256个点的16k的正选波数据*/
get_sine0_data(&tx1_s_cnt, data, len / 2, 1);
while (1) {
putchar('.');
{
/*run code*/
}
aec_uart_fill(0, data, 512); //往通道0填数据
{
/*run code*/
}
aec_uart_fill(1, data, 512); //往通道1填数据
{
/*run code*/
}
aec_uart_fill(2, data, 512); //往通道2填数据
aec_uart_write(); //一次把3路数据发送出去
os_time_dly(2); //等待发送完成发送一次要8ms发完才可以进行下一次发数
}
}
/*
**********************************************************
* uart data export 使
*********************************************************
*/
int audio_export_demo_init()
{
printf("audio_export_demo_init\n");
/* uartSendInit(); //串口初始化,已经在开机时调用初始化,这里不需调用 */
aec_uart_init(); //uart export 初始化
os_task_create(audio_export_demo_task, NULL, 1, 1024, 128, "audio_export_task");
return 0;
}
/*
*************************************************************
* uart uartSendData()使
* 1
* 2512byte,DMA模式需要2.7ms
* 3 uartPcmSender.h
* 4使
*
*************************************************************
*/
void audio_uart_transmit_demo_task(void *param)
{
printf("audio_uart_transmit_demo_task\n");
s16 data[256];
int len = 512;
/*生成256个点的16k的正选波数据*/
get_sine0_data(&tx1_s_cnt, data, len / 2, 1);
while (1) {
putchar('.');
uartSendData(data, len); //uart 发送数据接口
os_time_dly(1); //一般发送512byte,DMA模式需要2.7ms
}
}
/*
**********************************************************
* uart发数使用示例
*********************************************************
*/
int audio_uart_transmit_demo_init()
{
printf("audio_uart_transmit_demo_init\n");
/* uartSendInit(); //串口初始化,已经在开机时调用初始化,这里不需调用 */
os_task_create(audio_uart_transmit_demo_task, NULL, 1, 1024, 128, "audio_uart_transmit_task");
return 0;
}
static u8 audio_export_demo_idle_query()
{
return 0;
}
REGISTER_LP_TARGET(audio_export_demo_lp_target) = {
.name = "audio_export__demo",
.is_idle = audio_export_demo_idle_query,
};
#endif /*AUDIO_PCM_DEBUG*/