深究MAX3485收发转化时需加延时的根本原因

最近初次使用MAX3485芯片进行通讯时,遇到数据不能正常接收的情况,后来经过长时间的分析知道了是我在进行切换收发模式时,软件没有进行延时处理(也可以通过硬件延时)。

         RS485_SEND_ON;                  //485开启发送功能
        Uart1Write(Tilt_buff, send_len);//写数据
        delay_ms(1);                   //延时函数,
        RS485_REC_ON;                 //485开启接收功能

   
   
  • 1
  • 2
  • 3
  • 4

在上面的485发收模式切换的程序中,若未加延时函数delay_ms(1),将不能接收数据。那为什么要加延时函数呢?现在让我们从其根源深究吧!!!
其实根本原因不在MAX3485芯片,而是在主控单片机芯片上,要想明白其原因,我们首先得知道单片机的串口收发的工作原理。在这里我们以TI公司的MSP430F5XX单片机分析其串口数据收发详细过程及原理。
在这里插入图片描述

1.上图为MSP430F5XXUART模式下串行数据接收逻辑框图,在此对我们有用的部分进行简化,简化图如下:
在这里插入图片描述
接收数据可简化为以下三步(与上简化图一一对应):
①将要发送的数据写入发送缓冲寄存器
②发送缓冲寄存器将数据一位一位地移入发送移位寄存器,注意!若全部移入,即此时发送缓冲寄存器没有数据,全部进入发送移位寄存器,这个时候将由硬件产生发送中断标志位UCTXIFG,表明此时发送缓冲寄存器为空,可以接收另一个数据。
③移位寄存器将数据一位一位地发送到我们要接收数据的接口处,需要一定的时间T,而这个时间T正是我们要延时的时间delay(T)。

简单地了解串口发送数据的过程后,我们再进一步分析MAX3485发送接收模式切换需要延时的原因,在实际的通信过程中我们经常通过软件查询发送中断标志位UCTXIFG,(常用语句为while (!(UCA0IFG & UCTXIFG));如果UCTXIFG被置位则表示第二步②已经完成,也即是发送缓冲寄存器将数据全部移入发送移位寄存器,此时发送缓冲寄存器为空,可以接收另一个数据。)如果在查询中UCTXIFG被置位则跳出循环,若在此时MAX3485直接切换至接收模式如

              RS485_SEND_ON;                  //485开启发送功能
            *************************;//写数据
           while (!(IFG2 & UTXIFG1));//查询发送中断标志位UCTXIFG
            RS485_REC_ON;                 //查询后485立马开启接收功能

   
   
  • 1
  • 2
  • 3
  • 4

不加延时函数直接切换至接收模式意味着没有预留步骤 ③的时间,即移位寄存器将数据一位一位地发送到我们要接收数据的接口处要耗费一定的时间T,若不预留给此时T,移位寄存器还未将数据发出,此时若直接切换至接收模式,将导致数据会丢失。因为MAX3485是半双工的,不能同时进行接收和发送两种操作。因此我们需要进行延时处理,程序模板如下:

                       RS485_SEND_ON;                  //485开启发送功能
                           **********************;//写数据
                   while (!(IFG2 & UTXIFG1));//查询发送中断标志位UCTXIFG
                       **delay(T);//延时时间为T**
                RS485_REC_ON;                 //查询后485立马开启接收功能
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

延时时间T与波特率有关,比如通讯时常将波特率设置为9600bps,即每秒发送9600bit(即每秒9600个二进制),因此移位寄存器将8位2进制一位一位发送出去所需的时间T=(1/9600)*8=0.83ms,(通常调用 delay_ms(1); 延时1ms)。

安卓安全架构是指为了保护安卓设备和应用程序的安全性而制定的一系列安全措施和机制。它的设计目标是确保设备和用户的数据安全,防范恶意软件和黑客攻击,保护用户的隐私。 安卓安全架构主要包括以下几个方面: 1. 应用程序的权限管理:安卓系统通过权限管理机制,对于每个应用程序都有一定的权限限制,只有获得用户授权才能访问敏感数据和设备功能。这样可以避免恶意应用程序获取用户隐私和滥用设备功能。 2. 应用程序的沙箱机制:安卓系统中,每个应用程序都运行在独立的沙箱环境中,相互之间不能直接访问彼此的数据和资源。这样一来,即使有恶意应用程序存在,也不会对其他应用程序或系统造成影响。 3. 安全更新和修复机制:安卓系统提供定期的安全更新和修复补丁,及解决已知的安全漏洞和问题。用户可以通过更新系统来获取最新的安全保护,保持设备的安全性。 4. 安全启动和认证机制:安卓系统在启动过程中会对系统进行完整性验证和数字签名验证,确保系统和启动过程的安全性。同,还支持设备锁屏、指纹识别等认证方式,保护用户的设备免受未经授权的访问。 5. 应用程序的代码审查和审核:Google Play商店对应用程序进行代码审查和审核,以确保应用程序不包含恶意代码和潜在的安全风险。这样一来,用户可以更加放心地从Google Play商店下载和安装应用程序。 总体来说,安卓安全架构通过多重层次的保护机制,保障了用户设备和数据的安全。然而,由于安卓系统的开放性和广泛应用于不同厂商设备上,也使得安卓面临来自恶意应用程序、网络攻击和系统漏洞等多种安全风险。因此,用户在使用安卓设备,仍需保持警惕并采取一系列的安全措施来保护自己的设备和数据。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值