某智能农业基地需要实时监控各个蔬菜大棚的温湿度,李工开发了一款温湿度监测仪,硬件

资格题库2022-08-02  67

问题 某智能农业基地需要实时监控各个蔬菜大棚的温湿度,李工开发了一款温湿度监测仪,硬件系统设计部分如图2-1所示。李工采用STM32作为主控处理器,利用TS-FTM01传感器进行温度和湿度采集,采用GSM/GPRS/GPS三合一模块来实现温湿度采集数据的上报。TF-FTM01传感器和主处理器之间采用RS485总线进行通信。在系统设计中,使用STM32处理器实现对多个TF-FTM01传感器的数据读取。GSM/GPRS/GPS三合一模块可以实现自我定位,并把采集到的温湿度数据进行上报,该模块和STM32处理器之间采用RS232进行数据通信。TS-FTM01传感器使用RS485通信机制,每个传感器的RS485通信地址可以通过如图2-2所示的拨码开关进行配置。拨码开关一共有6位,实现对TS-FTM01传感器地址的编码。STM32处理器具有通用同步异步收发器(USART),USART利用分数波特率发生器提供宽范围的波特率选择。STM32处理器的波特比率寄存器USART桞RR的定义如图2-3和表2-1所示。问题:1  RS232和RS485都属于串行通信总线,以下关于串行通信、RS232、RS485的叙述中,正确的是(1)、(2)、(3)、(4)。请将答案填写在对应栏中。A.RS232支持全双工通信,只允许一对一通信B.RS232采用差分传输方式进行数据信号的传输C.RS232传输距离远,传输距离最远可达上千米D.RS485—般采用两线制进行半双工通信,允许一对多通信E.RS485采用差分传输方式,抗干扰能力强,传输距离远F.在进行嵌入式开发时,常采用RS485作为调试串口使用G.RS232典型的连接器包括DB9和DB25,仅使用三线也可进行基本逍信问题:2  STM32处理器具有通用同步异步收发器(USART),USART利用分数波特率发生器提供宽范围的波特率选择。波特率的计算公式为:其中,fck为给外设的时钟,USARTDIV是一个无符号数,其值设置在USART_BRR寄存器中。假设给外设提供的时钟频率fck=72MHz,GSM/GPRS/GPS三合一模块所需的波特率为115200,则USARTDIV的值应为(1),USART_BRR寄存器的十木进制值应为(2)。请完成其中的填空,将答案填写在对应栏中。问题:3  RS485总线使用特制的RS485芯片,最大支持节点数可达128个以上。该系统的RS485总线上最多可以支持(1)个TS-FTM01传感器?请完成其中的填空。问题:4  基于图2-1所示的硬件设计,需要实现某地点的温湿度数据的定时上报功能。该功能要求以T为周期读取RS485总线上16个TS-FTM01传感器(地址编码为0?15)的温湿度数据,通过GPS获取当前的位置信息,然后通过GSM网络把温湿度数据和定位信息发送到固定的手机号码上。需要特别指出的是,在图2-1所示的硬件设计中未使用专用的RS485芯片,STM32端的RS485总线是通过GPIO45和GPIO46两根G310口线模拟出的,即通过两根GPIO口线的高低电平变化来模拟RS485数据传输协议”基于上述硬件和软件设计,请从以下选项中选择正确的操作,把图2-4所示的软件流程补充完整,将流程图2-4中的(1)-(3)的答案填写在对应栏。A.设置GPIO45为输入模式,设置GPIO46为输出模式B.设置GPIO45和GPIO46为输入模式C.设置GPIO45为输出模式,设置GPIO46为输入模式D.设置GPIO45和GPIO46为输出模式E.addr>16F.addr>=16本方案利用低速串行总线遍历读取16个传感器的温湿度数据及GPS的定位信息,并通过GSM实现数据上报。该执行过程需要消耗一定的时间,导致现有的算法流程并不能精确实现以T为周期进行温湿度数据的采集和上报。为了修正该问题,需要把图2-4所示流程中的步骤(4)调整到步骤(5)后执行。请完成其中的填空,将答案填写在对应栏中。

选项

答案

解析 问题1:(1)-(4):AD E G问题2:(1)39.0625 (2)0x271问题3:(1)64问题4:(1)D(2)B(3)F(4)(m)(5)(c)问题1:RS232和RS485特点RS232支持全双工通信,但只支持一对一的单站通信,典型的连接器包括DB9和DB25,仅使用三线也可以进行基本通信。RS485支持一点对多点的双向通信,有二线与四线两种方式,采用二线制可实现真正的一对多半双工通信,采用差分传输方式,抗干扰能力强。问题2:根据波特率公式已知外设提供的时钟频率fck=72MHZ,GSM/GPRS/GPS三合一模块所需的波特率为115200,代入公式可得115200=72MHZ/16*USARTDIV,可得USARTDIV=39.0625,注意MHZ单位换算。根据图2-3和表2-1对寄存器USART_BRR的功能描述,寄存器的4-15位对应USARTDIV的整数部分,0-3位对应USARTDIV的小数部分,由上面求出的值,可知本题中,USARTDIV整数部分为39,对应USART_BRR的4-15位十六进制就是0x27;USARTDIV的小数部分为0.0625,则寄存器USART_BRR的0-3位十六进制为0x1,组合可知为0x271.问题3:根据图2-2所示,TS-FTM01传感器地址采用6位拨码开关进行编码,意味着该传感器的地址编码范围为0-63(最大2^6=64个)。在RS485通信机制中采用地址编码来区分不同的RS485设备。因此,该系统中可以支持的TS-FTM01传感器数目为64.问题4:RS485采用二线制进行半双工通信,本题要求用两根GPIO口线来模拟二线制的RS485总线,通过两根GPIO口线上的信号的高低来模拟RS485的差分信号,本题并未考察RS485时序,只对半双工通信概念进行考察。因此,在利用模拟的RS485总线进行数据发送时,总线处于写状态,要把这两根GPIO口线配置成输出模式;当处理器通过RS485总线实现了数据发送后,要立即把RS485总线的状态从写状态切换到读状态,以便接收传感器的应答信息,实现半双工通信,因此此时应该把这两根GPIO口线配置为输入模式。根据题目要求,要实现16个TS-FTM01传感器(地址编码为0-15)的温湿度数据读取,采用循环方式依次读取,根据软件流程图,addr地址从0开始处理,因此循环结束条件应为addr>=16.需要周期性的进行温湿度数据的采集和上报,周期T由硬件定时器来实现,为了实现精确定时,需要在一次定时时刻到后立即触发下一个周期的定时开始,但图2-4所示的软件流程是一次定时时刻到后,先进行16个传感器的读取,然后再触发下一个周期的定时开始,导致实际的采集间隔为预设的周期T加上读取16个传感器温湿度数据所需的时间。为了修正这个问题,需要在定时时间到后立即触发下一个定时周期,然后再进行温湿度数据的读取和上报。因此要把步骤m中的重置定时器操作提到步骤c定时超时后立即执行。
转载请注明原文地址:https://tihaiku.com/congyezige/2424505.html

最新回复(0)