这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 综合技术 » 基础知识 » 串口双向语音实时通讯如何同步?

共2条 1/1 1 跳转至

串口双向语音实时通讯如何同步?

院士
2006-09-17 18:14:16     打赏
串口双向语音实时通讯如何同步?



关键词: 串口     双向     语音     实时     通讯     如何     同步    

院士
2006-12-22 22:43:00     打赏
2楼
问 在做一个有线对讲机,先说说我现在的做法:
主机:单片机+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 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]