共2条
1/1 1 跳转至页
串口双向语音实时通讯如何同步?

问
在做一个有线对讲机,先说说我现在的做法:
主机:单片机+PCM编解码芯片+485芯片
从机:单片机+PCM编解码芯片+485芯片
半双工通讯,主机单片机定时中断产生8K(125US)的帧同步信号,读写一字节PCM数据,用485串口发往从机,发完转为接收状态。从机收到数据产生接收中断,在中断处理程序里发一帧同步信号给CODEC芯片,接着读写PCM,同时将上一周期产生的PCM数据发给主机,实现双向实时语音通讯。
调试中发现有间歇性噪音和语音失真,两个方向都有,很像是从机的帧不同步引起的。如果从机在接收中断里将收到的数据原样发回给主机,主机侧就能很好的听到自己发的语音,这时主机音质很好。
用软件仿真看到主机确实是以准确的125US为间隔启动串口发送PCM数据,是不是从机串口采样接收过程中产生不确定的延时,造成数据接收完成的时间不确定,导致帧信号不稳定产生噪音和失真。如果是这样,还有什么其它办法可以做有线的双向实时语音通讯。 答 1: 我怀疑是485通信造成的问题,你先用422试试? 答 2: 确保接收中断在 NOP NOP 单周期指令时发生就能精确同步 答 3: 今天又进一步试验,结果。。。我用的是PIC16单片机,经软件仿真发现它的定时中断并不精确,会有1~4个指令周期的随机误差,所以,由它产生的8K帧同步信号并不稳定,虽然没有累积误差,但时快时慢造成PCM信号不稳定。此帧同步信号经过串口传输后,加上从机产生接收中断的时间误差,导致噪音明显。
看来还得上CPLD。 答 4: 确实不应用485,用422会简单得多用485的话要采用时隙通讯方式,时隙的延时要有严格控制,电路两端的设计及软件编程都有严格的时序讲究。 答 5: 双向语音通讯半双工理论码速率是128K,实际还要加上。实际还要加上同步信号传输时间和485方向转换时间。不知你的485传输速度是不是能够用。 答 6: 已经成功,不过音质不够完美。程序用C语言写的,后来通过在主机端定时中断里插入汇编代码,读取计数器即时值,并此为基准自动校正发帧同步信号的时刻,得到精确的8K信号。但因为从机从检测到数据停止位到产生接收中断的时间不固定,且无基准可校,导致音质不够完美,不过听起来还可以接受。
为了降低对线路的要求,把PCM进一步压缩成ITU-T G.721的4位ADPCM,这样一个字节可以传输两帧的语音,码速率降了一半,明天到现场试试效果如何。
要想提高音质,只能用中断延迟可测的单片机,不知道这样的单片机有没有? 答 7: 非常感谢zhang123,dengm,chunyang,兴隆朋友的帮助!
主机:单片机+PCM编解码芯片+485芯片
从机:单片机+PCM编解码芯片+485芯片
半双工通讯,主机单片机定时中断产生8K(125US)的帧同步信号,读写一字节PCM数据,用485串口发往从机,发完转为接收状态。从机收到数据产生接收中断,在中断处理程序里发一帧同步信号给CODEC芯片,接着读写PCM,同时将上一周期产生的PCM数据发给主机,实现双向实时语音通讯。
调试中发现有间歇性噪音和语音失真,两个方向都有,很像是从机的帧不同步引起的。如果从机在接收中断里将收到的数据原样发回给主机,主机侧就能很好的听到自己发的语音,这时主机音质很好。
用软件仿真看到主机确实是以准确的125US为间隔启动串口发送PCM数据,是不是从机串口采样接收过程中产生不确定的延时,造成数据接收完成的时间不确定,导致帧信号不稳定产生噪音和失真。如果是这样,还有什么其它办法可以做有线的双向实时语音通讯。 答 1: 我怀疑是485通信造成的问题,你先用422试试? 答 2: 确保接收中断在 NOP NOP 单周期指令时发生就能精确同步 答 3: 今天又进一步试验,结果。。。我用的是PIC16单片机,经软件仿真发现它的定时中断并不精确,会有1~4个指令周期的随机误差,所以,由它产生的8K帧同步信号并不稳定,虽然没有累积误差,但时快时慢造成PCM信号不稳定。此帧同步信号经过串口传输后,加上从机产生接收中断的时间误差,导致噪音明显。
看来还得上CPLD。 答 4: 确实不应用485,用422会简单得多用485的话要采用时隙通讯方式,时隙的延时要有严格控制,电路两端的设计及软件编程都有严格的时序讲究。 答 5: 双向语音通讯半双工理论码速率是128K,实际还要加上。实际还要加上同步信号传输时间和485方向转换时间。不知你的485传输速度是不是能够用。 答 6: 已经成功,不过音质不够完美。程序用C语言写的,后来通过在主机端定时中断里插入汇编代码,读取计数器即时值,并此为基准自动校正发帧同步信号的时刻,得到精确的8K信号。但因为从机从检测到数据停止位到产生接收中断的时间不固定,且无基准可校,导致音质不够完美,不过听起来还可以接受。
为了降低对线路的要求,把PCM进一步压缩成ITU-T G.721的4位ADPCM,这样一个字节可以传输两帧的语音,码速率降了一半,明天到现场试试效果如何。
要想提高音质,只能用中断延迟可测的单片机,不知道这样的单片机有没有? 答 7: 非常感谢zhang123,dengm,chunyang,兴隆朋友的帮助!
共2条
1/1 1 跳转至页
回复
有奖活动 | |
---|---|
【EEPW电子工程师创研计划】技术变现通道已开启~ | |
发原创文章 【每月瓜分千元赏金 凭实力攒钱买好礼~】 | |
【EEPW在线】E起听工程师的声音! | |
“我踩过的那些坑”主题活动——第001期 | |
高校联络员开始招募啦!有惊喜!! | |
【工程师专属福利】每天30秒,积分轻松拿!EEPW宠粉打卡计划启动! | |
送您一块开发板,2025年“我要开发板活动”又开始了! | |
打赏了!打赏了!打赏了! |
打赏帖 | |
---|---|
多组DCTODC电源方案被打赏50分 | |
【我踩过的那些坑】STM32cubeMX软件的使用过程中的“坑”被打赏50分 | |
新手必看!C语言精华知识:表驱动法被打赏50分 | |
【我踩过的那些坑】杜绑线问题被打赏50分 | |
【我踩过的那些坑】STM32的硬件通讯调试过程的“坑”被打赏50分 | |
【我踩过的那些坑】晶振使用的问题被打赏100分 | |
【我踩过的那些坑】电感选型错误导致的处理器连接不上被打赏50分 | |
【我踩过的那些坑】工作那些年踩过的记忆深刻的坑被打赏10分 | |
【我踩过的那些坑】DRC使用位置错误导致的问题被打赏100分 | |
我踩过的那些坑之混合OTL功放与落地音箱被打赏50分 |