共2条
1/1 1 跳转至页
串口双向语音实时通讯如何同步?
![](http://uphotos.eepw.com.cn/jackwang/thumb/avatar.jpg)
问
在做一个有线对讲机,先说说我现在的做法:
主机:单片机+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网站征稿正在进行时,欢迎踊跃投稿啦 | |
奖!发布技术笔记,技术评测贴换取您心仪的礼品 | |
打赏了!打赏了!打赏了! |