现代通信技术的发展对于信息的传输带来了质的飞跃,同时也为人们的生活提供了极大的便利。人们生活中使用的通信包括无线通信和有线通信。无线通信在可靠性、可用性和抗毁性等很多方面超出了传统的有线通信方式,尤其在一些特殊的地理环境下。本专题将针对无线与有线通信技术知识点以及发展趋势进行探讨。

UDP和TCP的区别,以及UDP通信C#实现

引言

网络协议是每个前端工程师都必须要掌握的知识,TCP/IP 中有两个具有代表性的传输层协议,分别是 TCP 和 UDP,本文将介绍下这两者以及它们之间的区别。

一、TCP/IP网络模型

计算机与网络设备要相互通信,双方就必须基于相同的方法。比如,如何探测到通信目标、由哪一边先发起通信、使用哪种语言进行通信、怎样结束通信等规则都需要事先确定。不同的硬件、操作系统之间的通信,所有的这一切都需要一种规则。而我们就把这种规则称为协议(protocol)。

TCP/IP 是互联网相关的各类协议族的总称,比如:TCP,UDP,IP,FTP,HTTP,ICMP,SMTP 等都属于 TCP/IP 族内的协议。

TCP/IP模型是互联网的基础,它是一系列网络协议的总称。这些协议可以划分为四层,分别为链路层、网络层、传输层和应用层。

现代通信技术最重要的知识点(通信技术知识看点以及发展趋势)(1)

在网络体系结构中网络通信的建立必须是在通信双方的对等层进行,不能交错。 在整个数据传输过程中,数据在发送端时经过各层时都要附加上相应层的协议头和协议尾(仅数据链路层需要封装协议尾)部分,也就是要对数据进行协议封装,以标识对应层所用的通信协议。接下去介绍TCP/IP 中有两个具有代表性的传输层协议----TCP 和 UDP。

二、UDP

UDP协议全称是用户数据报协议,在网络中它与TCP协议一样用于处理数据包,是一种无连接的协议。在OSI模型中,在第四层——传输层,处于IP协议的上一层。UDP有不提供数据包分组、组装和不能对数据包进行排序的缺点,也就是说,当报文发送之后,是无法得知其是否安全完整到达的……

带你避开I2C通信中的坑!

我以为我已经完全学会了IIC,但现实却打了脸,在驱动MPU6050时,总是读取失败。这个驱动明明是验证过的,为什么会有问题。让我一度很是郁闷。

问题

不卖关子,直接说问题,是我之前的IIC驱动有问题。

问题1:

错误将CLK信号GPIO设置为推挽输出。应该设置为开漏输出。

现代通信技术最重要的知识点(通信技术知识看点以及发展趋势)(2)

问题2:

读取函数有bug。1处应该先左移再读取SDA的数据,然后删除2处的数据。

现代通信技术最重要的知识点(通信技术知识看点以及发展趋势)(3)

问题2:这个就是纯粹的bug了,大家应该看出来了。在RTC的驱动没有触发bug的原因是:在RTC的IIC接收数据中,实际应用中最高位为0,触发不了这个bug。而在MPU6050的IIC接收数据中就触发了这个bug。我也在感慨,有时候不是程序没有bug,而是可能没有触发

问题1:这个问题,其实很简单,IIC协议中也提到过,很多大神也知道需要将MCU的IIC引脚设置为开漏输出。这一方面我也了解,但是没有在意,因为一直读取RTC一直“没有bug”。接下来我将细细和大家分享一下IIC为什么需要开漏输出,开漏输出和推挽输出有什么区别。精通的大佬可以出门左转了,想了解一下的同学欢迎继续往下看。

03开漏输出

STM32F207的GPIO框图如下

现代通信技术最重要的知识点(通信技术知识看点以及发展趋势)(4)

普通输入模式下,上拉和下拉电阻(微弱)的存在。主要是由于P-MOS和N-MOS的存在分为下列两种模式

  1. 开漏模式:输出寄存器是 0 时,激活 N-MOS, 而输出寄存器是 1 时,端口保持高阻态(P-MOS 不会被使能)
  2. 推挽输出: 输出寄存器是 0 时,激活 N-MOS, 而输出寄存器是 1 时,激活 P-MOS。

开漏模式输出1时,端口保持高阻态,这个时候如果端口外上拉电阻,就可以输出电平1……

终于搞清了SPI、UART、I2C通信的区别与应用

电子设备之间的通信就像人类之间的交流,双方都需要说相同的语言。在电子产品中,这些语言称为通信协议。

之前有单独地分享了SPI、UART、I2C通信的文章,这篇对它们做一些对比。

串行 VS 并行

电子设备通过发送数据位从而实现相互交谈。位是二进制的,只能是1或0。通过电压的快速变化,位从一个设备传输到另一个设备。在以5V工作的系统中,“0”通过0V的短脉冲进行通信,而“1”通过5V的短脉冲进行通信。 数据位可以通过并行或串行的形式进行传输。 在并行通信中,数据位在导线上同时传输。下图显示了二进制(01000011)中字母“C”的并行传输:

现代通信技术最重要的知识点(通信技术知识看点以及发展趋势)(5)

在串行通信中,位通过单根线一一发送。下图显示了二进制(01000011)中字母“C”的串行传输:

现代通信技术最重要的知识点(通信技术知识看点以及发展趋势)(6)

SPI通信

SPI是一种常见的设备通用通信协议。它有一个独特优势就是可以无中断传输数据,可以连续地发送或接收任意数量地位。而在I2C和UART中,数据以数据包的形式发送,有着限定位数。在SPI设备中,设备分为主机与从机系统。主机是控制设备(通常是微控制器),而从机(通常是传感器,显示器或存储芯片)从主机那获取指令。一套SPI通讯共包含四种信号线:MOSI (Master Output/Slave Input) – 信号线,主机输出,从机输入。MISO (Master Input/Slave Output) – 信号线,主机输入,从机输出。SCLK (Clock) – 时钟信号。SS/CS (Slave Select/Chip Select) – 片选信号……

RS485与Modbus通信协议教程

一、前言

在工业控制、电力通讯、智能仪表等领域,通常情况下是采用串口通信的方式进行数据交换。最初采用的方式是RS232接口,由于工业现场比较复杂,各种电气设备会在环境中产生比较多的电磁干扰,会导致信号传输错误。

1979年施耐德电气制定了一个用于工业现场的总线协议Modbus协议,现在工业中使用RS485通信场合很多都采用Modbus协议,所以今天我们来了解下RS485通信和Modbus通信协议。

二、RS485通信

1、实际上在RS485之前RS232就已经诞生,但是RS232也有不足:

1)接口的信号电平值较高,达到十几V,容易损坏接口电路的芯片,而且和TTL电平不兼容,因此和单片机电路接起来的话必须加转换电路。

2)接口使用的信号线与其他设备形成共地模式的通信,这种共地模式传输容易产生干扰,并且抗干扰性能也比较弱。

3)传输距离、速率都有限,最多只能通信几十米;只能两点之间进行通信,不能够实现多机联网通信。

2、针对RS232接口以上不足,出现了RS485等新的接口标准,RS485具备以下的特点:

1)逻辑“1”以两线间的电压差为 (2—6)V表示;逻辑“0”以两线间的电压差为-(2—6)V表示。接口信号电平比RS232降低了,不易损坏电路的芯片,且该电平与TTL电平兼容,可方便与TTL电路连接。

2)RS485通信速度快,数据最高传输速率为10Mbps以上;其内部的物理结构,采用的是平衡驱动器和查分接收器的组合,抗干扰能力大大增加。

3)传输距离最远可达到1200米左右,但传输速率和传输距离是成反比的,只有在100KB/s以下的传输速率,才能达到最大的通信距离,如果需要传输更远距离可以使用中继。

4)可以在总线上进行联网实现多机通信,总线上允许挂多个收发器,从现有的RS485芯片来看,有可以挂32、64、128、256等不同个设备的驱动器。

3、RS485有两线制和四线制,四线制只能实现点对点的通信方式,现很少采用。两线制这种接线方式为总线式拓朴结构,在同一总线上最多可以挂接32个结点。在RS485通信网络中一般采用的是主从通信方式,即一个主机带多个从机……

从IIC实测波形入手搞懂IIC通信

1 IIC基础知识

首先复习一下IIC基础知识,这部分看不懂的请先带着疑问,然后我们通过分析IIC的真实波形,这些疑问可能就豁然开朗了~

1.1 IIC是什么

IIC(Inter Integrated Circuit,集成电路总线)是一种由 PHILIPS 公司开发的两线式串行总线,用于连接微控制器及其外围设备。它是由数据线 SDA时钟 SCL 构成的串行总线,可发送和接收数据。在 CPU (单片机)与IIC模块之间、IIC模块与IIC模块之间进行双向传送。

IIC的一些特点:

:实际使用中,一般是单片机作为主机,其它器件作为从机,单片机先向器件发送信息表示要读取数据,之后转变传输方向,器件发送数据到单片机。

1.2 IIC物理连接

使用IIC通信的IIC器件有很多,比如陀螺仪加速度计MPU6050,EEPROM存储芯片AT24C02等,通过IIC总线,可以与单片机之间进行数据传输。

现代通信技术最重要的知识点(通信技术知识看点以及发展趋势)(7)

1.3 IIC时序

网上查找IIC的基础知识,可能会搜到这样的时序图:

现代通信技术最重要的知识点(通信技术知识看点以及发展趋势)(8)

看起来好复杂的样子,这时可能一部分人就放弃思考了……

国产单片机见到那好用之新塘031 串口PDMA通信

国产单片机终于起来了,替换的替换,以前经常用STM32,都替换成新塘的,一定没问题,一定会成功量产,一定不要重新来过。最后联系到今天的主角新塘。在上周选用了NUC029,下载资料,搭建环境,串口测试,SPI测试,然后突然发现这玩意没有DMA,白瞎了这么长时间啊,样板都做好了,结果出幺蛾子。然后在换M031,这次深思熟虑,认为不会有问题了才开搞。作为一个半成熟的程序猿,肯定不能helloword起手了,直接上UART吧。

环境搭建这里就跳过了,没啥用,我还是用KEIL 5 开发,自行下载个PACK包安装就好了。搜索自己的MCU型号,打开页面,在资源中有文档和软件。

现代通信技术最重要的知识点(通信技术知识看点以及发展趋势)(9)

在文档中下载数据手册等文档,在软件中下载例程和工具,软件中最实用的是以下几个软件:

现代通信技术最重要的知识点(通信技术知识看点以及发展趋势)(10)

从上到下依次是:官方例程库,Nu_link驱动,外设引脚配置软件,时钟配置软件。

外设引脚配置软件用于快速配置引脚以及复用,该软件只能配置引脚及其功能,不能配置外设等功能呢,例如串口的相关配置,这些事实现不了的。

时钟配置软件仅用于配置系统时钟以及各外设时钟。这两个软件支持导出.c代码。可复制粘贴到自己的工程。这两个软件都是非常简单的,这里就不赘述了。但是有一个时钟配置软件有BUG,以我用的M031SE3AE为例,外部时钟最大可使用32M,但是软件中最大只支持24M,希望官方可以修复。

现代通信技术最重要的知识点(通信技术知识看点以及发展趋势)(11)

现代通信技术最重要的知识点(通信技术知识看点以及发展趋势)(12)

开始代码下载官方的例程,固件库代码在文件夹:D:\M031_Series_BSP_CMSIS_V3.03.000\SampleCode\StdDriver,寄存器代码在D:\M031_Series_BSP_CMSIS_V3.03.000\SampleCode\RegBased这里采用固件库的方式开发,方便快捷。时钟初始化……

意犹未尽,查看更多精彩文章→→https://www.dianyuan.com/eestar/

更多精彩内容→→

学了那么多年的单片机,你真的学会了吗?

换个角度学习PWM,豁然开朗许多

关于变压器的那些疑问,此文给你作答

关于嵌入式单片机,怎样的学习方法才是正确的

,