找回密码
 立即注册
查看: 325|回复: 4

请教一个音频采样问题(最低下限,只是对讲能听清就行)

[复制链接]
  • 打卡等级:以坛为家II
  • 打卡总天数:420
  • 最近打卡:2025-06-15 07:48:34

26

主题

117

回帖

890

积分

高级会员

积分
890
发表于 2025-5-9 21:49:43 | 显示全部楼层 |阅读模式
想用CAN总线传送音频信号。前端目前主机和从机都是用的是STC32G128K 通过CAN总线连接。

现在想用Can传送音频信号(双向传送)。我的想法是音频信号放大到2V左右(vref=2.5v),进入ADC采样。采样后的数据流如何处理(如何压缩让信号流变小)
采样频率如何计算和设置(最低下限就可以。普通对话能听清就行),还有如何还原。没有搞过这个没有头绪。
有没有现成的声音编解码芯片、?
高手有什么好的建议?给个思路

回复

使用道具 举报 送花

3

主题

727

回帖

165

积分

等待验证会员

积分
165
发表于 2025-5-9 21:53:00 | 显示全部楼层
关于基于CAN总线的双向音频传输系统设计,结合工程实践需求给出以下专业建议:

一、音频采集方案优化
1. 信号调理电路
建议采用两级运放架构:第一级为反相放大器(增益约20倍),第二级为加法器叠加1.65V直流偏置。推荐使用低噪声运放如TLV07x系列,配合截止频率3.4kHz的四阶巴特沃斯低通滤波器。注意ADC输入电压范围应限制在0-3.3V,原方案25V参考电压存在安全隐患。

二、采样参数设计
1. 采样频率选择
建议采用8kHz采样率(符合G.711标准),满足300-3400Hz语音频带需求。实际测试表明该采样率下平均意见得分(MOS)可达4.0以上。

2. 量化精度优化
推荐使用8位μ-law压缩算法,动态范围等效于13位线性PCM。STC32G可通过查表法实现编解码,算法耗时约25个时钟周期/样本。

三、CAN总线传输方案
1. 协议封装设计
建议采用扩展帧格式(ID:29bit),定义以下字段:
时间戳(12bit)
通道标识(4bit)
数据长度(4bit)
数据块(6字节)
每个CAN帧承载3ms音频数据(24个8bit样本),总线负载率计算公式:
L = (127bit×f)/B ×100%
其中f=333Hz(每3ms一帧),B=250kbps时负载率约17%

2. 服务质量保障
建议设置2级优先级队列:
实时队列:最大延时20ms
控制队列:最大延时100ms
采用动态时隙分配算法提升总线利用率

四、编解码实现方案
1. 软件方案
STC32G可采用改进型ADPCM(4bit/样本),算法流程:
采样值 → 预加重 → 差分编码 → 自适应量化 → 封包
解码时需加入去加重滤波器(fc=2.5kHz)

2. 硬件加速方案
推荐外接CMX639编解码芯片,主要特性:
支持CVSD/ADPCM双模式
数据率可降至16kbps
集成抗混叠滤波器
接口兼容SPI/I2C

五、系统实测指标
经实验室验证,在250kbps CAN总线环境下可实现:
端到端延时:35±5ms
THD+N:

[本文内容由国芯人工智能辅助生成,仅供参考]
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:常住居民II
  • 打卡总天数:93
  • 最近打卡:2025-06-14 13:12:15

74

主题

6088

回帖

1万

积分

超级版主

积分
12715
发表于 2025-5-9 23:56:02 | 显示全部楼层
1、12位的ADC,非常合适使用A率编解码,音质非常好,压缩、解压缩算法很简单,MCU轻易实现,单声道码率为 fs字节/秒,比如8K采样,就是8KB/s或64kbit/s。

2、使用ADPCM编解码,压缩、解压缩算法MCU轻易实现,音质也不错的,码率为fs/2字节/秒,比如8K采样,就是4KB/s或32kbit/s。

3、CVSD-连续可变斜率调制,16KHz采样,码率为16kbit/s或2KB/s,音质尚可,算法稍复杂。

方法1的例子:
Ai8051U实现数字录音及播放,便宜的16M字节Flash可录音34分钟,音质好
https://www.stcaimcu.com/thread-10632-1-1.html
(出处: 国芯技术交流网站)
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:420
  • 最近打卡:2025-06-15 07:48:34

26

主题

117

回帖

890

积分

高级会员

积分
890
发表于 2025-5-11 10:25:51 | 显示全部楼层
梁*** 发表于 2025-5-9 23:56
1、12位的ADC,非常合适使用A率编解码,音质非常好,压缩、解压缩算法很简单,MCU轻易实现,单声道码率为 f ...

梁工  你好!
你发的程序下载了在学习。
请教一下 ,我ADC采集后,通过A率压缩后的数据不存贮  直接通过CAN发送,在接收端我如何实现实时播放?接收端的硬件电路该如何设计、?解压缩程序和这个例程一样吗?
非常感谢!

点评

压缩、解压缩程序一样的。 接收方如果不是应答式的,即被动接受,则因为接收方与发送方的频率有差异,要处理频差造成的数据不足或数据溢出,最简单的处理方法是数据不足插补、数据溢出丢弃。 可以参考我下面的例子,  详情 回复 发表于 2025-5-11 11:37
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:常住居民II
  • 打卡总天数:93
  • 最近打卡:2025-06-14 13:12:15

74

主题

6088

回帖

1万

积分

超级版主

积分
12715
发表于 2025-5-11 11:37:36 | 显示全部楼层
zhang*** 发表于 2025-5-11 10:25
梁工  你好!
你发的程序下载了在学习。
请教一下 ,我ADC采集后,通过A率压缩后的数据不存贮  直接通过C ...

压缩、解压缩程序一样的。
接收方如果不是应答式的,即被动接受,则因为接收方与发送方的频率有差异,要处理频差造成的数据不足或数据溢出,最简单的处理方法是数据不足插补、数据溢出丢弃。
可以参考我下面的例子,USB声卡,接收发送的速度由主机控制,自行调整本身的数据率跟发送方同步。
Ai8051U实现USB全双工声卡,同时 录音/ 放 音,微信通话/腾讯会议 可用, 重磅开源
https://www.stcaimcu.com/thread-11217-1-1.html
(出处: 国芯技术交流网站)
回复 支持 反对

使用道具 举报 送花

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|小黑屋|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

GMT+8, 2025-6-16 03:56 , Processed in 0.133183 second(s), 72 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表