美章网 资料文库 MATLAB与ARM的数据通信探讨范文

MATLAB与ARM的数据通信探讨范文

时间:2022-06-14 11:08:32

MATLAB与ARM的数据通信探讨

1硬件电路部分

1.1ADXL345模块ADXL345采用3mm×5mm×1mm,14引脚小型超薄塑料封装,是一款小而薄的超低功耗3轴加速度计。数字输出数据为16位二进制补码格式,可通过SPI(3线或4线)或IIC数字接口访问。ADXL345加速度传感器首先由前端感应器感测加速度的大小,然后由感应电信号器件转为可识别的电信号,这个信号是模拟信号。ADXL345中集成了AD转换器,可以将此模拟信号数字化,AD转换器输出的是16位的二进制补码。经过数字滤波器的滤波后在控制和中断逻辑单元的控制下访问32级FIFO,通过串行接口读取数据。

1.2STM32模块本系统中所采用的STM32F103VET6是一款意法半导体公司生产的基于CORTEX-M3内核的微控制器,由于其具有高性能、低成本、低功耗的特点被广泛应用于嵌入式领域的开源中。该芯片最高工作频率可达到72MHz,具有512K字节的闪存以及64K字节的SRAM[3]。STM32F103VET6内集成一个IIC-EEPROM以及两个USART串行通信接口。内置最高可达4.5Mbit/s的波特率发生器,起始位、数据位、奇偶校验位、终止位均可设置。同时,芯片内部还集成有一个SDIO接口,兼容SD存储卡,该接口可以使数据传输速率达到48MHz,可以实现对采集数据的实时存储。

2软件通信部分

2.1通信模块

2.1.1ADXL345与微控制器之间的通信在ADXL345中,可通过SPI或IIC数字接口通信。无论采用哪种模式,ADXL345都作为从机使用。其中SPI由三条信号线组成;IIC是双向、两线SDA、SCL。结合本系统所用的MCU以及近距离数据传输特点,故本试验选取IIC通信。ADXL345的IIC通信过程为:ADXL345的CS脚与VDDI/O脚通过上拉电阻相连便选择了IIC通信模式。IIC接口电路将ADXL345测量电路采集传送过来的数字信号交由STM32处理器进行处理。STM32处理器首先将数字量进行存储,然后通过相应算法处理得到被测物体加速度响应值,并将结果进行输出。在这部分通信过程中,通过对ADXL345的初始化设置,选用定时方式,由下位机微控制器每隔0.2s从ADXL345中接收一个数据[4]。

2.1.2STM32微控制器与上位机之间的通信USART是一种基于RS232串口通信协议的通信方式。但是上位机串口并不是TTL电平,故在它们之间必须通过相应的电平转换,才能够进行数据传输。本文采用的是典型的MAX232电平转换电路,如图2所示。

2.2软件部分软件设计的主要目的是使测控系统各个部分协调工作,上位机对于下位机接收的数据进行实时处理需要设计相应的软件如下:

2.2.1下位机数据通信软件模块下位机数据通信模块软件以MDK为开发平台,实现了下位机的数据通信。首先对下位机进行相关的串口初始化,而后通过中断方式判断接受缓冲区状态,若非空则利用握手信号发送数据,若空则继续回到初始化进程中,其程序流程图如图3所示。串口外设主要由三个部分组成,分别是波特率的控制部分,收发控制部分及数据存储转移部分。在配置波特率时,向波特比率寄存器USART_BRR写入参数,修改了串口时钟的分频值USARTDIV。USART_BRR寄存器包括两部分,分别是DIV_Man-tissa(USARTDIV的整数部分)和DIVFraction(US-ARTDIV的小数)部分,最终,计算公式为:。对于收发控制部分,包括:CR1、CR2、CR3、SR,即USART的三个控制寄存器和一个状态寄存器。通过向寄存器写入各种参数,来控制收发,如奇偶校验位,停止位等,还包括对USART中断的控制。收发控制器根据具体寄存器配置,对数据存储转移部分的移位寄存器进行控制。当需要发送数据时,内核或DMA外设把数据从内存写入到发送数据寄存器TDR后,发送控制器将适时地自动把数据从TDR加载到发送移位寄存器,然后通过串口把数据一位一位发送出去,数据从TDR转移到移位寄存器时,会产生发送寄存器TDR已空事件TXE,当数据从移位寄存器全部发送出去时,会产生数据发送完成事件TC,这些事件可以在状态寄存器中查询到。

2.2.2上位机数据通信软件模块本文以MATLAB作为上位机,其中MATLAB串口通讯控制属于MATLAB设备控制工具箱的一部分。该工具箱提供了MATLAB软件与硬件的交流通道,支持GPIB,VISA,SerialPort和TCP/IP及UDP等接口设备或仪器,综合考虑到STM32微控制器采用的是串口通讯,以及串口不需要额外的接口卡,无需硬件投入,且与RS232、RS485接口方便,硬件易于实现等情况,故采用SerialPort交流方式。MATLAB串口通讯设置包括:创建设备对象、向设备读写数据、通过串口控制设备三大部分。下位机接收的加速度值已经位于串口缓存区中,从而上位机只需从串口中读取数据,可采用中断或查询方式。在数据量大的情况下,若用查询方式时,数据必须分时传至上位机中,大大影响效率,且不能达到实时性的目的;若用中断方式,虽然程序相对复杂,但是可以实时传输数据。故本文采用中断方式读取数据。在以MATLAB为上位机并以中断方式进行通信时,需用Instrcallback(obj,event)回调函数以及事件驱动来实现。本文采用缓冲区有指定字节数目的数据可用事件(bytes-availableevent),具体程序段如下:g.BytesAvailableFcnMode=‘byte’;%定义中断触发事件为‘bytes-availableEvent’;g.BytesAvailableFcnCount=10;%设置接收缓冲区每收到10个字节时,触发回调函数;g.BytesAvailableFcn=@instrcallback;%得到回调函数句柄;fopen(g);%连接串口设备对象。

2.3实例分析为了验证设计方案的正确性与可行性,针对该系统的各功能进行了相关的测试,测试内容为加速度信号的传输与显示。试验中,利用STM32显示屏以及MATLAB绘图功能同时显示ADXL345测量的加速度,当传感器做随机运动时,STM32每隔0.2s从上至下、从左至右显示ADXL345z轴加速度值(见图4),与此同时,上位机根据接收的数据绘制了折线图(见图5实线部分)。由图4~5可知,应用MATLAB仪器控制工具箱准确地实现了STM32与上位机之间实时通信。

3结语

本文采用MATLAB仪器控制工具箱实现了STM32与MATLAB之间实时、准确的数据通信。建立了一个由ADXL345为加速度信号采集模块、STM32加速度信号处理显示模块和STM32与MATLAB实时通信模块组成的测试系统,并对该系统进行了试验分析,分析结果表明:该系统能实时、准确地将加速度信号显示在MATLAB界面中。同时该系统稳定、编程简单、效率较高、实时性强,且设计电路简单,易于控制,稳定性好。由于本文中采用的是C语言编程,故而移植性、兼容性好,能广泛应用于现实生产生活中的各个领域。

作者:吴敏东郭迎庆徐赵东龚兴龙单位:南京林业大学机械电子工程学院东南大学土木工程学院广西交通科学研究院中国科学技术大学

被举报文档标题:MATLAB与ARM的数据通信探讨

被举报文档地址:

https://www.meizhang.comhttps://www.meizhang.com/txcb/sjtxyylw/646753.html
我确定以上信息无误

举报类型:

非法(文档涉及政治、宗教、色情或其他违反国家法律法规的内容)

侵权

其他

验证码:

点击换图

举报理由:
   (必填)