历史上的今天
返回首页

历史上的今天

今天是:2025年03月16日(星期日)

正在发生

2020年03月16日 | 基于AVR单片机的串口转FSK的通信模块设计

2020-03-16 来源:eefocus

简介:本文采用ATmega48芯片及CMX865芯片实现FSK通信模块,基于此模块,用户与业务平台之间进行FSK信息交互,相对于终端来说就是简单的串口通信。


随着信息技术与网络技术的飞速发展,信息交互应用业务给人类生活带来更多的便利,信息终端表现出巨大的市场潜力。但是由于终端用户环境不同,用户信息交互方式可能不同,目前常用的有IP方式、FSK方式以及无线通信方式等。为了能够提高终端市场竞争力,减少系统开发成本投入,通信模块与终端程序独立设计是较为理想的解决方案。本文采用ATmega48芯片及CMX865芯片实现FSK通信模块,基于此模块,用户与业务平台之间进行FSK信息交互,相对于终端来说就是简单的串口通信。


1ATmega48介绍


ATmega48是基于AVR增强型RISC(精简指令集)结构的高性能、低功耗的8位CMOS微控制器。微控制器具有可控制的上电复位和可编程的掉电检测电路、经过标定的片内RC振荡器、片内外18个中断源和5种休眠模式。由于其先进的指令集以及单时钟周期指令执行时间,ATmega48的数据吞吐率高达1MIPs/MHz,运行速度比普通的单片机高出10倍,从而可以缓解系统在功耗和处理速度之间的矛盾。


其片内集成了4KB的系统内可编程Flash、256字节的EEPROM、512字节的SRAM。其外设具有可编程的串行USART接口、可工作于主机/从机模式的SPI串行接口;存在2个具有独立预分频器和比较器功能的8位定时/计数器和1个具有预分频器、比较功能和捕捉功能的16位定时/计数器、具有独立片内振荡器的可编程看门狗定时器等。ATmega48/88/168芯片硬件电路可以完全兼容,完全可以根据软件实际需求灵活选择AVR芯片,极大地方便系统的开发与研制。


2CMX865简介


CMX865是CML公司新出的一款DTMF编/解码器/FSK调制解调器复合IC芯片,它采用单个高速串行总线控制,与大多数串行接口兼容。CMX865的主要特征是:


◆供电电压2.7~5.5V,低功耗操作模式;


◆支持V.23、Bell202FSK1200bps编码/解码;


◆集成高可靠性DTMF、编码器/解码器;


◆集成振铃检测功能,支持语音探测功能。


3硬件设计


图1为串口转FSK通信模块电路。系统主要以AVR单片机ATmega48芯片和CMX865调制/解调芯片为硬件架构,ATmega48芯片利用C-BUS总线对CMX865芯片进行控制操作,实现FSK通信。CMX865芯片的IRQN终端与CPU芯片的外部中断0(INT0)相连,确保软件可以采用中断方式接收/发送FSK数据。CMX865芯片的时钟信号、片选信号、响应应答数据信号、接收控制数据信号分别与ATmega48芯片的普通I/O接口引脚相连,CPU可以通过模拟口线方式对CMX865芯片进行控制。

FSK

图1还提供了基本的FSK接收/发送数据接口电路和振铃检测电路。在FSK发送电路中,CMX865芯片TXA(15引脚)处外接电阻的目的是匹配芯片接口对线路的交流阻抗。在FSK接收电路中,CMX865芯片RXAFB(9引脚)与RXAN(10引脚)之间的电容以及隔离变压器之间电容设计的目的是滤除高频噪声;通过调节接收电路中两个电阻R1、R2的阻值即可改变接收端提供给CMX865芯片信号的幅度。在振铃检测电路中,IC1是光电耦合器,不振铃时光电三极管截止,RING为高电平;振铃时,振铃信号经过电容耦合及稳压管稳压,振铃电压使IC1内发光二极管发光,照射到光电三极管的基极上导致光电三极管导通,RING为低电平,通过ATmega48引脚检测到低电平的振铃信号。


4软件实现


ATmega48芯片具有4KB内部Flash和512字节的片内SRAM,软件实现需考虑资源分配问题,特别是SRAM使用情况。由于程序涉及串口通信、DTMF通信和FSK通信3种情况,理论上需要开辟6个缓冲区。如果这样,每一个缓冲区的大小显然不能确保达到实际通信数据量的需求。结合FSK通信特点,DTMF数据传输与FSK数据传输不可能同时发生,因此FSK与DTMF可共用相同缓冲区。同样串口接收与FSK发送、串口发送与


FSK接收都不会同时发生,这样通信只需要开辟两个缓冲区就可以确保模块正常通信,考虑实际业务平台数据量情况,软件设计中为FSK接收开辟255字节缓冲区复用;FSK发送开辟45字节缓冲区复用。


4.1主程序实现流程


通信模块主程序包括:CPU初始化、CMX865初始化、初始化建链、串口通信和FSK通信子程序等。主程序流程如图2所示。初始化建链环节是模块正常工作的基础,通过初始化建链操作,信息终端可以根据线路环境以及平台超时机制对通信模块参数进行设置,确保通信的稳定性。通信主流程循环执行3个子功能函数:线路状态处理函数、串口数据解析与处理函数、链路保持函数。线路状态处理函数设计了3种线路状态,即初始状态、空闲状态和摘机状态;正常工作时仅在空闲状态和摘机状态之间切换。其中在空闲状态检测振铃、根据状态位执行摘机、DTMF拨号等操作;在摘机状态根据状态位执行FSK收发、脱线检测、挂机控制等操作。串口数据解析与处理函数包含串口数据按命令集解析、对解析命令进行应答和状态置位处理部分。这样线路状态处理函数和串口数据解析与处理函数通过状态置位标志紧密连接起来。FSK数据采用中断方式直接接收,接收完毕后在摘机状态下直接通过串口发送给信息终端。由于串口发送应用相对单一,为简单处理串口发送采用即时应答处理方式,分散在通信主流程各子功能函数中实现,提高了通信效率。通过链路保持函数判断串口通信是否异常,通信模块周期性地向信息终端发送链路保持命令,如果3次重发均未收到终端应答命令,通信模块将自动锁闭线路,重新执行初始化建链操作,实现串口异常的处理。

FSK

4.2对外串口通信协议


模块采用标准串口通信,波特率为19200bps,10位异步方式。定义串口通信数据包格式为:0x1E+命令+校验和反码(对命令的校验和反码),其中部分命令以变长方式发送。串口通信主要命令有:模块初始化、链路保持、DTMF接收/发送、FSK接收/发送、振铃、挂机等,命令具体格式和描述此处不加详述。模块初始化上电后由通信模块自动发起,直到正确接收到终端应答初始化命令后,通信模块才建链成功。信息终端初始化应答命令主要提供FSK通信模块参数配置信息。上电后如果FSK模块未收到终端初始化应答信息,则周期性地(每2s)发送一次初始化建链命令,直到成功为止;模块FSK通信过程中周期性地向终端发送链路保持命令,如果未收到终端应答信息,则断开FSK链接重新开始模块初始化。


4.3串口通信实现


AVR单片机串口通信往往采用SPI通信方式,通信模块串口通信采用UART0控制/状态寄存器和数据寄存器实现。串口通信子程序主要由串口发送/接收中断子程序、串口接收命令解析子程序和串口组包发送子程序3部分组成。其中串口中断接收程序为:

主程序

具体执行串口数据发送时,需要提供发送数据长度、发送起始地址、置UCSROB寄存器值(UCSR0B|=0x28)。串口接收命令解析子程序按照对外串口通信协议解析串口命令,并根据命令描述调用子程序代码执行相应子功能操作。为了通信容错处理,通信模块需对接收串口数据进行校验,如果解析的串口命令格式正确,则向终端发送肯定应答;否则发送否定应答,等待终端重传命令数据。串口组包发送子程序对接收的FSK数据以及线路状态等信息数据,按照串口通信协议组包发送给信息终端。


4.4FSK通信实现


FSK通信子程序主要由CMX865芯片寄存器操作、FSK收/发、DTMF收/发以及线路状态检测等子程序组成。ATmega48芯片采用模拟口线的方式对CMX865寄存器进行读/写操作,其中对CMX865芯片寄存器读操作程序为:

读取程序

FSK收/发、DTMF收/发子程序均以CMX865寄存器读/写操作函数为基础,通过设置CMX865寄存器的值,确定其工作模式。FSK数据发送、接收都可以通过CMX865芯片的IRQ中断口线引起ATmega48芯片中断,因此FSK数据收/发都通过中断实现。芯片程序采用10ms定时器循环检测线路状态。


结语


本文利用ATmega48芯片和CMX865芯片为硬件架构设计了串口转FSK通信模块。由于ATmega48芯片与ATmega88芯片除了Flash、EEPROM、SRAM容量差异外,性能完全相同。通信模块可以不更改硬件电路,仅配置相应AVR芯片,对软件稍作调整,能够满足通信业务对通信数据量增加的需求,节约模块二次开发的成本。目前本通信模块已在一款新型的电子交易终端上使用,并与中兴、精伦等电子交易平台进行信息交互,运行效果良好。

推荐阅读

史海拾趣

ABOV(现代单片机)公司的发展小趣事

ABOV(现代单片机)是一家韩国的半导体公司,以下是该公司发展的五个相关故事:

  1. 公司成立和初期发展: ABOV公司成立于1997年,总部位于韩国首尔。公司专注于设计、制造和销售嵌入式系统解决方案,主要产品包括微控制器(MCU)和嵌入式闪存等。成立初期,ABOV致力于技术创新和产品研发,建立起一支技术精湛的研发团队。

  2. 技术创新和产品推出: ABOV在技术创新方面投入了大量资源,不断推出新产品和解决方案。公司的现代单片机产品以其高性能、低功耗和丰富的功能而闻名。ABOV还在嵌入式闪存技术方面取得了重大突破,推动了嵌入式系统的发展和普及。

  3. 市场拓展和国际合作: 随着产品技术的不断成熟和市场需求的增长,ABOV积极拓展国际市场,并与全球各地的客户建立了合作关系。公司的现代单片机产品被广泛应用于消费电子、汽车电子、工业控制等领域,赢得了客户的信赖和认可。

  4. 持续投入研发和创新: ABOV持续投入研发,并不断提升产品性能和功能。公司注重与客户的密切合作,根据客户需求进行定制化开发,为客户提供个性化的解决方案。ABOV还与学术机构和合作伙伴合作,共同推动技术创新和产业发展。

  5. 未来展望和发展方向: ABOV将继续致力于技术创新和产品升级,加强在嵌入式系统领域的研发和应用。公司将继续拓展国际市场,加强与客户和合作伙伴的合作,推动现代单片机技术的发展和普及,为全球的电子行业做出更大的贡献。

Boyd Corporation公司的发展小趣事

Boyd Corporation自创立之初,便致力于研发创新的热管理和环境密封解决方案。公司不断投入研发资源,推出了一系列高效、可靠的产品,这些产品在电子行业中迅速获得了广泛应用。通过持续创新,Boyd Corporation逐渐在市场中树立了技术领先的形象,吸引了众多合作伙伴和客户的关注。

Crydom公司的发展小趣事

Boyd Corporation自创立之初,便致力于研发创新的热管理和环境密封解决方案。公司不断投入研发资源,推出了一系列高效、可靠的产品,这些产品在电子行业中迅速获得了广泛应用。通过持续创新,Boyd Corporation逐渐在市场中树立了技术领先的形象,吸引了众多合作伙伴和客户的关注。

Aptina (ON Semiconductor)公司的发展小趣事

值得一提的是,Aptina曾与索尼达成了一项专利交叉许可协议。这一协议不仅加强了双方的技术合作,还促进了双方在图像传感器领域的共同发展。通过共享专利资源,Aptina得以进一步拓展其产品线,提升产品质量,巩固市场地位。

ApexTool Group公司的发展小趣事

在电子行业中,不同客户对电动工具的需求各异。Apex Tool Group深知这一点,因此提供了定制化服务,根据客户的具体需求设计和生产电动工具。有一次,一家大型电子企业因为特殊生产工艺的需要,对电动工具提出了特殊要求。Apex Tool Group迅速响应,组织研发团队进行攻关,最终成功研发出符合客户需求的定制化产品。这一成功案例不仅展示了Apex Tool Group的技术实力,也进一步巩固了与客户的合作关系。

Bogen Communications Inc公司的发展小趣事

随着电子行业的快速发展和变革,Bogen Communications Inc公司面临着巨大的挑战。为了应对这些变革,公司不断调整战略、优化组织结构、提升研发能力。同时,公司还密切关注行业动态和市场需求,及时调整产品方向和市场策略。通过这些努力,公司成功地适应了行业变革,保持了稳健的发展态势。

问答坊 | AI 解惑

UC/OS在 320 2812 上的移植和研究

https://bbs.eeworld.com.cn/thread-77147-1-1.html 这里有更加详细的论文!…

查看全部问答>

常用运算放大器型号简介

常用运算放大器型号简介 好辛苦才找到,大家就给点辛苦费吧....…

查看全部问答>

SDK的安装问题

我安装的SDK为什么有的可以在EVC里看得到有的看不到?…

查看全部问答>

请问关于 RHAPSODY.V6.2 的问题

请问一下,有哪位大侠用过 vxworks下的建模软件I-LOGIX.RHAPSODY.V6.2,我在网上下了个这个软件,但结果不能安装,请问上怎么回事呢,我还有个6.0版本的,能安装,但结果却没有帮助文件,就没法学习怎么使用,也很恼火,请高手指点一下,我想学习在vxworks下 ...…

查看全部问答>

重金酬谢!!!!! 求破解手机 代码

重金酬谢!!!!! 求破解手机   代码 现在有个机型是CDMA的 原来是日文和英文 现在想改为法文或其他文字!~!!!!!!!! 芯片\"三洋高通\" 重金酬谢!!!!! 联系13681843776…

查看全部问答>

哪位配置过8962的CAN可以接收任意ID数据

想用CAN接收任意ID的数据,不知道哪位配置过,谢谢…

查看全部问答>

MDK编译提示错误

LedINT.c(36): warning:  #1-D: last line of file ends without a newline     每一个工程都有,为什么?…

查看全部问答>

USBASP制作不成功,希望高手帮忙!!!

半年内做了好几个手工板,一直没有成功,电路是按上面压缩包里做的,固件也是按照里边做的,下载的时候用的也是USBASP下载线下载的,但是插上电脑以后显示 [img]file:///C:/Users/Administrator.PC-20120816MPVV/AppData/Roaming/Tencent/Users/ ...…

查看全部问答>

SM5812-001传感器用51如何才能获得数据

请大家帮个忙看看这个传感器如何写驱动!我自己写了一下但是没有获得数据!我估计是我通信没做好!…

查看全部问答>