文章以下内容全部为硬件相关知识,鲜有软件知识,并且记的是自己需要的部分,大家可能看不明白。
一、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 协议的介绍,详情可以看之前的博客,这里只说以下内容:
- 总线空闲的时候,两根线上都是高电平。
- SDA 上出现下降沿,就代表是起始信号,该起始信号是谁发送的谁就是主机,谁就控制总线了。
- 起始信号之后,就开始传输 8 位字节,并且是高位在前(串口就是低位在前)。
- 在传输过程中,时钟线为低电平时数据可以进行更改;当为高电平时要保持状态,为读数据。
- 每传输一个字节接收器回应一个应答位。、
- 所有数据传输完之后,需要主机发送一个停止信号,时钟线为高电平,数据线为上升沿。
知道以上知识也是不能够完成该实验的,还需要更深入理解 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 ,也会显示发送失败。