菜鸟谈一谈对模拟对讲机的理解
此篇文章在2022年7月1日被记录
一个好用的对讲机首先包含的基本功能:对讲发送、对讲接受、频率设置、音量设置、低功耗功能。
高级功能:尾音抑制、哑音功能、免按键通话、宽窄带切换、遇忙禁发、参数配置
最开始我认为所有的音频信号需要经过单片机处理,可能涉及到信号采集、解码编码、模拟发送等功能,现在看来以前的理解是错误的,在现在什么东西都模块化的时代,使用的是独立的对讲芯片完成这些功能,一个对讲芯片就可以完成上述所有功能,单片机只用与芯片通信,做一些判断、配置、开关通路等功能就可以了。
- 对讲发送状态
单片机判断发送条件(遇忙禁发、低电量、高温等),配置芯片为发射状态(发射功率、发射频率、哑音、MIC增益等),开启发射并且打开发射通路,然后不断判断发射终止事件(超时、过热、低电量、按键释放、其他事件等),最后终止发射,完成一轮循环。
- 对讲接受
在空闲状态下不断判断接收门限(RSSI、SQ、哑音等),满足条件后进入到接受模式、等待尾音,检测到尾音或者信号丢失后关闭接受,当然在这个循环中也需要不断的进行异常检测。
- 频率设置
通信通道发生改变后,重新设置接收频率。
- 音量设置
音量发生变化后、重新设置输出功放增益。
- 低功耗功能
在空闲状态下休眠固定时间,这个低功耗功能测量起来比较麻烦,我在代码里面实现了,但是实际上也不知道有没有进去,需要配合硬件部门的人来测量。
- 尾音抑制
为什么要尾音抑制?没有尾音抑制的话,只能等到信号丢失再关掉扬声器,此时会有一段较大的白噪音,影响使用体验,因此,现在的对讲机再发送完成后持续发送一段人们听不到的音频,通常为55HZ的哑音,这样,接收方在接收到这段音频后,会主动关闭喇叭,不产生那段影响体验的白噪音。现在的对讲芯片通常也集成了这个功能,只用读取相关寄存器就可以判断是否具有哑音。
- 哑音功能
为什么使用哑音?在同一个通道对话时,可能会听到其他人的讲话,我们不想在这个通道中听取其他人的声音,于是加入哑音功能,哑音就是在我们的正常的对讲音频中叠加一段人耳听不到的声音,通过对对讲芯片配置,在接受时判断一下是不是想要的哑音通道,如果哑音不匹配,就不打开扬声器了,这样的话就实现了防止外部干扰的功能,但是如果一个接收机没有打开哑音功能,发射机开启了哑音功能,那么接收机是可以听到声音的,接收机可以接收到同频道的所有信号。这部分的代码主要是逻辑判断。
- 免按键通话
不用按下按键就可以说话的功能,主要是在空闲状态下不断判断麦克风的阈值,当达到一定的值后,直接开启对讲状态,很好理解。
- 宽窄带切换
直接操作芯片切换宽窄带,窄带的通信距离更远,其实到现在为止我还不太清楚宽在哪里窄在哪里。
- 遇忙禁发
这个也很好理解,甚至不涉及到硬件,也就是在忙的状态下禁止发送,比如在接收状态下,按下按键禁止发送。
- 信号调制
由于模拟对讲机之间只可以传输模拟信号,需要传输数字信号的话,需要依赖于对讲芯片的信号调制功能,大部分对讲芯片一般会自带一个FSK或者常见类型的信号调制器,FSK可以在模拟通信上实现数字通信,也就是说,通过对讲机发送0、1值,这种工作状态是在一个固定频率的载波上叠加不同的频率实现0、1的收发,比如在固定频率433Mhz上叠加1Khz的波形代表0,叠加2Khz的波形代表1,这种通信方式注定了通信速率不会很高,在对讲芯片中,速率通常为1200或者2400bps,发送200字节大概需要1.6秒。