mbed
姚家湾
做研究和帮助他人是我的热情所在
展开
-
C++ 测试USB 串口速率
想测试STM32 和linux USB 串口速率,网上讲了各种软件好像都不能用,wireshark 的USB cap 也不管用,干脆自己写一个程序来测吧!关于测试程序执行时间的方法在测试串口时也不管用(clock,time 等等),需要使用一个线程来测:#include "serialPort.hpp"#include <pthread.h>#include <iostream>char buff[512];long counter;const char *de.原创 2020-09-25 10:13:31 · 1458 阅读 · 0 评论 -
Mbed OS 的文件系统
Arm Mbed OS 的文件系统不仅仅支持SD 卡上的文件系统,而且支持 内部RAM,内部ROM,外接SPI /QSPI NOR Flash ROM等等。块设备首先要定义块设备(BlockDevice)例如 SD卡设备写成:SDBlockDevice sd(MBED_CONF_SD_SPI_MOSI, MBED_CONF_SD_SPI_MISO, MBED_CONF_SD_SPI_CLK, MBED_CONF_SD_SPI_CS); 也可以使用new 的方式B...原创 2020-09-17 15:51:08 · 619 阅读 · 0 评论 -
Mbed 6.2 无法打印浮点数的解决方法
Mbed 真的好诡异,到了6.2 版本,浮点数打印都不出来了。幸亏网络分享:https://forums.mbed.com/t/float-printf-doesnt-work-in-desktop-version/9164 为了减少代码大小,Mbed引入了最小的printf和snprintf5。从Mbed OS 6.0开始,默认情况下启用它。仅当minimal-printf-enable-floating-pointconfig设置为true(默认情况下禁用)时,浮点参数才存在。如果您的...原创 2020-09-03 10:57:56 · 585 阅读 · 0 评论 -
STM32 /mbedOS使用的C++小型XML库-TinyXML2
XML 结构化文档的处理是比价麻烦的,为在cortex-M CPU 上处理XML,我选择了tinyxml2 库,并且在Arm mbed OS 上实现。相对比较简单,在这里分享出来。下载代码下载地址https://github.com/leethomason/tinyxml2文档地址:http://leethomason.github.io/tinyxml2/下载解压后,在tinyxml2-master 找出tinyxml2.cpp 和tinyxml2.h 两个文件。这个有用的文件mbed原创 2020-08-03 06:48:22 · 1004 阅读 · 0 评论 -
Mbed modbus TCP slave 和ubuntu modbusTCP client 程序
modbus TCP 协议modbus TCP 协议使用TCP 协议发送和接收modbus 消息。modbus TCP 消息结构如下,在modbus 消息的前面,添加了6个字节的头:Transaction Id Protocol Length Unit Address Message 2 Bytes 2 Bytes 2 Bytes 1 Byte N Bytes Transaction Id :是本次交互的IDprotocol :为0 表示m原创 2020-06-24 21:45:41 · 2206 阅读 · 0 评论 -
Mbed OS STM32F429 中断方式接收 ADS1256
经过半个月的测试,希望能够通过 TIM 捕获 DRDY 信号,启动DMA 传送ADS1256 的数据,但是始终没有成功,最后采取了折中的方式,TIM 捕获DRDY 信号,产生中断,在中断程序中读取3个字节数据。通过UDP 传送到PC 机的python 做显示。应为调试的很辛苦,所以要分享给大家。Mbed OS 项目为 ADS1256INT2020 数据采样频率为 30KHz...原创 2020-03-11 19:55:48 · 1848 阅读 · 1 评论 -
STM32 高速ADC 数据采集(内置,外置SPI,DMA方式)
大数据本质上是模拟大数据,许多情况下模拟量数据对于数据分析更有价值。在这篇博文中,我们重点来谈谈Mbed OS 操作系统下的高速数据采样。Mbed OS 下的模拟量IOMbed OS 的 API 中有模拟量IO:AnalogInAnalogOut它们是针对MCU 内部ADC 输入和DAC 输出。如果使用过它们的化,就知道它们很慢。根本没有办法适应高速数据采集。如果要实...原创 2020-02-28 14:49:25 · 19608 阅读 · 24 评论 -
Protocol Buffer nano在Mbed OS中的使用
Protocol Buffer 是google 公司开发的结构化数据序列化/反序列化方法。它比json和XML 效率更高。我们在ModularIoT 中使用Protocol buffer 实现消息体的编解码。当然也希望在微处理器cortex-M 的微服务器中也可以使用protobuf的编解码。网络上看见一个Protocol Buffer Nano 的项目。而且在Mbed OS 社区也发现...原创 2019-12-10 19:05:26 · 724 阅读 · 0 评论 -
基于MQTT的RPC协议
RPC 是一种基于request/response 模式的分布式协议。而MQTT 是基于pub/sub模式的协议。是否能够将这两种协议相结合,实现RPC Over MQTT ?我并没有发现由比较知名的RPC over MQTT协议。于是,自己着手设计一个极简的RPC Over MQTT 协议。本文介绍modular-2 Edge 中,使用MQTT 协议实现RPC 的方法。在...原创 2019-09-24 14:19:47 · 6225 阅读 · 2 评论 -
STM32 websocket,TCP和UDP的传输速率
网络上经常有人提到websocket ,TCP和UDP 的差别,说的大都是协议之间的差别,没有提及它们的传输能力,为了设计高吞吐量的物联网微服务器,最近对websocket ,TCP,UDP的传输能力做了测试 使用STM32F746 处理器 操作系统 Arm mbed OS 5.0 tcp/ip 协议 lwip 测试结果 TCP/IP 协议:2.5M...原创 2019-09-16 14:42:01 · 6189 阅读 · 0 评论 -
工业边缘计算机的体系结构
概述modular-2 Edge 是一台模块化工业边缘计算机,采用的64 位ARM主处理器为核心的主处理器模块,cortex-M 单片机为核心的IO 模块构成多处理器,多模块系统。采用以太网作为背板总线。主处理器模块采用linux OS 操作系统。使用docker 容器管理应用软件。为了高效率实现IO模块的访问和App 之间的相互通信与协同。modular-2 Edge 设计了一个创新的基...原创 2019-07-22 13:50:19 · 1732 阅读 · 0 评论 -
STM32F429 DMA 方式连接 ADS1274
之前使用过ADS1246 24bit ADC 设计过产品。该芯片功能强大,可编程能力强。不过它的缺点是参数设置和通道选择,数据读写都是通过SPI 读写,无法实现DMA 模式数据传送。经测试,无法满足振动信号采集的要求。所以在设计振动信号测试IO板时,我们选择ADS1274 芯片。在本博文中,介绍如何使用STM32F429实现ADS274 的高速数据传送。内容会随着项目进展不断更新。...原创 2019-06-21 13:30:02 · 4697 阅读 · 7 评论 -
Mbed OS 看门狗的实现
Mbed OS Watchdog 的实现 看门狗是嵌入式设备的常用功能,当时程序飞掉的时候,系统会自动复位。硬件实现上,watchdog 是一个特别的定时器,应用程序必须不断地重装定时器计数值(俗称喂狗),当程序没有及时喂狗的话,硬件定时器溢出,产生系统复位信号。 由于watchdog和硬件有关,mbed OS 目前没有实现看门狗功能。本文讨论如何在modular-2的ST...原创 2018-10-31 11:09:54 · 1182 阅读 · 0 评论 -
Mbed OS 固件更新(1)
Mbed OS 具备两种固件更新的方法: 通过SD 卡更新固件 将更新的二进制代码拷贝到SD卡上,插入Mbed OS 板卡上的SD卡中,按复位件,自动更新板上的固件,然后跳转到更新后的程序运行。 通过arm 云端服务器更新固件。在本文我们先讨论第一种方法。准备bootloader固件更新是通过引导程序来完成的。引导程序(bootloader)是将程序从sd 卡上读出,然后写入到M...原创 2018-10-30 11:53:02 · 1489 阅读 · 0 评论 -
MbedOS+MQTT+TICK 栈构建企业大数据平台
工业数据主要来自于物理设备和传感器,工业物联网技术为数据采集提供了各种手段。如果企业没有使用数据的技能和意愿,收集的数据再多也毫无用处。原始数据需要通过数据工程师进行分析,判断。才能为制造和商业决策提供依据。工业数据的特点是时序性,无法修改,并且具有时效性。时间序列数据库更加适合大数据存储和管理。工业物联网和数据分析,存储平台无缝对接,构建大数据平台是企业实现数据驱动战略的关键之一。 mo...原创 2018-11-29 14:08:17 · 795 阅读 · 0 评论 -
嵌入式系统中的FPGA
前言 FPGA 可以实现高速硬件电路,如各种时钟,PWM,高速接口,DSP计算等硬件功能。这是Cortex-M 处理器软件无法比拟的。要实现FPGA 的逻辑设计,对于嵌入式系统工程师又是比较复杂和具有一定难度。而且要更改FPGA内部的逻辑也不是十分灵活。本文探讨一种在嵌入式系统中,灵活,方便地动态配置FPGA 的方法。 具有FPGA 设计能力的硬件工程师可以设计各种F...原创 2019-01-11 13:05:19 · 3596 阅读 · 0 评论 -
初识 Mbed Linux OS
Arm 公司宣布在2019年的春天发布Mbed Linux OS (简称MBL) ,也许英国的春天来的晚些,到目前还没有见到它的影子。不过在Mbed 的官网上释放出了一些文档,可以大概看出Mbed 的真面目。Mbed Linux 是为Arm Cortex-A 处理器设计的一个基于Linux Yocto 项目。能运行多个复杂的应用程序,实现边缘计算。Mbed Linux 提供了一些...原创 2019-04-03 10:44:39 · 1695 阅读 · 0 评论 -
Linux 和Mbed OS UDP 通信(C++)
这几乎是一个非常菜鸟的程序,但是搞了我半天。最近一直在学习linux C++程序设计,于是想写一个简单的UDP 收发程序,与STM32F429的Mbed OS 进行通信。Linux 是华硕笔记本上Windows WSL (ubuntu)。 Mbed OS 代码Mbed OS上的程序比较简单,是一个UDP echo server。#include "UDPSocket.h"#i...原创 2019-05-22 19:52:32 · 488 阅读 · 0 评论 -
Linux 上串口PRC 协议的实现
最近一直在研究如何实高性能Cortex-A 处理器在工业控制,物联网领域的应用。Cortex-A 内核的SOC 芯片通常运行linux OS ,直接支持的硬件接口不多,而且不够灵活。我们倾向采用cortex-M 单片机作为Cortex-A的扩展IO来使用。为了提高软件研发的效率cortex-M 运行Arm 公司的Mbed OS。那么问题来了,Cortex-M 和Cortex-A 之...原创 2019-05-27 10:56:07 · 1624 阅读 · 0 评论 -
Linux 下串口编程(C++ 程序设计)
串口通信是最简单的通信方式。即使在USB 非常流行的今天,依然保留了串行通信的方式。网络上已经有大量关于Linux下 C++ 串口编程的文章,但是我依然要写这篇博文。因为网络上的资料不是内容太多,就是过于简短。我想写的恰到好处。 文章中的部分内容来自于: Linux 下串口编程入门。 http://digilander.libero.it/roba...原创 2019-05-23 12:58:57 · 10028 阅读 · 6 评论 -
linux OS 与Mbed OS相结合(1)-Mbed 库的实现
对于程序员而言,硬件永远是麻烦制造者。而对付硬件的有力武器就是软件抽象。使用C++对象程序设计语言可以将硬件封装成C++对象。让程序员像定义和调用类的方式来访问硬件。这方面做的不错的是arduino,树莓PI和Arm 公司的Mbed OS。 在Mbed OS 中,使用C++类定义了大多数Cortex-M 处理的接口驱动:-DigitalOut-PWMout-Digita...原创 2019-06-02 15:35:22 · 1184 阅读 · 0 评论 -
Arm 公司推出了 Mbed linux OS
Arm 公司在物联网领域动作频频,除了将原来的device connect 更新为 mebd-cloud(pelion) 云平台外,最近又预告推出了Mbed linux OS ,将Mbed 延申到了cortex-A系列处理器。 官网上释放出来的消息并不多,大致有这些:主打安全牌,支持安全,签名的引导和更新。 融合了 Pelion for device的功能。 融合了Intel SDO...原创 2018-10-20 07:40:06 · 1374 阅读 · 0 评论