0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看威廉希尔官方网站 视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

波特率自动检测的识别方法及无线数据传输模块的设计及应用

牵手一起梦 来源:网络整理 作者:佚名 2020-01-16 09:30 次阅读

1、 模块总体结构

基于nRF401无线数据传输器件的数传模块总体硬件结构如图1所示,主要由微控制器蓝牙芯片及其相应的外围电路组成,能自动完成波特率识别,并进行数据的编码处理,给用户提供了一个透明的数据接口。微控制器选用Atmel公司推出的可在线编程单片机AT89S51,便于以后软件的升级。通过对发送数据是否需要曼彻斯特编码、所需外围元件的数量、功耗及发射功率等方面的因素综合比较,选用nRF40l作为无线数传器件。

nRF401是单片无线收发器件,采用蓝牙核心威廉希尔官方网站 设计,内部集成高频发射、高频接收、PLL合成、FSK调制、FSK解调、多频道切换等诸多功能和外围部件协议,是目前集成度最高的无线数传产品,也是唯一可以直接连接微控制器串口进行异步数据传输且无需曼彻斯特编码的无线收发器。nRF401发射功率最大为10 mW,工作电压为2.7 V~5 V,发射电流为8 mA~30 mA,接收电流约10 mA,待机电流为8 μA,灵敏度为-105 dBm,采用20引脚8 mmx7 mm的SOIC封装。所需外部元件很少,仅外接一个晶体和几只阻容、电感元件,无需调试,传输速率最高达19.2 kb/s,工作频段为433/434 MHz,有两个信道,调制方式为FSK。

nRF401有5个端口与微控制器相关:DIN和DOUT用于异步串行通信,DIN的数据方向为微控制器到nRF40l,DOUT相反;CS选择工作频段,CS=0时频段为433.92 MHz,CS=1时为434.33 MHz,在该模块中将CS引脚引出,方便用户控制,在一个频段无法工作时,可以设置为另一个工作频段,提高了系统的抗干扰能力;PWR_UP用于节电控制。PWR_UP=0时为掉电(节电)模式,PWR_UP=1时为上电(工作)模式,在该模块中同样将其引出,在不需要无线发射和接收时,用户可将器件设置为节电模式以降低系统的功耗;TXEN选择发射或接收状态,TXEN=0时为接收,TXEN=1时为发送。

PCB布局和电源去耦设计对于RF射频电路获得较好的性能是必要的,电路板采用1.6mm厚FR4板材的两层PCB,底层覆铜面,并在元件层空白区覆铜,多打通孔连接上下层,铜面与地线相连,天线下底层不覆铜,VSS直接与铜层连接,并保证关键元件充分接地。所有开关数字信号和控制信号都不能经过PLL环路滤波器元件和VCO电感附近。直流供电在离VDD引脚尽可能近的地方用高性能的电容去耦,去耦使用一只小电容(0.01μF)和一只大电容(2.2μF)并联,避免较长的电源走线。

波特率自动检测的识别方法及无线数据传输模块的设计及应用

2 、硬件设计及软件实现

2.1 微控制器与nRF401接口设计

图2为微控制器ATr89S51与nRF401的接口电

波特率自动检测的识别方法及无线数据传输模块的设计及应用

路,nRF401只需10个左右的元件即可实现数据收发,应用极其方便。其PSEN为数据收发选择端,当设定为发送模块时,PSEN接为高电平,同时,DIN引脚与微控制器的TX端相连,微控制器的RXD端作为预留接口与外部主控单片机的TXD相连:若设计为接收模块,则PSEN接低电平,同时,DOUT引脚与微控制器的RX端相连,RXD引脚与外部微控制器的TXD引脚相连。模块与外部单片机的通讯波特率为自动检测方式,受nRF401通讯速率的限制。该模块可以工作在1 200 b/s~19.2 kb/s之间。模块上预留ICSP接口,可以系统在线编程。方便程序升级。还同时具有良好的防窃密功能,不易破解。

2.2 串口interwetten与威廉的赔率体系 及波特率自适应的实现

对于模块上的片上主控单片机AT89S51而言,既要控制nRF401完成与外界的数据交换。同时自身又必须受控于模块外部的主控单片机,因此。AT89S51必须能同时与nRF401及片外主控单片机通讯,但AT89S51只有一个UART,无法满足要求,为解决这一矛盾,通常的方法是扩展一片8251或8250通用同步/异步接收发器(USART),但需额外占用单片机I/O资源,增加了系统的成本,同时也增大了PCB板的布局面积。本系统则采用单片机普通I/O口模拟串行口,利用该方法还可扩展多个外部串行端口,实现多机通信。

利用普通I/O口模拟串口,必须首先确定串口的通信速率即波特率,在本系统中,该模块设计是波特率为1 200 b/s~19.2 kb/s自适应式的通信模块,使自身的波特率随主控单元的 调整而自动调整,系统适应性更强,更具智能化,因此首先必须解决好波特率自动检测与识别的问题。

2.2.1 波特率自动检测识别的实现

常用的波特率自动检测方法主要有两种:

(1)标准波特率穷举法。

标准法特率穷举法适用于主机侧的波特率必须在有限的几个固定数值之间变化。如300b/s~9.6 kb/s之间的标准值;且从机侧的工作振荡频率已知且稳定。从机启动通信程序后,逐个尝试以不同的波特率接收主机发出的特定字符,直到能正确接收为止。因此,该方法的运用具有一定的局限性。

(2) 码元宽度实时检测法。

该方法是先通过单片机的定时器测量RX引脚上输人数据的码元宽度,即机器周期的计数值,之后用软件计算出波特率发生寄存器的值。该方法由于适用范围广、操作灵活,因而应用较为普遍。

本系统首先用码元宽度实时检测法确定主机的波特率,之后从机自身进行相应设置。就理论而言,只要能够测出一个码元的宽度就能确定数据传输的波特率,但在实际测量过程中,为保证测量的准确性,通常采取测量连续8个码元宽度的方法。这里采用了较为常用的异步串行通信数据格式,即1个起始位、8个数据位、无校验、1个停止位。发送时低位数据在前,高位在后,因此连续8个码元宽度的时间可以通过在主机侧发0x80H的方式实现,其波形如图3所示。起始位加7个码元宽度的低电平,恰好构成8个脉宽的低电平。单片机采用串口中断的方式接收数据,当有数据到达时,打开定时器,同时不断查询接收引脚的状态,当RXD变为高电平后停止计数,这样单片机就可以测量出低电平持续的宽度。

波特率自动检测的识别方法及无线数据传输模块的设计及应用

设主机侧的波特率为BPS,其值未知,则此时连续8个码元的宽度计算公式为:

设模块内AT89S51单片机的工作频率为fosc,用定时器1方式2常数自动装入方式产生波特率,串行口工作在方式1,此时串口的波特率由定时器T1的溢出率和SMOD位同时决定。即:

当T1用作波特率发生器时,TL1用作计数器,而自动重装的值放在TH1内,设初始值为X,则每“256-X”个机器周期,定时器T1就会产生一次溢出。为了避免因溢出而产生不必要的中断,此时禁止T1中断。AT89S51内部机器周期为振荡周期的12分频,因此,定时器T1的溢出周期为:

将式(3)代入式(2)得出此时的波特率为:

设此时模块的波特率与主机侧的波特率相等,即:

设AT89S51内部定时器T1测连续8个码元计数值为M,由于是对其内部的机器周期计数,且机器周期是内部振荡周期的12分频,所以,总数为M的机器周期代表的实际时间是:

很明显,式(6)与式(7)应相等,因此有如下公式成立:

由上式则可得出,单片机定时器T1初值在波特率自适应情况下的计算公式:

由式(9)可以看出,其初值不依赖于单片机的工作频率,因此,只要单片机的工作频率相对稳定即可,对具体数值无要求。

另外,需要说明的是,对于串行异步通信而言,通信双方的波特率不必严格相等,只要双方的差别在一定的范围之内,就可实现准确通信。

2.2.2 软件模拟串口的实现

当波特率确定以后,即可用软件模拟实现串行口。对单片机而言,要实现模拟串口的关键是必须解决好时序问题,不能造成通信过程中的数据丢失,为此,采用单片机的外部中断0口的下降沿触发功能,模拟串口数据接收线RXD,P1.2口模拟串口数据发送线TXD,定时器0以确定中断方式对接收码元采样或发送数据流,实现一个软件的串口。

对于软件模拟串口而言,关键是必须解决好时序问题。本系统充分利用了nRF40l器件半双工通信的特点,即数据发送和接收不同时进行,成功实现了一个软件串行口。串行数据发送的实现相对较为简单,只需利用定时器让发送出去的码元维持一定的时间宽度即可,实现异步串行接收的关键是起始位的检测信息位的准确提取。任何时候数据传送都可能发生,故要求接收方必须能够及时准确地接收数据,而通信过程中没有同步信号,因此,串行数据的提取相对而言具有一定的难度。所以,文中采用AT89S51的外部中断0口模拟RXD,并设置其中断方式为边沿触发,平常保持为高电平,起始位为低电平,因此,当有数据到达时产生中断,根据波特率设置的定时时间间隔进行数据采样,即可实现串行数据的接收。

3结束语

本文设计的无线数据传输模块已成功运用于“磁栅式浮动检测仪”项目中,经实践检验,系统工作稳定可靠,具有一定的工程实用价值。

责任编辑:gt

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 微控制器
    +关注

    关注

    48

    文章

    7547

    浏览量

    151338
  • 蓝牙
    +关注

    关注

    114

    文章

    5812

    浏览量

    170217
  • 无线
    +关注

    关注

    31

    文章

    5451

    浏览量

    173255
收藏 人收藏

    评论

    相关推荐

    具有波特率自适应功能的无线数据传输模块设计怎么实现?

    具有波特率自适应功能的无线数据传输模块设计怎么实现?
    发表于 06-01 06:40

    自动检测单片机80C51串行通讯时的波特率

    自动检测80C51 串行通讯中的波特率本文介绍一种在80C51 串行通讯应用中自动检测波特率方法。按照经验,程序起动后所接收到的第1 个字
    发表于 06-05 10:54 61次下载

    串行通信波特率的一种自动检测方法

    串行通信波特率的一种自动检测方法摘 要:给出了一种利用接收到的字符信息检测串行终端通信波特率方法
    发表于 06-22 19:17 27次下载

    自动检测80C51串行通讯中的波特率

    自动检测80C51串行通讯中的波特率:本文介绍一种在80C51 串行通讯应用中自动检测波特率方法。按照经验,程序起动后所接收到的第1 个字
    发表于 12-03 22:58 48次下载

    [图文]数字通信中的数据传输速率、波特率、符号

    数字通信中的数据传输速率、波特率、符号    在数字通信中的数
    发表于 04-16 18:28 2452次阅读
    [图文]数字通信中的<b class='flag-5'>数据传输</b>速率、<b class='flag-5'>波特率</b>、符号<b class='flag-5'>率</b>

    串行通信波特率的一种自动检测方法

    串行通信波特率的一种自动检测方法 给出了一种利用接收到的字符信息检测串行终端通信波特率方法
    发表于 05-26 16:12 1857次阅读
    串行通信<b class='flag-5'>波特率</b>的一种<b class='flag-5'>自动检测</b><b class='flag-5'>方法</b>

    80C51单片机进行串行通讯应用中自动检测波特率方法详细介绍

    本文介绍一种在80C51 串行通讯应用中自动检测波特率方法。按照经验,程序起动后所接收到的第1 个字符用于测量波特率
    发表于 11-28 16:54 9次下载
    80C51单片机进行串行通讯应用中<b class='flag-5'>自动检测</b><b class='flag-5'>波特率</b>的<b class='flag-5'>方法</b>详细介绍

    波特率了解无线传输

    传输速率是指无线模块传输数据的速度,当传输速率越高时,传输
    的头像 发表于 03-21 10:55 1067次阅读

    串口传输速率低于波特率会怎么样 串口传输速率低于波特率的原因

    低于波特率传输速率可能导致数据传输错误。由于数据传输过程中受到时钟同步和波特率控制的影响,如
    的头像 发表于 08-25 15:24 2709次阅读

    串口传输速率低于波特率的原因和解决方法

    数据传输错误:低于波特率传输速率可能导致数据传输错误。由于数据传输过程中受到时钟同步和
    的头像 发表于 08-28 10:27 3277次阅读

    什么是串口波特率?串口通信为什么要设置波特率

    为单位,表示每秒钟传输波特数。 串口通信是一种通过串行数据线一比特接一比特地进行数据传输的通信方式。它通常使用一对数据线进行
    的头像 发表于 01-22 16:10 2148次阅读

    波特率与比特有何关系 波特率数据传输速率的关系

    状态变化的次数,即每秒钟传输的符号数。它通常用于衡量调制解调器、无线通信设备等的数据传输速率。波特率的单位是波特(Baud),1
    的头像 发表于 10-18 14:55 776次阅读

    波特率的定义和计算方法 波特率数据传输速度的关系

    波特率的定义 波特率(Baud Rate),又称调制速率或传符号,是指每秒传输的符号数目,单位为波特(Bd)。它是一个数字信号通信中重要的
    的头像 发表于 11-22 09:49 1160次阅读

    波特率与串行通信的关系 各种设备波特率转换的方法

    波特率(Baud Rate)是串行通信中的一个重要参数,它指的是信号传输的速率,即单位时间内传输的符号(或信号状态)的数量。在串行通信中,波特率决定了
    的头像 发表于 11-22 10:01 315次阅读

    波特率对实时数据传输的影响

    在现代通信系统中,实时数据传输是至关重要的。无论是工业自动化、远程医疗、在线游戏还是物联网(IoT)应用,都需要快速、可靠的数据传输来保证系统的正常运行和用户体验。 波特率的定义
    的头像 发表于 11-22 10:03 234次阅读