公司动态
BES2800 5mic或8通道实时数据组帧发送实现方法
BES 5mic或8通道实时数据组帧发送实现方法1 采样结构体方法发送后怎么会退出录音然后BES ARS45重启test_local_record0_start, ret: 0zk------test_local_record0_thread[ 24.859400] [83] [ap] [media][smf_media_audio_recorder_callback:174] send size 1920zk-----record0 get[ 24.860700] [81] [ap] arm_memfault: PANIC!!! Memory Management Fault:[ 24.860800] [81] [ap] arm_memfault: IRQ: 4 context: 0x187f8edc[ 24.860800] [81] [ap] arm_memfault: CFSR: 00000082 MMFAR: 00000000[ 24.860900] [81] [ap] arm_memfault: BASEPRI: 00000000 PRIMASK: 00000000 IPSR: 00000004 CONTROL: 0000000c[ 24.860900] [81] [ap] arm_memfault: Memory Management Fault Reason:[ 24.860900] [81] [ap] arm_memfault: Data access violation[ 24.865900] [81] [ap] dump_assert_info: Current Version: NuttX BES NuttX EVB 12.6.0 3b2eb346a2 Dec 4 2025 15:49:26 arm[ 24.866000] [81] [ap] dump_assert_info: Assertion failed panic: at file: armv8-m/arm_memfault.c:102 task: mediatest process: mediatest 0x10501cfd[ 24.866000] [81] [ap] up_dump_register: R0: 00063715 R1: 00000000 R2: 00001010 R3: 00000000[ 24.866100] [81] [ap] up_dump_register: R4: 183e4b98 R5: 00000000 R6: 00000000 FP: 187f8fb8[ 24.866100] [81] [ap] up_dump_register: R8: 00000000 SB: 00000000 SL: 00000000 R11: 00000000[ 24.871100] [81] [ap] up_dump_register: IP: 00000001 SP: 187f8fb8 LR: 10501d5b PC: 10501d78[ 24.871100] [81] [ap] up_dump_register: xPSR: 61100000 BASEPRI: 00000000 CONTROL: 0000000c[ 24.871200] [81] [ap] up_dump_register: EXC_RETURN: ffffffed[ 24.871400] [81] [ap] dump_stackinfo: User Stack:[ 24.871400] [81] [ap] dump_stackinfo: base: 0x187f7020[ 24.871400] [81] [ap] dump_stackinfo: size: 00008128[ 24.876500] [81] [ap] dump_stackinfo: sp: 0x187f8fb8[ 24.876500] [81] [ap] stack_dump: 0x187f8f98: 00000000 00000000 00000000 00000000 00000000 00000000 00040000 00000000[ 24.879100] [81] [ap] stack_dump: 0x187f8fb8: 1041f979 187e7010 187f8fc8 1041f98d 187f8fd0 104b8d5f 00000000 00000000[ 24.880400] [81] [ap] stack_dump: 0x187f8fd8: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000[ 24.881900] [81] [ap] sched_dumpstack: backtrace:[ 24.881900] [81] [ap] sched_dumpstack: [81] [0x1041f292] circbuf_get_readptr0x15/0x40[ 24.883400] [81] [ap] sched_dumpstack: [81] [0x105c4578] sched_backtrace0x17/0x50[ 24.884400] [81] [ap] sched_dumpstack: [81] [0x104c48f4] sched_dumpstack0x1b/0x70[ 24.885400] [81] [ap] sched_dumpstack: [81] [0x104bf76e] syslog_flush0x15/0x2c[ 24.886300] [81] [ap] sched_dumpstack: [81] [0x1041f28e] circbuf_get_readptr0x11/0x40[ 24.887300] [81] [ap] sched_dumpstack: [81] [0x104b88ae] _assert0x1bd/0x2fc[ 24.888200] [81] [ap] sched_dumpstack: [81] [0x10423542] lib_syslograwstream_close0x11/0x1c回调中就死掉了和选择要录制的文件有关系还要把握时机记得找到规律。再发录制命令正确接收到的数据帧OK// 组帧数据发送timestamphal_sys_timer64_get();buff_send[0]0xA55A; //帧头buff_send[1]frame_count; //帧计数buff_send[2](uint32_t)(timestamp 0xFFFFFFFF); // 低buff_send[3](uint32_t)(timestamp 32); // 高buff_send[4]4096; //有效数据长度 1024*4 字节//2 准备CRC计算数据crc_data[0] 0xA55A; //帧头crc_data[1] frame_count; //帧计数;crc_data[2] (uint32_t)(timestamp 0xFFFFFFFF);// 时间戳crc_data[3] (uint32_t)(timestamp 32);crc_data[4] 40966;// 复制音频数据到CRC数组for (int i 0; i size; i){crc_data[5 i] buff[i];}buff_send[5]crc32_standard_compute(crc_data, 40965);printf(zk--CRC0x%x\n,buff_send[5]);for(int i0;isize;i)// 有效数据{buff_send[i6]buff[i];}//4 用i2s 32位接口方式发送hal_i2s_send(HAL_I2S_ID_1, buff_send, 40966);