学习硬件测试06:IIC(SHT30)+HMI串口屏+RS485(modbus)+SPI Flash读写+CAN通信(P81、P91、P95、P120、)

文章以下内容全部为硬件相关知识,鲜有软件知识,并且记的是自己需要的部分,大家可能看不明白。

一、IIC(SHT30 数字温湿度传感器)

1.1实验现象

1、软件模拟 I2C 协议与 SHT30 数字温湿度传感器通讯;

(之所以用软件模拟,原因有二:①更好的理解该通信协议 ②本次实验用到的 IIC 接口是单片机以上的 PG11 和 PG12 ,这两个接口并不支持硬件 IIC,故用软件来模拟)

2、数码管显示环境温湿度;

3、串口打印环境温湿度。

1.2硬件电路

1.3 IIC

lIC中文为集成电路总线,它是一种串行通信总线,使用多主从架构(也就是在这个总线上的设备既可以是主机又可以是从机),总线上每一个设备都有自己的地址(每一个字节是 8 位,IIC 是7位地址+最后一位 读/写 位),这样一来一条总线上最多可以接 128 个设备(地址 0~127 )。

本次实验的芯片 SHT30 可以通过自身的管脚 ADDR 来设置地址,当 ADDR 管脚接地时,地址问为 0X44,当 ADDR 管脚接高电平时,地址为 0X45。这样一条总线上可以接两个这样的芯片,通过这个管脚的连接方式来区分。

以上是对 IIC 协议的介绍,详情可以看之前的博客,这里只说以下内容:

  1. 总线空闲的时候,两根线上都是高电平。
  2. SDA 上出现下降沿,就代表是起始信号,该起始信号是谁发送的谁就是主机,谁就控制总线了。
  3. 起始信号之后,就开始传输 8 位字节,并且是高位在前(串口就是低位在前)。
  4. 在传输过程中,时钟线为低电平时数据可以进行更改;当为高电平时要保持状态,为读数据。
  5. 每传输一个字节接收器回应一个应答位。、
  6. 所有数据传输完之后,需要主机发送一个停止信号,时钟线为高电平,数据线为上升沿。

知道以上知识也是不能够完成该实验的,还需要更深入理解 ICC 协议、认真看 SHT 芯片手册、编程。

二、HMI 智能串口屏

2.1实验现象

1、HMI智能串口屏同步显示数码管计数;

2、HMI智能串口屏与主板同时控制步进电机。

HMI串口屏

2.2硬件电路

双排针 H11 串口一采用了复用功能,采用以下 3 种复用功能:

1、MicroUSB口连接到STM32,用于打印程序信息( 短路帽短接 3 与 5 , 4 与 6 )

2、HMI智能串口屏连接到STM32( 短路帽短接 3 与 1 , 4 与 2 )

3、MicroUSB口连接到HMI智能串口屏,用于更新串口屏程序与调试串口屏(杜邦线短接 1 与 6 ,5 与 2 )

这次实验主要是用后面两个,用 3 来更新屏幕的信息,进行 GUI 设计;用 2 进行程序调试。 

2.3 HMI 智能串口屏

一般的 TFT 屏:如果直接用单片机控制一个 TFT 接口的屏幕,界面就需要单片机来处理,可能需要一直 GUI  的程序,还需要设计界面,工作量非常大,而且需要 MUC 去刷新屏幕,对 MCU 的要求也比较高。

HMI 智能串口屏:里面不仅有一个 TFT 屏(可能还有其他的屏幕),里面还已经集成了一个单片机,程序都已经写好了,从整体的一个屏幕中引出串口。同时还引出了一个上位机,上位机主要是用来设计界面,上位机设计好之后,通过串口将程序下载进 TFT 整体(包含 TFT 的 MCU 整体),这样对单片机就没有什么要求了,只要有串口就可以,51  单片机都可以实现上述功能,  这样就可以轻松的完成显示工作,当然这个屏幕的硬件成本要高一点。

三、RS485(modbus)

3.1实验现象

1、主板(就是显示在电脑页面上的上位机页面)与数码管均可以显示 SHT30 的温湿度;

2、主板上的按键与上位机上的图形按键均可以控制继电器与蜂鸣器的打开或者关闭的状态;

实战板上的按键之所以可以和上位机上的图形按键同步,是因为两者通过 modbus 协议。

3.2硬件电路

下图是硬件电路部分,实现串口转 485  的接口的功能。

3.3 modbus

Modbus 是一种串行通信协议,是Modicon公司(现在的施耐德电气 Schneider Electric)于 1979 年为使用可编程逻辑控制器 ( PLC ) 通信而发表。Modbus 已经成为工业领域通信协议的业界标准(De facto),并且现在是工业电子设备之间常用的连接方式。

在一个 Modbus 总线上可以有很多的从机设备,每一个从机设备都有自己的地址,在这条总线上有且只有一个控制台为主机,这个主机可以控制所有的设备。

在这个实验的数据收发上采用的方式如下:

1、发送:采用0 DMA + TC 中断

向单片机开始发送数据的时候将管脚置高电平,让其处在发送的模式(TX),数据通过 DMA 发送数据,当 DMA 把数据发送完成之后,就会产生一个 TC 中断,告诉单片机数据已经发送完了,并将 485 芯片置为一个接收模式,就可以开始下一次接收指令了。

2、接收:采用DMA+空闲中断

常规模式下是处在一个接收模式的,当有数据过来的时候,DMA 就将数据搬到内存中然后产生一个空闲中断,产生中断之后单片机就把数据读出来。

四、SPI总线

主要是学习 SPI 接口,通过 SPI 接口进行 Flash 读写功能。

4.1程序功能

4.2硬件电路

在有的硬件原理图中 1  管脚可能有 10K 的上拉电阻到 3.3V ,目的是将 CS 引脚上拉监控跟踪 VCC 电压,防止在上电或者断电的时候,由于 VCC 电压不足导致写数据异常,如果 VCC 有异常,CS 就会有异常,CS 有异常是不能进行读取和写入数据的,防止破坏里面的数据。

4.3 SPI 

SPI 的详情可以参见之前的博客。

1、常使用的内部通信接口:UART,IIC,SPI

用于芯片之间的通讯,它们的特点是:速度快、距离比较短

2、常使用的外部通信接口:RS-232,RS-485,CAN

与外部通信,就要求距离远、抗干扰能力强(会采用差分走线),因为信号会衰减,所以电压比较高。其中的 232 通信现在用的比较少,485 是差分走线,工业上使用的特别多,可以传几十几百米甚至几千米。

五、CAN 通信

5.1实验现象1

程序一:CAN工作模式 - 环回模式

说明:只需一块开发板,即可测试CAN的收发功能。

对环回模式拙劣的解释:如果只有一个板子的话可以用环回模式测 CAN 是否好用。环回模式 CAN把发送的报文同时保存在接收邮箱中(通过过滤器),也就是自收发,如下图。正常模式,也就是两个板子相连,一个发送一个接收。在资源有限的前提下,只有一个板子并也没有什么USB转CAN的东西。所以在实验的时候需要有一个从正常模式切换至环回模式的过程。用环回模式去测试CAN是否好用。

上面的板子是处在环回模式,处在自动收发状态,不用接外面的板子,就可以直接测试通讯 。      

实验过程:在串口助手中选中这块板子的串口,按下复位按钮,在上电之后就输出提前写好的信息。按下按键 1 后,发送报文,并自己接受报文,比对收发的数据一致则实验成功。

5.2实验现象2

程序二:CAN工作模式 - 正常模式

说明:至少两块开发板,组成 CAN 总线系统,测试 CAN 的收发功能。

对正常模式拙劣的解释:CAN 作为一个总线,在正常模式下需要组成一个系统,本次实验用两块相同的板子,把两块板子的 CANH 和 CANL 接在一起,两块板子都处在正常的模式,接成一个网络,当然 CAN 总线上还可以连接更多的设备都可以,但是本次实验就使用两块实战板。

打开两个串口助手,并匹配到两个板子对应的串口号,按下两块板子的复位键。

按下上面一块板子的按键 1 ,上面的串口助手显示发送,下面的串口助手显示接收,可以多次实验(多次按下上面板子上的按键 1 ),每次发送的报文都有变化,比对两个串口的收发的报文,相同则说明实验成功,CAN 总线的正常模式也成功。

按下下面一块板子的按键 1 ,下面的串口助手显示发送,上面的串口助手显示接收,可以多次实验(多次按下下面板子的按键 1 ),每次发送的报文都有变化,比对两个串口的收发的报文,相同则说明实验成功,CAN 总线的正常模式也成功。

甚至两块板子可以同时发送,CAN 接口是多主机模式,不同于 485 接口只可以有一个主机,有点类似于 IIC 接口,任何一个设备都可以做为主机来进行发送。

如果将下面一块板子的 CAN 总线通讯线拔掉,按下上面板子的按键 1 进行发送,上面的串口助手上就会显示发送失败,按下下面板子的按键 1  ,也会显示发送失败。

5.3硬件电路

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/1523618.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

怎么把视频转换成mp4:好用的mp4格式转换器免费版推荐

用手机或者其他拍摄设备记录生活已经成为一种日常,当你想把手机里储存的日常小确幸发布到平台上时,才发现你视频的格式在平台上并不被支持。这个事实难免让人丧气。如果你还想继续上传视频的话,就不得不把视频格式转换成被平台支持的mp4格式。…

ELK系列之一---探索ELK奇妙世界:初识日志界大名鼎鼎的ES集群!

目录 一、为什么要使用ELK 二、ELK简介 三、Elaticsearch入门 3.1、什么是elaticsearch 3.2、elaticsearch的底层优点 3.2.1、全文检索 3.2.2、倒排索引 3.3、elaticsearch集群原理 一、为什么要使用ELK 一般我们需要进行日志分析场景:直接在日志文件中 gre…

Redis从入门到入门(上)

1.Redis概述 文章目录 1.Redis概述1.1 什么是Redis1.2 Redis的应用场景 2.Linux下Redis的安装与使用2.1 Redis下载2.2 Redis的启动2.3 Redis配置2.4 连接Redis 1.1 什么是Redis Redis是用C语言开发的一个开源的高性能键值对(key-value)数据库&#xff0…

C语言sprintf函数使用

1 其函数原型为:int sprintf(char *str, const char *format,...)。 具体用法如下: 基本语法: str:目标字符串的指针,用于存储格式化后的结果。format:格式化字符串,用于指定输出的格式。后续是…

数据结构-队列的介绍及循环队列

1.队列的概念 在开始前,请牢记这句话:队列是一个先进先出的数据结构。 队列(queue)是限定在表的一端进行插入,表的另一端进行删除的数据结构,如同栈的学习,请联系前文所学链表,试想…

4.5SQL注入之加解密注入

SQL注入之加解密注入Base64是网络上最常见的用于传输8Bit字节码的编码方式之一,Base64就是一种基于64个可打印字符来表示二进制数据的方法。 Less-21关 Cookie加密注入: 通过Burpsuite抓包: 进行Base64解密:

波场(Tron)监听区块交易(TRX,USDT)

前言说明: 本篇文章参考GitHub一位伙伴的代码,再代码基础上优化改良以后的结果,但是一下找不到那位大佬的GitHub链接了,如有侵权请联系作者调整文章,让跟多人收益。谢谢。 实现思路: 波场链是一条很新奇的链&#xff…

Nexus配置npm私服

1,配置npm-hub 2,配置proxy-npm 3,配置group-npm 4,配置local-npm 5,配置淘宝

[overleaf] 论文中含有中文字符导致编译失败

解决方案分为两步: 1. 加入package: UTF8或者xeCJK \usepackage[UTF8]{ctex}二选一 \usepackage{xeCJK} 2. 修改编译方式: Menu -> Setting -> Compiler -> XeLatex

MyPrint打印设计器(七)svg篇-二阶贝塞尔曲线

svg-二阶贝塞尔曲线 介绍一款强大的svg操作库,能够通过简单的代码,实现svg绘制与操纵,实现拖拽等功能 代码仓库 在线体验 代码仓库:github 代码仓库:gitee 实战项目:MyPrint 操作简单,组件丰富…

Ovirt-Engine(4.3.10 )备份恢复

介绍如何进行 oVirt Engine 的备份、恢复以及相关操作,包括自动备份脚本、手动备份步骤、托管引擎的恢复流程,以及恢复后的配置和验证步骤。 1. Engine 备份部分 1.1 备份使用的脚本 以下是一个用于自动备份 oVirt Engine 的 Bash 脚本: …

标签中的ref属性

之前说过了 ref() 函数,现在说的标签中的 ref 属性 和 ref() 函数也存在一定关联。 2、 标签中的 ref 属性分为两种情况: 用在普通DOM标签上,获取的是DOM节点。 用在组件标签上,获取的是组件实例对象 Vue2 中标签上的 ref 属性…

掌握AIGC的魔法:编写高质量提示词的艺术与科学

嘿,技术达人们,🚀 今天我们来聊聊AIGC界的超级明星——提示词(Prompt)。在AI生成内容的奇妙世界里,提示词就是那个点石成金的魔法棒。想要AI小伙伴听你的指挥,创造出令人惊叹的内容吗&#xff1…

9.2~9.3-模型量化学习内容

量化简介 量化是将模型浮点数变为定点数运行的过程。通过一个原始float数值range(scale、min、max),将类似实属域的float数值映射到一个网格比较稀疏的int网络上,中间肯定会产生数值的偏移。 基本概念 :模型量化可以减少模型尺寸&#xff0…

驾驶模拟左拐右拐

目录 根据4个点确定投影变换关系: 驾驶模拟左拐右拐 平移 四个点选 通过3个点定义放射变换:结果不对 根据4个点确定投影变换关系: import cv2 import numpy as npdef apply_perspective_transform(image, src_points, dst_points):# 将选…

spring--小白面试版01

bean 1.Spring框架中的bean是单例的吗? Service Scope("singleton") public class UserServicelmpl implements UserService { } 在Scope中 singleton: bean在每个Spring IOC容器中只有一个实例 prototype:一个bean的定义可以有多个实例 2. Spring框架中的单例bea…

jdk11安装步骤(含安装包)

安装包 通过百度网盘分享的文件:jdk-11.0.15.1_windows-x64_bin.exe 链接:https://pan.baidu.com/s/1IYRnvtPvfgloS8rawtRDvg 提取码:sv1w 一、安装过程 双击安装程序 二、配置环境 右键“此电脑”,点击“属性”,点…

学生管理系统升级(登录注册 + 关联学生管理系统)

新增需求 这是在昨天的基础初代版本上面新增一个登录注册忘记密码的功能 需求分析 注册 登录 忘记密码 user类代码呈现 package StudentSystem;public class User {private String username;private String password;private String personID;private String phoneNumber;pu…

828华为云征文|华为云Flexus X实例docker部署srs6并调优,协议使用webrtc与rtmp

828华为云征文|华为云Flexus X实例docker部署srs6并调优,协议使用webrtc与rtmp 华为云最近正在举办828 B2B企业节,Flexus X实例的促销力度非常大,特别适合那些对算力性能有高要求的小伙伴。如果你有自建MySQL、Redis、Nginx等服务…

KTH5701 系列低功耗、高精度 3D 霍尔传感器

KTH5701 是一款数字输出的 3D 霍尔芯片,内部 分别集成了 X 轴、 Y 轴和 Z 轴三个独立的霍尔传感器。 信号链采用高精度运放通过 16 bit ADC 将模拟信号 转换成数字输出。外部主机可以采用 SPI 或 I2C 两种 模式读出测量数据。此外,在芯片…