首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

MC9S08GT60+MC13192语音传送相关请教

MC9S08GT60+MC13192语音传送相关请教

1。MC9S08GT60+MC13192能不能实现语音传送,我看很多地方说zigbee速率太低,不适合传送语音,但我看MC13192的传送速率有250kbps,满足8khz的音频采样值(即125us采样一个字节)的传送应该是没有问题才对呀,实际应用中,单向传输也确实可以,但双向半双工的时候却不可以,原因是发送方依固定时间间隔发送的数据包,接收包收到数据包的时间间隔却不固定,且相差很大,这样的话双方无法实现同步。可能出现同时发送的问题,导致数据包丢失。


2。数据发送时是否一开始发送,通道上就有数据呢?还是说要等所有的数据都发送结束后,通道上才有数据呢?


3。如何检测发送通道上是否有数据包正在传送呢?CCA是否就是用来对此进行判断的,如果CCA的值大于一固定值的时候就认为通道正在忙呢?规格书上我没有找到相关的说明,请哪位高手指点一下。


以上,请大家指导一下!

1.8位机做语音的传输比较吃力。zigbee本身不适合传送语音,但并非不可能,不过8位机处理速度慢,语音的编解码和实时性会有折扣。freescale通过第三方有传送语音的方案,是在freescale的32位单片机Coldfire上实现的。

2。这个看你有什么方式做。13192有packet和stream两种模式,这两种的区别就是你所说的通道上是否一开始就有数据

3。可以用CCA的值进行判断。802。15。4标准中的ED scan也是根据CCA的值来判断的
非常感谢版主的回复,不过我认为编解码不是主要问题,因为编码的时候我只需启动一下AD转换,等到下个125us中断的时候才读AD转换结果入缓冲区,而解码的时候也只是把接收缓冲区的值依次往PWM送,并不占用太多的时间。如果有可能的话看能否帮我分析一下目前我用的通讯机制是否有问题:

主机一直处于接收状态(只有在需要发送的时候才切换为发送状态,发送完后又转为接收状态),每隔125us中断一次,建立一组编号依次为0~119的时间片,每个时间片内完成以下任务:
1.读上次AD转换结果入发送缓冲区,并启动新的AD转换(AD转换结果为8位)。
2.将PWM缓冲区的值依次装入PWM(PWM周期为0XFF个总线周期)。
3.判别是否接收到有效数据包,如有装入PWM缓冲区。
4.判别是否为当次循环结束(即当前时间片编号为119),如是则一次发送。

从机的机制与主机不同的地方在于第一次接收到有效的数据包后,与主机建立同步,为保证后续从机的发送时间与主机错开,时间片编号从50切入,其它与主机相同。

另:由于发送和接收需要占用较长时间,且发送完成和接收完成的中断优先级较高,为保证采样及播放的实时性,对发送和接收的完成状况都是采用查询的方式来进行。

现状我的主要问题点是发送方依固定时间间隔发送的数据包,接收方接收到的数据包时间间隔却不一样,且有很多数据包丢失,我想主要原因可能是速度传输过慢,且不稳定,而发送又是定时进行的,这样就有可能造成接收方数据未收到又要进行发送,导致撞包。

所以我的想法是每次发送之前先判断一下通道上是否有数据在传送,然后再决定是否发送,
这样对丢包应该会有改善,但对实时性也有一定影响。如何CCA能对此进行判断的话,那我每次发送之前就先做一次CCA检测如果通道忙的时候就进入接收模式,否则开始发送。

以上都是我个人的想法,不知各位觉得是否可行,或有什么比较可行的办法。还请多指教!
有时间探讨一下,我对语音的东西也不是很熟悉
返回列表