基于MT8880的ARM智能拨号器的设计和实现
放大器的输出端可获得峰值 1V左右的双音频信号。MT8880可以接收呼叫过程中的各种信号音,以及 16种双音频信号。接收信号音和 DTMF信号共用同一通道,并且MT8880不能同时接收 DTMF信号和信号音,要分时复用。信号音与 DTMF信号经耦合线圈,再经电解电容 C1和电阻R1,将电话线上的信号输入到MT8880的输入端IN-。MT8880接收与发送的 DTMF信号由模拟摘机电路耦合[2-5]。MT8880作为 DTMF接收器时,将电话线传送来的信号经 MT8880转换成数字信号,由ARM处理器读入 [6]。
利用双音多频(DTMF)技术可通过电话线实现远程数据传输任务,其不足之处是速度太慢(约 80波特)。本系统可实现远程数据传输的功能,只需要通过软件编程在系统(被呼叫用户)接收到振铃后控制模拟摘机电路工作,实现模拟摘机,并设置芯片 MT8880工作在接收数据模式下。而呼叫用户在呼叫后,MT8880立即进入发送模式下,等待用户发送数据。四、软件编程
本系统通过软件编程实现与 MT8880的部分端口的通信。系统选用 IAR作为软件开发环境,IAR的 Embedded Workbench 系列是一种增强型一体化嵌入式集成开发环境,其中完全集成了开发嵌入式系统所需要的文件编辑、项目管理、编译、链接和调试工具。IAR公司独具特色的 C-SPY调试器,不仅可以在系统开发初期进行无目标硬件的纯软件仿真,也可以结合 IAR公司推出的 J-Link硬件仿真器,实现用户系统的实时在线仿真调试 [3]。
在软件编程时要注意 MT8880上电延时 100ms以上,初始化时要将寄存器清零后才能使用[2]。
1. DTMF接收和命令解释程序 这段程序是系统模拟摘机后的程序,ARM处理器发送被叫号码到 MT8880芯片,部分程
序如下,为了方便升级开发,均有详细注释://设置MT8880 模式为双音频工作模式(发送数据) 即配置CRA=1101,CRB=0000
dBytesCRA[3] = 1;
dBytesCRA[2] = 1;
……
dBytesCRB[3] = 0;
……
MT8880_WriteCRACRB(dBytesCRA, dBytesCRB);//将1101,0000 分别写入到CRA 和CRB
dLength = strlength(pSendNum); //保存要写入到MT8880 的被叫号码的长度
for(dL = 0; dL dLength; dL++) { //连续发送dLength 个DTMF 信号
switch(*pSendNum++) { //判断ARM处理器传来的字符型的电话号码
case '1':{
dBytesSend[3] = 0; //D3D2D1D0=0001
dBytesSend[2] = 0;
……
break;}
case '2':{
dBytesSend[3] = 0; //D3D2D1D0=0010
……
break;}
……
default:
{本文引用地址://m.amcfsurvey.com/article/166897.htm
break;
}
}
MT8880_WriteDataReg(dBytesSend); //写发送数据寄存器
for(iTemp = 5000; iTemp; --iTemp) {
MT8880_ReadStateReg(dBytesSReg); //读取状态寄存器的值
if(dBytesSReg[1] == 1) //判断状态寄存器的第二位是否为1
break; //即发送数据寄存器满,准备发送数据
}
2.信号音处理程序
首先将芯片 MT8880设置为呼叫处理、中断模式,信号音处理程序分为四大部分:一是拨号前检测是否允许拨号 ,即检测信号音是拨号音还是忙号音;二是拨号后检测是否接通,即检测信号音是回铃音、忙号音还是占线音;三是拨号接通后检测是否应答,即检测回铃音是否消失;四是检测各种信号音:拨号音、忙号音、回铃音。
各种信号音的特点:拨号音在 5秒内是连续音;忙号音在 5秒内 0.35秒通,0.35秒断;回铃音在 5秒内是 1秒通,4秒断。
3.串行通信程序主要功能是接收上位机的命令,执行相应的操作。将另撰文详说。
五、小结
首先对智能拨号器的硬件组成进行了详细的研究和说明,并对部分软件代码进行了解释。该系统已经测试使用,它具有成本低、功耗小、便于携带、功能易于扩展等特点,在一定的应用背景下有很好的使用前景。
本文作者创新点:系统使用 ARM7作为微处理器,功耗低,设计简化,且功能易于扩展。采用 USB作为调制解调类外设与计算机的接口,实现枚举设备等,数据传输稳定可靠,且较串口接口更利于使用和携带。
评论