上位机图像处理和嵌入式模块部署(h750 mcu vs f407)
【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】
在目前工业控制上面,f103和f407是用的最多的两种stm32 mcu。前者频率低一点,功能少一点,一般用在低端的嵌入式设备上面;后者频率高一点,自带的ip多一点,一般用在工控、运控上面多一点。当然,现在随着技术的发展和需求的变化,h750系列的mcu用的也越来越多。在stm32的产品光谱里面,有f7和h7两种,通常后者更加旗舰一点,频率高一点。差不多,h7的频率会达到f7的两倍,达到480m。今天,我们就讨论下f407和h750的一些差异和共同点。
1、怎么看出来h750频率提高了
有一个不是很准备,但是可以说明问题的代码。之前我们编写代码,实现led闪烁效果的时候,如果当时使用的delay数值是3000000,现在可能需要10000000,才能实现相同的效果。
while(1)
{delay(10000000);LED1_TOGGLE;delay(10000000);LED1_TOGGLE;
}
2、h750用的最多的三个领域
一般来说,频率高就意味着可以做的事情比以前多了。那么,有哪些领域比较适合h750呢。其实主要就是三个领域,一个是屏幕的显示和处理,一个就是图像的处理,还有一个就是电机控制。
处理屏幕的话,一般会多一个lcd接口,而处理图像的话,会多一个camera接口。电机的话,通常就是编码器、pwm,算法层面做的事情会多一点,硬件接口部分没有变化。
3、h750一般需要带一个sdram
以h750vbt6为例,它的频率是480m,ram有1m,但是flash只有128k。1m的ram空间里面,除了初始化的全局变量、未初始化的全局变量、heap、stack之外,还要留出一大部分来处理图像数据。要是图像的分辨率高一点,这个时候ram空间就不一定够了。所以,如果是使用h750来处理图像的话,一般需要额外搭一个sdram。
4、上位机配置从软件到网页
本身f407已经可以支持udp、tcp数据处理了。和f407相比较,h750的flash更大,可以运行的代码更多,加上频率上面有了增加,所以只要有需求,完全可以在h750上面开发一个小的http server。传统的上位机配置方式,要么是串口,要么是usb,其实和它们相比较,网页配置的方式更为方便。因为在这种情况下,根本不需要编写上位机,一个web page就可以搞定。
5、高端电机控制
传统电机的控制一般都是ti的dsp芯片来完成的。这部分随着arm高端mcu的引入,其实现在用arm mcu对电机进行控制也越来越常见了。本身h750频率高,也支持硬件浮点运算,这些都是电机控制非常看重的。
6、从classic can到fdcan
我们知道,f407是支持can总线的,而h750支持fd can的。目前手上的这块h750开发板,和之前f407开发板,不管是芯片的pin脚数,还是pwr、spi、tf卡、eth、key、led、typec、swd布局都是一样的,唯一的区别就是这个fdcan。一般来说,和can相比较,fdcan传输速率更快,单次传输的数据更多,而且fdcan本身也是兼容标准can通信的。
不过我们在使用的时候,一般需要添加一个tja1042t的转换芯片。
7、烧录方式
在烧录方式上面,个人比较推荐st-link v2和j-link,前者比较便宜,后者适用范围广一点。毕竟,很多国产mcu,都是无脑支持j-link烧录的。
8、软件开发方式
stm32h750既然是意法半导体出品的mcu,那么它和103、407的开发方式其实是差不多的。这意味着,只要我们比较了解前两者的代码逻辑,开发750基本没有什么难度。只不过,现在随着mcu的品牌越来越多,用hal开发的方式越来越得到了大家的认同。相比较之前的寄存器开发、函数库开发,大家不再需要对底层有过多深入的了解了。
9、成本方面
目前f407和h750的价格是差不多的,只不过h750在ram上面损失一点,在flash上面多一点,另外就是频率高一点。所以如果在意产品的整体性能,用不到那么高频率的mcu,可以选择407;反之算法部分多一点,对性能有点小要求,可以考虑下h750。
10、有趣的范例
有兴趣的朋友可以用它来做做图像,比如说如果h750上面有一个tf卡的话,把图片放到tf卡里面。临时需要保存的数据放到sdram里面。这样基本算法就可以跑起来了。后续要做的就是增加一个camera sensor就可以了,大家可以试一试。
image file -> tf card
image data -> sdram
camera sensor -> image data, image file
相关文章:

上位机图像处理和嵌入式模块部署(h750 mcu vs f407)
【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing 163.com】 在目前工业控制上面,f103和f407是用的最多的两种stm32 mcu。前者频率低一点,功能少一点,一般用在低端的嵌入式设…...

Linux C语言:指针和指针变量
一、指针的作用 使程序简洁、紧凑、高效有效地表示复杂的数据结构动态分配内存能直接访问硬件能够方便的处理字符串得到多于一个的函数返回值 二、内存、地址和变量 1、内存地址 2、变量和地址 1)变量用来在程序中保存数据 比如: int k 58; //声明一个int变…...

Llama模型家族之Stanford NLP ReFT源代码探索 (二)Intervention Layers层
LlaMA 3 系列博客 基于 LlaMA 3 LangGraph 在windows本地部署大模型 (一) 基于 LlaMA 3 LangGraph 在windows本地部署大模型 (二) 基于 LlaMA 3 LangGraph 在windows本地部署大模型 (三) 基于 LlaMA…...

MATLAB神经网络---序列输入层sequenceInputLayer
序列输入层sequenceInputLayer 描述一: sequenceinputlayer是Matlab深度学习工具箱中的一个层,用于处理序列数据输入。它可以将输入数据转换为序列格式,并将其传递给下一层进行处理。该层通常用于处理文本、语音、时间序列等类型的数据。在使用该层时&…...

使用CSS、JavaScript、jQuery三种方式实现手风琴效果
手风琴效果有不少,王者荣耀官网(源网址 https://pvp.qq.com/raiders/ )有一处周免英雄,使用的就是手风琴效果,如图所示。 我试着用css、js、jQuery三种方式实现了这种效果,最终效果差不多,美中不…...

什么是无头浏览器以及其工作原理?
如果您对这个概念还不熟悉,那么使用无头网络浏览器的想法可能会让您感到不知所措。无头浏览器本质上与您熟悉的网络浏览器相同,但有一个关键区别:它们没有图形用户界面 (GUI)。这意味着没有按钮、选项卡、地址栏或视觉显示。 相反,…...

计算机网络 —— 应用层(DNS域名系统)
计算机网络 —— 应用层(DNS域名系统) 什么是DNS域名的层次结构域名分类 域名服务器的分类域名解析方式递归查询(Recursive Query)迭代查询(Iterative Query)域名的高速缓存 我们今天来看DNS域名系统 什么…...

Linux--MQTT简介
一、简介 MQTT ( Message Queuing Telemetry Transport,消息队列遥测传输), 是一种基于客户端服务端架构的发布/订阅模式的消息传输协议。 与 HTTP 协议一样, MQTT 协议也是应用层协议,工作在 TCP/IP 四…...

VMware Workerstation开启虚拟机后,产生乱码名称日志文件
问题情况 如下图所示,我的虚拟机版本是16.1.2版本,每次在启动虚拟机之后,D盘目录下都会产生一个如图下所示的乱码名称文件。同时,虚拟机文件目录也是杂乱不堪,没有按照一台虚拟机对应一个文件夹的形式存在。 问题处理…...

Unity射击游戏开发教程:(27)创建带有百分比的状态栏
创建带有弹药数和推进器百分比的状态栏 在本文中,我将介绍如何创建带有分数和百分比文本的常规状态栏。 由于 Ammo Bar 将成为 UI 的一部分,因此我们需要向 Canvas 添加一个空的 GameObject 并将其重命名为 AmmoBar。我们需要一个文本和两个图像对象,它们是 AmmoBar 的父级。…...

Linux内存从0到1学习笔记(8.16 SMMU详解)---更新中
写在前面 前面博客已经了解过。SMMU是IOMMU在ARM架构上的实现。主要为了解决虚拟化环境中,GuestOS无法直接将连续的物理地址分配给硬件的问题。对于Hypervisor/GuestOS的虚拟化系统来说,所有的VM都运行在Hypervisor上,每一个VM独立运行一个O…...

标准盒模型和怪异盒模型的区别
CSS盒模型: 内容区(content)内边距(padding)边框(border)外边距(margin) 分为标准盒模型和IE盒模型/怪异盒模型 为了正确设置元素在所有浏览器中的宽度和高度…...

【第8章】如何利用ControlNet生成“可控画面”?(配置要求/一键安装/快速上手/生成第一张图)ComfyUI基础入门教程
这节我们来讲AI绘画领域中一个很重要的概念:ControlNet,看下如何让生成的画面更可控。 🎅什么是ControlNet? Stable Diffusion中的ControlNet是一种神经网络结构,它允许将额外的条件输入添加到预训练的图像扩散模型中,通过这种方式,ControlNet可以控制图像生成过程,…...

[qt] qt程序打包以及docker镜像打包
目录 一 环境准备: 1.1 qt环境 1.2 linuxdeplouqt打包工具 二 qt包发布: 2.1 搜索链接库 2.2 应用程序APP打包 2.3 发布 三 docker镜像包发布 3.1 环境准备 3.2 镜像生产脚本 3.3 加载镜像并运行docker容器 四 补充 4.1 时间不同步问题解决 一 环境准备: qt环境l…...

电脑屏幕监控软件有哪些?2025年监控软件排行榜
电脑屏幕监控软件有哪些?2025年监控软件排行榜 虽然现在还是2024年,但是有一些被广泛讨论和推荐的电脑屏幕监控软件,它们将在2025年异军突起,成为行业的引领者。 1.安企神软件: 功能全面的电脑屏幕监控软件…...

音视频主要概念
文章目录 常用的一些概念主要概念1主要概念2I帧P帧B帧 常用视频压缩算法 小结 常用的一些概念 主要概念1 视频码率:kb/s,是指视频文件在单位时间内使用的数据流量,也叫码流率。码率越大,说明单位时间内取样率越大,数…...

AIGC全面介绍
AIGC(Artificial Intelligence and General Competitions)是一个专注于人工智能和综合能力竞赛的组织。AIGC的目标是促进人工智能和综合能力的发展,并为相关领域的学术研究和应用创新提供支持和平台。 AIGC主要致力于人工智能竞赛的组织、举…...

vscode中模糊搜索和替换
文章目录 调出搜索(快捷键)使用正则(快捷键)替换(快捷键)案例假设给定文本如下目标1:查找所有函数名目标2:替换所有函数名为hello目标3:给url增加查询字符串参数 调出搜索…...

人工智能入门学习教程分享
目录 1.首先安装python,官网地址:Download Python | Python.org,进入网址,点击Windows链接 2.下载完成之后,进行傻瓜式安装,如果不选安装路径,默认会安装到C:\Users\Administrator\AppData\Local\Programs\Python\Python38目录下。 3.配置python环境变量,即把python的…...

Django序列化器详解:普通序列化器与模型序列化器的选择与运用
系列文章目录 Django入门全攻略:从零搭建你的第一个Web项目Django ORM入门指南:从概念到实践,掌握模型创建、迁移与视图操作Django ORM实战:模型字段与元选项配置,以及链式过滤与QF查询详解Django ORM深度游ÿ…...

Commons-io工具包与Hutool工具包
Commons-io Commons-io是apache开源基金组织提供的一组有关IO操作的开源工具包 作用:提高I0流的开发效率。 FileUtils类(文件/文件夹相关) static void copyFile(File srcFile,File destFile) 复制文件 static void copyDirectory(File srcDir,File destDir) 复…...

ROS中Twist消息类型
Twist消息类型在Robot Operating System (ROS)中是一个常见的数据结构,主要用于描述物体的线性速度和角速度。这种消息类型在ROS的geometry_msgs包中定义,常用于机器人运动控制,尤其是当需要向机器人发布速度指令时。 Twist消息由两个Vector…...

Pixi.js学习 (四)鼠标跟随、元素组合与图片位控
目录 一、鼠标移动跟随 1.1 获取鼠标坐标 1.2 鼠标跟随 二、锚点、元素组合 2.1 锚点 2.2 元素组合 三、图片图层 四、实战 例题一:完成合金弹头人物交互 例题二:反恐重击瞄准和弹痕 例题一代码: 例题二代码: 总结 前言 为了提高作…...

Golang | Leetcode Golang题解之第139题单词拆分
题目: 题解: func wordBreak(s string, wordDict []string) bool {wordDictSet : make(map[string]bool)for _, w : range wordDict {wordDictSet[w] true}dp : make([]bool, len(s) 1)dp[0] truefor i : 1; i < len(s); i {for j : 0; j < i;…...

简单聊一下Oracle,MySQL,postgresql三种锁表的机制,行锁和表锁
MySQL: MySQL使用行级锁定和表级锁定。行级锁定允许多个会话同时写入表,适用于多用户、高并发和OLTP应用。表级锁定只允许一个会话一次更新表,适用于只读、主要读取或单用户应用。 比如mysql开启一个窗口执行 begin; update xc_county_a…...

Python的网络请求
自学python如何成为大佬(目录):https://blog.csdn.net/weixin_67859959/article/details/139049996?spm1001.2014.3001.5501 在上一节中多次提到了URL地址与下载网页,这两项是网络爬虫必备而又关键的功能,说到这两个功能必然会提到HTTP。本节将介绍在P…...

[Shell编程学习路线]——探讨Shell中变量的作用范围(export)
🏡作者主页:点击! 🛠️Shell编程专栏:点击! ⏰️创作时间:2024年6月14日10点14分 🀄️文章质量:95分 文章目录 ————前言———— 定义变量: 输出变…...

AlertManager解析:构建高效告警系统
一、AlertManager简介 AlertManager是一个开源的告警管理工具,主要用于处理来自于监控系统(如Prometheus)的告警。它的设计目标是提供一个统一的告警处理平台,能够集中管理告警的路由、去重、分组和通知等操作。在现代云服务架构中…...

打造专属 Switch 模拟游戏机
文章目录 2种方案Switch版RetroArchLakka系统 整体性能对比:Lakka更优核心是否兼容:并不兼容整合2种方案:共享游戏ROM和配置、资源等文件夹临时修改Samba共享整个Lakka系统根目录 存储空间优化添加模拟器核心Switch版RetroArchLakka 添加游戏…...

如何使用Python中的type()函数和isinstance()函数
在Python中,type()函数和isinstance()函数都用于确定一个对象的类型,但它们在用法和目的上有所不同。 1. type()函数 type()函数返回对象的数据类型(或类)。它接受一个参数(即要检查的对象),并…...