找回密码
 立即注册
查看: 1215|回复: 5

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

[复制链接]
  • 打卡等级:以坛为家II
  • 打卡总天数:545
  • 最近打卡:2025-12-14 10:40:33

27

主题

137

回帖

888

积分

高级会员

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

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

回复

使用道具 举报 送花

3

主题

2944

回帖

1634

积分

等待验证会员

积分
1634
发表于 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:

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

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:251
  • 最近打卡:2025-12-15 16:07:19

84

主题

7144

回帖

1万

积分

超级版主

积分
15233
发表于 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
  • 打卡总天数:545
  • 最近打卡:2025-12-14 10:40:33

27

主题

137

回帖

888

积分

高级会员

积分
888
发表于 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
回复

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:251
  • 最近打卡:2025-12-15 16:07:19

84

主题

7144

回帖

1万

积分

超级版主

积分
15233
发表于 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
(出处: 国芯技术交流网站)
回复

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:545
  • 最近打卡:2025-12-14 10:40:33

27

主题

137

回帖

888

积分

高级会员

积分
888
发表于 2025-11-17 22:37:35 | 显示全部楼层
现在唯一通话问题没有解决。主机和从机都采用STC32G18K。
主机其中需要ADC采集信号7组。将采集的信号通过CAN总线送到从机。主机驱动一个12864显示屏显示各种信息。外接单、三个按键调节各种菜单。(如果将通话加上,需要增加一路ADC,另外增加音频输出电路。是否可以外接IIS音频总线芯片还原声音)。
从机通过CAN总线接收主机送来的信号。将数据还原通过PWM驱动三组电机(正反转)(三个电机使用三组PWM 驱动。速度和正反转可以调节)另外从机使用一组串口通过隔离芯片和外界芯片通信。从机采集两路ADC通过can总线传输到主机。(如果增加通话功能,需要增加一路ADC采集,另外需要增加声音还原电路)
现在唯一没有解决的就是通话功能。对通话音频采集没有概念。不知道如何下手。
其它功能都已经完美实现并且一直在使用。
如果增加双向通话功能,STC32G128K 是否可以满足要求。刚看了一下AI8051好像没有CAN单元。
今年准备将通话功能增加进去。现在准备学习音频总线。计划先在做一个音频实验板子,使用STC32G128K  外接音频总线芯片。实验班上把PWM播放声音也做上。必定软件成本要小于硬件。主要就是主机从机能够实施通话就可以 不要求很好音质。但是不能有太大噪声
麻烦梁工在百忙中分析一下这个芯片是否可以满足需求。硬件设计需要注意的事项。
回复

使用道具 举报 送花

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

本版积分规则

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

GMT+8, 2025-12-16 06:09 , Processed in 0.112677 second(s), 74 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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