完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
matlab串口接收数据学习——与STM32通信
虽然可以把所有算法代码集成到STM32中运行,但最终还是希望能够获得运算结果和中间过程的一些数据集,当然日后也希望能够在STM32于matlab的通信中实现更多的交互功能以达到更可视化和自由化的控制。我用的是STM32F103ZET6芯片,matalb安装的是2019b版本。 1. matlab serial函数的解释与运用 matlab真的相当强大,都有专门的串口函数serial。我们首先看最基本的语法: s = serial(‘port’, Name,Value) port指的是串口数目,后两者主要指要指定的参数和具体设置的参数值。matlab一共有12个串口可以供我们调试使用,我们可以通过instrfindall查看现在被连接的串口信息,所以也意味着在每次进行串口操作前,最好加入delete(instrfindall)语句保证所有的串口关闭以进一步操作,否则有时会出现串口打开错误等提示。 在开始操作前,我们可以通过seriallist 函数查找可以被连接的串口,说白了就是STM32完成串口硬件连接后,连到了哪个串口。那么下面开始具体的设置: s = serial(‘COM7’); 这一步定义了一个串口信息,接下来可以用set函数等对它进行操作,当然我更喜欢在一开始做好很多绝对不会变的参数: t=seriallist; ming=serial(t,‘BaudRate’,115200,‘Terminator’,‘CR’); 我们可以看到串口的基本信息: 到这时其实串口就可以使用了,当然我们可以一起看看各种参数的使用,以进行多方面的开发,当然相信波特率大家都知道就不再多说: %%通信属性 ming.ByteOrder = ‘bigEndian’ %是指设备的字节顺序,比如说十六进制数(一般我用USART_Sendata来发送),比如发送4A23,这是两个字节,因此可以通过这个参数来设定两个字节的存储顺序 ming.DataBits = 8;%数据位数的定义,当然一般八位没啥毛病 ming.Parity = ‘even’%表示奇偶校验位,我一般不设置用他的默认值 ming.StopBits = 1;%停止位,这个我也使用的是默认值一般不进行额外设置 s.Terminator = ‘CR’;终止符,CR答辩回车,LF代表换行。 这些都是一些基本的通信基础,而对于数据流的有效控制则还需要进一步对读取和写入属性进行学习: ming.Status %表示串口的状态,返回closed 或 open %%读取属性 ming.BytesAvailable%指的是输入缓冲区可用字节数,一般也不需要设置 ming.InputBufferSize = 768%输入缓冲区的大小,单位是字节,fgetl、fget 或 fscanf 函数读取文本数据。您可以使用 fread 函数读取二进制数据。 %%写入属性 ming.BytesToOutput%输入缓冲区的字节数 ming.OutputBufferSize = 256;%输出缓冲区的大小。 当然回来的数据要进行记录,因此还需要知道记录属性 ming.RecordName = ‘MyRecord.txt’; ming.RecordMode = ‘index’; record(ming)%开启记录 record(ming,‘off’)%关闭记录 fopen(ming);fclose(ming);delete(ming);clear ming%这个相信不用过多解释吧 另外还有很多相关参数,由于本项目用不到其他例如中断啊或者控制引脚的相关信息,因此便不再赘述。 2. 相关代码例程 我只需要进行读数据,因此相对而言简单一些: clear; clc; delete(instrfindall); t=seriallist; ming=serial(t); set(ming,‘BaudRate’,115200,‘DataBits’,8); ming.BytesAvailableFcnMode =‘byte’; ming.Parity=‘none’; ming.InputBufferSize=1024; % 输入缓存 fopen(ming);% 将串口对象打开 out=fread(ming,1); fclose(ming); delete(ming); clear ming |
|
|
|
只有小组成员才能发言,加入小组>>
调试STM32H750的FMC总线读写PSRAM遇到的问题求解?
1957 浏览 1 评论
X-NUCLEO-IHM08M1板文档中输出电流为15Arms,15Arms是怎么得出来的呢?
1740 浏览 1 评论
1209 浏览 2 评论
STM32F030F4 HSI时钟温度测试过不去是怎么回事?
800 浏览 2 评论
ST25R3916能否对ISO15693的标签芯片进行分区域写密码?
1765 浏览 2 评论
2010浏览 9评论
STM32仿真器是选择ST-LINK还是选择J-LINK?各有什么优势啊?
860浏览 4评论
stm32f4下spi+dma读取数据不对是什么原因导致的?
303浏览 3评论
STM32F0_TIM2输出pwm2后OLED变暗或者系统重启是怎么回事?
653浏览 3评论
654浏览 3评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-2-13 02:24 , Processed in 0.517617 second(s), Total 42, Slave 37 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191