精华内容
下载资源
问答
  • 数据传输
    千次阅读
    2021-07-31 04:54:37

    数据传输速率计算公式:R=(1/T)*log₂N (bps)

    其中:T为一个数字脉冲信号的宽度(全宽码)或重复周期(归零码),单位为秒;一个数字脉冲也称为一个码元,N为一个码元所取的有效离散值个数,也称调制电平数,N取2的整数次方值。若一个码元可取0和1两种离散值,则该码元只能携带一位(bit)二进制信息。

    若一个码元可取00,01,10,11四种离散值,则该码元就能携带两位二进制信息。以此类推,若一个码元可取N种离散值,则该码元能携带logN位二进制信息。当N=2时,数据传输速率的公式就可简化为:R=1/T,表示数据传输速率等于码元脉冲的重复频率。

    9276643f97b9bb101d24ce42fa20a4c9.png

    扩展资料

    数据传输速率为每秒钟传输二进制码元的个数,又称为比特率。单位为比特/秒(bit/s)。调制速率为每秒钟传输信号码元的个数,又称波特率,单位为波特(Bd)。

    数据传送速率为单位时间内在数据传输系统中的相应设备之间传送的比特、字符或码组平均数。在该定义中,相应设备常指调制解调器、中间设备或数据源与数据宿。单位为比特/秒(bit/s)、字符/秒或码组/秒。

    与硬盘产品不同,硬盘的数据传输率强调的是内部传输率(硬盘磁头与缓存之间的数据传输率),而移动硬盘则更多是其接口的数据传输率。因为移动硬盘是通过外部接口与系统相连接,其接口的速度就限制着移动硬盘的数据传输率。

    虽然USB1.1接口能提供12Mbps;USB 2.0接口能提供480Mbps;IEEE1394a接口能提供400Mbps;IEEE1394b能提供800 Mbps的数据传输率,但在实际应用中会因为某些客观的原因(例如存储设备采用的主控芯片、电路板的制作质量是否优良等),减慢了在应用中的传输速率。

    参考资料来源:百度百科-传输速率

    参考资料来源:百度百科-数据传输速率

    更多相关内容
  • Android实现Wifi数据传输

    热门讨论 2015-03-06 13:48:19
    两部手机连接wifi后,通过socket进行数据传输 说明: 测试需要两部安卓手机A,B。A手机创建WIFI热点作为服务器,B手机连接A手机WIFI热点,作为客户端。 //A手机服务器 接收数据步骤:1点击创建Wifi热点2点击"turn_on_...
  • 网络基本知识【数据传输流程】

    千次阅读 2022-03-21 21:46:00
    MAC地址 二、网络设备及相关技术 集线器 主机&路由器:ARP缓存表+ARP寻址 交换机 路由器:路由+NAPT 三、网路数据传输流程 1. 局域网传输流程 集线器 交换机 交换机+路由器 2. 广域网传输流程 ※ 浏览器中输入url后...

    一、网络基础

    这篇博客主要复习网络编程的理论基础,希望大家能够理解最基本的东西。

    1. IP地址

    IP地址主要用于标识网络通信过程中不同主机的逻辑地址,以此来屏蔽物理地址的差异。32位二进制数,通常以‘点分十进制’的形式表示。目前,IP地址有两种形式:IPv4和IPv6;可惜的是,这两种形式是不兼容的。
    IPv4的数量是2的32次方,大约43亿左右,如果每个主机都有一个IP地址,那么数量是远远不够的,后来推出IPv6(长度128位),IP升级意味着要耗费大量的人力物力财力,牵扯到相关设备的升级,所以IPv6还没有特别普及。
    那么地址不够用怎么办呢
    ①最开始想到的办法就是动态分配IP,一个IP地址被多个主机共享,这种方式显然不行的。
    ②NAT是一个神奇的技术,几乎使IPv4起死回生,NAT网络地址转换,直白说就是使用一个IP地址代表一批主机。这也是现在使用最多的方法。
    ③如果在资源充裕,财力支撑的情况下,还是升级到IPv6吧。
    IP地址是以网络号和主机号来标示网络上的主机,我们把网络号相同的主机称之为本地网络,网络号不相同的主机称之为远程网络主机,本地网络中的主机可以直接进行通信;远程网络中的主机要相互通信必须通过**本地网关(Gateway)**来传递转发数据。
    网络号:标识网段,区别两个不同的网段
    主机号:标识主机,同一网段内,主机之间具有相同的网络号,但是必须有不同的主机号(唯一标识)
    如何划分:五类~(原始分类)
    在这里插入图片描述
    各类地址表示范围:

    分类范围
    A类0.0.0.0~127.255.255.255(大型网络)
    B类128.0.0.0~191.255.255.255(中型网络)
    C类192.0.0.0~223.255.255.255(小型网络)
    D类224.0.0.0~239.255.255.255
    E类240.0.0.0~247.255.255.255

    注:主机最大连接数减去2,是除主机号为全0和全1的特殊IP地址。
    表示局域网的三类IP(剩下的都属于外网IP)
    ①10.*
    ②172.16.* - 172.31.*
    ③ 192.168.*
    特殊的IP地址:
    ①将IP地址中的主机地址全部设为1,就成为了广播地址,用于给同一个链路中相互连接的所有主机发送数据包。
    127.* 的IP地址用于本机环回(loop back)测试,通常是127.0.0.1(自己);本机环回主要用于本机到本机的网络通信(系统内部为了性能,不会走网络的方式传输),对于开发网络通信的程序(即网络编程)而言,常见的开发方式都是本机到本机的网络通信。
    ③将IP地址中的主机号设为1,通常表示当前网段的网关(这个网络的出入口)。
    上述的分类方法,造成IP地址浪费的现象,为了解决这种情况就引入了子网掩码。

    2. 子网掩码

    子网掩码格式和IP地址格式一样,也是一个32位二进制数,必须结合IP地址一起使用,只用通过子网掩码才能区分一台主机所属子网与其他子网的关系,使网络正常工作。它可以将网络划分为多个子网,防止主机过多阻塞或者过少浪费IP地址。
    经过子网划分,IP地址表示为:网络号+子网号+主机号,前两者统一为网络标识(划分子网后的网段),后面是主机标识
    子网掩码的表示方法有两种:
    ①点分十进制表示法
    例如:子网掩码二进制11111111.11111111.11111111.00000000,表示为255.255.255.0
    ②CIDR斜线记法
    IP地址/n
    例如:172.16.198.12/20,其子网掩码表示为255.255.240.0,二进制表示为11111111.11111111.11110000.00000000
    20表示共有20个1,所以n是这么来的。运营商ISP常用这样的方法给客户分配IP地址。

    相关计算:
    将IP地址与子网掩码按位与操作,得到网络号;
    将子网掩码二进制位取反,再与IP地址与计算,得到主机号。

    为什么要使用子网掩码呢?
    上面提到,子网掩码可以分离出IP地址的网络地址和主机地址,在网络通信的过程中,子网掩码结合IP地址可以计算获得网络号和主机号,用于判断源IP和目的IP是否在同一网段。
    如果网络号相同,说明两台主机属于同一个网段,这样通过ARP广播可以发现对方的MAC地址,双方实现通信。
    如果网络号不同,ARP广播会在本地网关终结,这时候会先把数据发送到本地网关,网关再根据目的主机IP在路由表中查找下一跳地址,再将数据包继续传递转发,最终到达目的地。

    3. MAC地址

    MAC地址:用于标识网络设备的硬件物理地址。网络通信,本质上就是网络硬件设备,将数据发送到网卡上,或者从网卡接收数据,实现网络数据传输。
    MAC地址用来识别数据链路层中相连的节点;长度为48位,及6个字节。一般用16进制数字加上冒号的形式来表示(例如:08:00:27:03:fb:19)。在网卡出厂时就确定了,不能修改。虚拟机中的MAC地址不是真实的MAC地址,可能会冲突;也有些网卡支持用户配置MAC地址。
    特殊的MAC地址:
    广播数据报(FF:FF:FF:FF:FF:FF):发送广播数据报,意味着对当前同网段的所有主机发送。
    IP地址和MAC地址区别:
    IP地址描述的是路途总体的起点和终点;是给人使用的网络逻辑地址。
    MAC地址描述的是路途上的每一个区间的起点和终点,即每一跳的起点和终点;是给网络硬件设备使用的网络物理地址。

    二、网络设备及相关技术

    集线器

    集线器的作用是转发至所有端口。它是工作在物理层的网络设备,发送到集线器的任何数据,都只是简单的将数据复制并转发到其他所有端口。(端口指集线器后边的物理端口)

    主机&路由器:ARP缓存表+ARP寻址

    我们上面提到,子网掩码可以判断当前通信的源IP和目的IP是否属于同一网段,方便确定之后处理流程。属于不同网段时,我们可以通过路由表查找下一跳的IP地址,但该设备的MAC地址(即目的MAC)可能不知道,就需要使用ARP寻址:
    首先,ARP是一个介于数据链路层和网络层之间的协议;ARP协议建立了IP地址与MAC地址的映射关系。
    在数据链路层,寻找下一跳设备MAC地址的过程,称为ARP寻址
    (1)主机和路由器中都保存了一张ARP缓存表:通过IP地址可以找到对应的MAC地址。
    (2)根据下一跳设备的IP地址,在ARP缓存表中能找到对应的MAC地址,则可以设置目的MAC并发送
    数据报。
    (3)如果找不到,则发送ARP广播数据报:目的MAC为广播地址,询问下一跳设备的MAC地址。

    交换机

    交换机工作在数据链路层,交换机内部会记录并维护一张MAC地址转换表

    • MAC地址转换表主要记录MAC地址与端口之间的映射关系。(端口指交换机后边的物理端口)
    • 主机连接到交换机,在主机发送数据的时候,交换机可以学习并记录该主机MAC地址与端口信息。
    • 交换机接收到数据报以后,在MAC地址转换表中,通过目的MAC查找到对应的端口,则目的主机为该端口相连接的主机。只需要将数据报转发到对应端口上即可。
    • 以上是使用MAC地址转换表,通过目的MAC能找到对应端口的情况;如果找不到,交换机设置数据报目的MAC为广播地址FF:FF:FF:FF:FF:FF,发送到其他所有端口,目的主机返回响应后,交换机再记录该主机MAC与端口的映射信息。

    路由器:路由+NAPT

    路由器有两个作用:
    (1)网关
    路由器作为网关,可以划分公网和局域网,某些路由器还可以将局域网划分为多个子网(不同网段)。

    公网端口即WAN口,为单独的网卡,具有公网IP地址和公网MAC地址。
    划分的多个子网,是由局域网端口即LAN口划分,每个端口都有单独的网卡,具有该网段IP地址和MAC地址。

    路由器作为网关:
    ①划分局域网多个子网时,可以直接通过ARP寻址找到局域网任意主机。(这里的局域网就是路由器下的多个子网组成的局域网)。
    ②划分公网和局域网时,局域网内主机发送数据报到公网主机时,需要基于NAPT协议,将局域网主机的IP地址和端口号,转换为路由器公网IP和端口号(指路由器中运行的程序的端口)。
    局域网IP+端口需要转换为公网IP+端口,原因是接收端返回的响应数据报,目的IP和目的端口无法使用局域网IP和端口。
    (2)路由(路线规划)
    所谓路由,即在复杂的网络结构中,找出一条通往终点的路线;
    网络通信(网络数据传输),路由器中的路由功能,就类似于规划路线,往哪个方向行进能更快到达目的地。

    三、网路数据传输流程

    1. 局域网传输流程

    集线器

    使用集线器网络互联的情况下,发送端主机发送数据包时,需要先从上到下封装数据报。但封装时,目的MAC可能并不知道,需要先进行ARP寻址:
    (1)发送端在本机ARP缓存表中,根据目的IP查找对应的MAC地址
    (2)如果找到,则可以在数据链路层以太网帧头中,设置目的MAC并发送数据包
    (3)如果没有找到,需要先发送ARP广播请求,让接收端,即目的主机告诉自己,目的MAC是多少
    (4)发送端更新本机ARP缓存表:保存目的IP与目的MAC的映射
    (5)有了目的MAC,就可以按照第(2)个步骤发送数据了。
    以下为本机ARP缓存表能找到目的MAC的流程:涉及的知识:封装,集线器转发,ARP寻址
    在这里插入图片描述
    如果本机ARP缓存表中找不到目的MAC,则需要先发送广播请求:
    涉及的知识:ARP寻址,ARP广播
    在这里插入图片描述

    交换机

    涉及的知识:交换机MAC地址转换表
    在这里插入图片描述

    交换机+路由器

    涉及的知识:子网掩码,网关
    在这里插入图片描述

    2. 广域网传输流程

    涉及的知识:DNS,NAPT,路由
    在这里插入图片描述

    ※ 浏览器中输入url后,按回车后发生了什么?

    在这里插入图片描述
    (1)解析网址,生成 HTTP 请求信息
    浏览器会根据域名找到对应的IP地址(可以通过查自身缓存、hosts文件、DNS服务器/根服务器),浏览器会构造出一个HTTP请求,包含域名信息。(根据 DNS 服务器查询真实请求的 IP 地址,如果本地服务器有缓存则直接返回)
    (2)得到了 IP 以后,浏览器调用操作系统的API,Socket 会把HTTP请求交给TCP进行处理。
    ① 向服务器发送之前,构造TCP数据报,三次握手建立连接(SYN/ACK同样要经过网络层,数据链路层,物理层依次封装)
    ②网络层把TCP数据报封装成一个IP数据报
    ③数据链路层把数据封装为以太网数据帧(构造帧头时需要根据IP映射MAC地址,用到ARP协议)
    ④物理层把数据转换为光电信号,继续传输
    (3)中间转发过程。电信号沿着网线,到达下一设备(路由器)在进行数据分用,路由器拿到网络层的IP数据报,取出其中的目的IP,查询路由表,查下一目标的MAC地址,重新进行封装。数据到达接收方(服务器)继续进行分用,层层解析。
    ①物理层把光电信号转换为以太网数据帧
    ②数据链路层解析出IP数据报,交给网络层(crc校验)
    ③IP协议解析出TCP数据报(组包过程/IP报头/16位标识/3标志位/13位片偏移)
    ④再根据TCP数据报中的端口号,找到对应的进程,放入对应Socket缓冲区中
    (4)应用程序调用对应的Socket API,从TCP接收缓冲区中读取数据,按照HTTP协议解析,获取URL。
    (5)服务器对路径进行配置,映射到一个具体的index.html文件,并将内容构造成HTTP响应数据发送。将响应再进行层层封装和分用。
    (6)浏览器得到HTTP 响应报文并解析, 获取其中的html内容,根据HTML进行页面的 渲染并显示

    展开全文
  • navicat数据传输和数据同步有什么区别,数据库,文件,所示,数据传输,目标navicat数据传输和数据同步有什么区别易采站长站,站长之家为您整理了navicat数据传输和数据同步有什么区别的相关内容。我们使用Navicat管理...

    navicat数据传输和数据同步有什么区别,数据库,文件,所示,数据传输,目标

    navicat数据传输和数据同步有什么区别

    易采站长站,站长之家为您整理了navicat数据传输和数据同步有什么区别的相关内容。

    73e068ee507c7ffeec58d1816004d1f2.png

    我们使用Navicat管理MySQL数据库的时候,使用传输功能可以快速的将一个数据库中的信息复制到另一个数据库中。

    首先打开Navicat,找到一个数据库,右键单击选择数据传输选项,如下图所示(推荐教程:navicat教程)

    62f6fb0738049bb374e27862cfc39852.png

    接下来会弹出数据传输界面,设置一下数据源的内容,小编这里选择了一个数据表作为传输数据源,如下图所示

    344e677d1c158ace43fe04c5065a2e44.png

    然后在右侧设置一下目标接收数据库的内容,主要就是源数据传输到哪个目标数据库,如下图所示

    展开全文
  • STM32-DMA数据传输(USART-ADC-数组)

    千次阅读 2022-01-04 11:49:03
    DMA结构体初始化 DMA功能框图 DMA数据配置 DMA传输数据的思路 存储器到外设传输数据 存储器到存储器传输数据

    一、DMA简介

    DMA:直接存储器访问

    • 主要功能:

      把数据从一个位置搬移到另外一个位置,而且不占用CPU,即在传输数据的时候, CPU 可以干其他的事情。
      数据传输支持从外设到存储器或者存储器到存储器,这里的存储器可以是 SRAM 或者是 FLASH。

      存储器到外设典型应用是:USART
      外设到存储器典型应用是:ADC

      在这里插入图片描述
      DMA 控制器包含了 DMA1 和 DMA2,其中 DMA1 有 7 个通道, DMA2 有 5 个通道,这里的通道可以理解为传输数据的一种管道。

    • 使用USART传输数据时

      数组的内容首先发送给CPU的CR1,CR2,CR3然后再发到串口

    • 使用DMA传输数据

      只需要CPU给DMA下达一个指令,数组内容即可通过串口发送出去

    二、DMA 功能框图

    在这里插入图片描述

    (一)DMA请求

    如果外设要想通过 DMA 来传输数据,必须先给 DMA 控制器发送 DMA 请求, DMA 收到请求信号之后,控制器会给外设一个应答信号,当外设应答后且 DMA 控制器收到应答信号之后,就会启动 DMA 的传输,直到传输完毕

    (二)DMA通道

    • DM1请求映射
      在这里插入图片描述
      如果使用串口,则对应通道2,3,4,5,6,7
      USART1的TX和RX分别对应DMA1的通道4和通道5(并不是随便使用)

    • DMA2请求映射
      在这里插入图片描述
      当多个DMA请求同时来的时候,则需要用到仲裁器来决定谁先执行

    (三)DMA仲裁

    仲裁器根据通道请求的优先级来启动外设/存储器的访问。

    优先权管理分2个阶段:
    ● 软件:每个通道的优先权可以在DMA_CCRx寄存器中设置,有4个等级:
    ─ 最高优先级
    ─ 高优先级
    ─ 中等优先级
    ─ 低优先级
    ● 硬件:如果2个请求有相同的软件优先级,则较低编号的通道比较高编号的通道有较高的优先权。举个例子,通道2优先于通道4。

    三、数据配置

    • DMA初始化结构体
      在这里插入图片描述

    • DMA数据配置

      使用 DMA,最核心就是配置要传输的数据,包括数据从哪里来,要到哪里去,传输的数据的单位是什么,要传多少数据,是一次传输还是循环传输等等。

    (一)数据从哪里来到哪里去?

    在这里插入图片描述

    • DMA_PeripheralBaseAddr

      外设地址,设定 DMA_CPAR 寄存器的值;一般设置为外设的数据寄存器地址,如果是存储器到存储器模式则设置为其中一个存储器地址。

    • DMA_Memory0BaseAddr

      存储器地址,设定DMA_CMAR 寄存器值;一般设置为我们自定义存储区的首地址。—如果定义了一个数组,数组名即为首地址

    • DMA_DIR

      传输方向选择,可选外设到存储器、存储器到外设。它设定 DMA_CCR 寄存器的DIR[1:0] 位的值。这里并没有存储器到存储器的方向选择,当使用存储器到存储器时,只需要把其中一个存储器当作外设使用即可。

      DMA_DIR:规定外设是作为数据传输的目的地还是来源(数据传输方向)

       DMA_DIR_PeripheralDST	外设作为数据传输的目的地
       DMA_DIR_PeripheralSRC	外设作为数据传输的来源
      

    (二)数据要传多少,传输的单位是什么?

    在这里插入图片描述

    • DMA_BufferSize

      要传输的数据个数

    • DMA_PeripheralInc

      如果配置为 DMA_PeripheralInc_Enable,使能外设地址自动递增功能,(比如说外设地址定义了一个数组,地址需要递增),一般外设都是只有一个数据寄存器,所以一般不会使能该位。

    • DMA_MemoryInc

      如果配置为 DMA_MemoryInc_Enable,使能存储器地址自动递增功能(同样定义了一个数组,地址需要递增),我们自定义的存储区一般都是存放多个数据的,所以要使能存储器地址自动递增功能。

    • DMA_PeripheralDataSize

      外设的数据宽度,可选字节 (8 位)、半字 (16 位) 和字 (32 位)—这是根据定义的外设变量位数来决定

    • DMA_MemoryDataSize

      存储器数据宽度,可选字节 (8 位)、半字 (16 位) 和字 (32 位)–根据定义的存储器变量位数决定

      当外设和存储器之间传数据时,两边的数据宽度应该设置为一致大小

    (三)什么时候传输结束?

    在这里插入图片描述

    • DMA_Mode

      DMA 传输模式选择,可选一次传输或者循环传输

      例如串口发送一个数组内容的数据就可以设置位单次传输
      例如我们的 ADC 采集是持续循环进行的,所以使用循环传输模式。

    四、DMA三种应用

    (一)从存储器到存储器(M-to-M)

    当我们使用从存储器到存储器传输时,以内部 FLASH 向内部 SRAM 复制数据为例。

    DMA 外设寄存器的地址对应的就是内部 FLASH(我们这里把内部 FALSH 当作一个外设来看)的地址, DMA存储器的地址就是我们自定义的变量(相当于一个缓冲区,用来存储来自内部 FLASH 的数据)的地址。

    实验目的:
    我们先定义一个静态的源数据,存放在内部 FLASH,然后使用 DMA 传输把源数据拷贝到目标地址上(内部 SRAM),最后对比源数据和目标地址的数据,看看是否传输准确

    • 首先定义两个数组:一个作为外设,一个作为存储器

      内部FLASH是存放代码code
      内部SRAM是定义的变量

       /* 定义aSRC_Const_Buffer数组作为DMA传输数据源
        * const关键字将aSRC_Const_Buffer数组变量定义为常量类型
        * 表示数据存储在内部的FLASH中
        */
       const uint32_t aSRC_Const_Buffer[BUFFER_SIZE]= {
                                           0x01020304,0x05060708,0x090A0B0C,0x0D0E0F10,
                                           0x11121314,0x15161718,0x191A1B1C,0x1D1E1F20,
                                           0x21222324,0x25262728,0x292A2B2C,0x2D2E2F30,
                                           0x31323334,0x35363738,0x393A3B3C,0x3D3E3F40,
                                           0x41424344,0x45464748,0x494A4B4C,0x4D4E4F50,
                                           0x51525354,0x55565758,0x595A5B5C,0x5D5E5F60,
                                           0x61626364,0x65666768,0x696A6B6C,0x6D6E6F70,
                                           0x71727374,0x75767778,0x797A7B7C,0x7D7E7F80};
       /* 定义DMA传输目标存储器
        * 存储在内部的SRAM中																		
        */
       uint32_t aDST_Buffer[BUFFER_SIZE];
      

      aSRC_Const_Buffer[BUFFER_SIZE] 定义用来存放源数据,并且使用了 const 关键字修饰,即常量类型,使得变量是存储在内部 flash 空间上

    • DMA初始化部分

      源地址和目标地址使用之前定义的数组首地址,传输的数据量为宏 BUFFER_SIZE 决定,源和目标地址指针地址递增,使用一次传输模式不能循环传输,因为只有一个 DMA 通道,优先级随便设置,最后调用 DMA_Init 函数完成 DMA 的初始化配置

       //存储器到存储器						
       void DMA_mtm_config(void)
       {
       	//1-要初始化结构体肯定要定义一个结构体变量
       	DMA_InitTypeDef DMA_InitStruct;
       	//2、配置DMA时钟
       	RCC_AHBPeriphClockCmd(RCC_AHBPeriph_DMA1, ENABLE);//使能DMA1时钟 
       	
       	//数据从哪里来到哪里去(配置3个)
       	//源数据地址(把此数组看做外设)
       	DMA_InitStruct.DMA_PeripheralBaseAddr=(uint32_t)aSRC_Const_Buffer;//外设地址---是一个数组,数组名称就是首地址
       	//目标地址
       	DMA_InitStruct.DMA_MemoryBaseAddr=(uint32_t)aDST_Buffer;//存储器地址 --是一个空数组
       	//方向:外设作为源地址
       	DMA_InitStruct.DMA_DIR=DMA_DIR_PeripheralSRC;//传输方式
       	
       	//传多少,单位是多少
       	DMA_InitStruct.DMA_BufferSize= BUFFER_SIZE;//传输数目(要传输多少个)
       	
       	DMA_InitStruct.DMA_PeripheralInc=DMA_PeripheralInc_Enable ;//外设地址递增
       	DMA_InitStruct.DMA_PeripheralDataSize= DMA_PeripheralDataSize_Word  ;//数据宽度,word是一个字32位
       	
       	//配置memory
       	DMA_InitStruct.DMA_MemoryInc=DMA_MemoryInc_Enable ;//内存地址递增
       	DMA_InitStruct.DMA_MemoryDataSize=DMA_MemoryDataSize_Word ;
       	
       	
       	//配置模式和优先级
       	DMA_InitStruct.DMA_Mode=DMA_Mode_Normal ;//正常模式或者是循环模式
       	DMA_InitStruct.DMA_Priority=DMA_Priority_High ;//共有四种优先级
       	DMA_InitStruct.DMA_M2M=DMA_M2M_Enable;//刚好是M-M模式
       	DMA_Init(DMA1_Channel6, &DMA_InitStruct);
       	//M-T-M模式可以是任意的通道
       	
       	DMA_ClearFlag(DMA1_FLAG_TC6);//先将这个标志位清楚
       	//3、使能DMA
       	DMA_Cmd(DMA1_Channel6, ENABLE);
       	
       }
      
    • 数据是否传输完成且无误,两个数组中的内容要进行比较

       /**
         * 判断指定长度的两个数据源是否完全相等,
         * 如果完全相等返回1,只要其中一对数据不相等返回0
       	*参数1是常量指针,是不变的
       	*参数2也是一个指针
       	*参数3是要比较多长
         */
       uint8_t Buffercmp(const uint32_t* pBuffer, 
                         uint32_t* pBuffer1, uint16_t BufferLength)
       {
         /* 数据长度递减 */
         while(BufferLength--)
         {
           /* 判断两个数据源是否对应相等 */
           if(*pBuffer != *pBuffer1)
           {
             /* 对应数据源不相等马上退出函数,并返回0 */
             return 0;
           }
           /* 递增两个数据源的地址指针 */
           pBuffer++;
           pBuffer1++;
         }
         /* 完成判断并且对应数据相对 */
         return 1;  
       }
      
    • 主函数部分的内容:

       int main(void)
        {	
       	uint8_t status=0;
       	delay_init();	    	 //延时函数初始化	  
       	LED_Init();		  	//初始化与LED连接的硬件接口
       	
       	DMA_mtm_config();//DMA初始化
       	 //在比较之前最后先检测数据是否传送完毕:使用 DMA_GetFlagStatus(uint32_t DMAy_FLAG);函数
       	 //使用的DMA1通道6
       	 while(DMA_GetFlagStatus(DMA1_FLAG_TC6)==RESET);//如果返回值位reset表示还没哟传输成功
       	 
       	status=Buffercmp(aSRC_Const_Buffer,aDST_Buffer,BUFFER_SIZE);//返回值是一个8位的
       	if(status==0)//表示失败
       	{
       		LED0=0;
       	}
       	else//表示成功
       	{
       		LED1=0;
       	}
       	while(1)
       	{
       	}
        }
      

    如果两个数组中的内容一样、则点亮LED1灯作为信号,反之传输失败则点亮LED0灯作为信号。
    STM32-DMA(存储器到存储器传输数据)–代码链接

    (二)从存储器到外设(M-to-P)

    当我们使用从存储器到外设传输时,以串口向电脑端发送数据为例。 DMA 外设寄存器的地址对应的就是串口数据寄存器的地址, DMA 存储器的地址就是我们自定义的变量(相当于一个缓冲区,用来存储通过串口发送到电脑的数据)的地址。方向我们设置外设为目标地址

    实验目的:
    我们先定义一个数据变量,存于 SRAM 中,然后通过 DMA 的方式传输到串口的数据寄存器,然后通过串口把这些数据发送到电脑的上位机显示出来。

    串口初始化部分不再赘述
    stm32串口自定义协议接收一串十六进制数据

    DMA代码部分:

    • 首先需要定义一个发送数据的数组

       #define SendBuff_Size 5000
       u8 SendBuffe[SendBuff_Size];//定义一个发送数组
      
    • DMA初始化工作

      因为数据是从存储器到串口,所以设置存储器为源地址,串口的数据寄存器为目标地址,要发送的数据有很多且都先存储在存储器中,则存储器地址指针递增,串口数据寄存器只有一个,则外设地址地址不变,两边数据单位设置成一致,传输模式可选一次或者循环传输,只有一个 DMA 请求,优先级随便设

       //Memory->p(USART->DR)
       //通过手册查询串口的DR寄存器偏移地址是:0x04则外设地址是USART1_BASE+0x04
       void USART1_DMA_mtp_config(void)
       {
       	//1-要初始化结构体肯定要定义一个结构体变量
       	DMA_InitTypeDef DMA_InitStruct;
       	//2、配置DMA时钟(通过查看手册可以知道USART1_TX使用DMA1的通道4)
       	RCC_AHBPeriphClockCmd(RCC_AHBPeriph_DMA1, ENABLE);//使能DMA1通道4的时钟
       	
       	//3、数据从哪里来到哪里去(配置3个)
       	//外设地址(串口数据寄存器)--目标地址
       	DMA_InitStruct.DMA_PeripheralBaseAddr=(u32)&USART1->DR;//外设地址(或者USART1_BASE+0x04)
       	//存储器地址---源地址
       	DMA_InitStruct.DMA_MemoryBaseAddr=(uint32_t)SendBuffe;//存储器地址(指向了数组首地址)
       	//方向:存储器到外设(外设串口作为目的地)
       	DMA_InitStruct.DMA_DIR=DMA_DIR_PeripheralDST;//传输方式(MTP)
       	//规定外设是作为数据传输的目的地还是来源(数据传输方向)
       	//DMA_DIR_PeripheralDST	外设作为数据传输的目的地
       	//DMA_DIR_PeripheralSRC	外设作为数据传输的来源
       	
       	
       	//4、传多少,单位是多少
       	DMA_InitStruct.DMA_BufferSize= SendBuff_Size;//传输数目(数组的长度)
       	
       	//只有一个串口数据寄存器不需要递增,数组是U8类型,所以一次传输一个字节
       	DMA_InitStruct.DMA_PeripheralInc=DMA_PeripheralInc_Disable ;//外设地址b不需要递增
       	DMA_InitStruct.DMA_PeripheralDataSize= DMA_PeripheralDataSize_Byte  ;//数据宽度,u8类型,一个字节
       	
       	//配置memory(定义了一个数组,发送一个会继续下一个,所以地址是递增)
       	DMA_InitStruct.DMA_MemoryInc=DMA_MemoryInc_Enable ;//内存地址递增
       	DMA_InitStruct.DMA_MemoryDataSize=DMA_MemoryDataSize_Byte  ;//一个字节
       	
       	
       	//5、配置模式和优先级
       	DMA_InitStruct.DMA_Mode=DMA_Mode_Normal ;//正常模式或者是循环模式
       	DMA_InitStruct.DMA_Priority=DMA_Priority_High ;//共有四种优先级
       	DMA_InitStruct.DMA_M2M=DMA_M2M_Disable  ;//不使用M-M模式
       	DMA_Init(DMA1_Channel4, &DMA_InitStruct);//串口1TX是DMA通道4
       	//
       	
       	DMA_ClearFlag(DMA1_FLAG_TC4);//先将这个标志位清除
       	//6、使能DMA
       	DMA_Cmd(DMA1_Channel4, ENABLE);
       	
       }
      
    • 主函数部分内容:

        int main(void)
        {	
      
       	 u16 i;
       	for(i=0;i<SendBuff_Size;i++)//对数组填充数据
       	{
       		SendBuffe[i]='b';
       	}
       	delay_init();	    	 //延时函数初始化	  
       	LED_Init();		  	//初始化与LED连接的硬件接口
       	uart_init(9600);
       	USART1_DMA_mtp_config();
       	 //等待串口发送数据(去usart头文件中找有关DMA的函数)
       	USART_DMACmd(USART1,USART_DMAReq_Tx,ENABLE);
       	 //把定义的变量发送到串口,串口通过TX引脚发送出去
       	
       	while(1)
       	{
       			//为了证明dma不占用CPU此处让led闪烁
       			LED0=0;
       			delay_ms(100);
       			LED0=1;
       			delay_ms(100);
       	}
       }
      

    实验现象:串口助手可以接收到5000个数据–数据均为字符b,与此同时LED0在不停的闪烁

    STM32+DMA+串口发送数据(存储器到外设数据传输)-代码链接

    (三)外设到存储器(P-to-M)

    当我们使用从外设到存储器传输时,以 ADC 采集为例。 DMA 外设寄存器的地址对应的就是 ADC数据寄存器的地址ADC_DR, DMA 存储器的地址就是我们自定义的变量(用来接收存储 AD 采集的数据)的地址,方向我们设置外设为源地址。

    STM32-ADC单通道采集数据(中断形式和DMA形式)–代码
    代码参考ADC学习笔记整理部分

    STM32-ADC(独立模式、双重模式)+DMA读取数据+部分基础知识-链接

    展开全文
  • 网络TCP/IP基础(数据传输

    千次阅读 多人点赞 2021-10-02 16:39:08
    目录 前言 一、数据封装与解封装过程 1、数据封装过程 (1)应用层封装过程 (2)传输层封装过程 ...二、数据传输的一些基本概念 ... 数据传输的过程和TCP/IP五层网络结构关系密切,在实际的...
  • 数据传输技术

    千次阅读 2018-12-09 16:21:06
    数据在通信信道上的各种传输方式及其所采用的技术。
  • 数据传输率3. 平均数据传输率 1. 两者概念的区别 (1)数据传输率:指每秒发送多大量的数据。 (2)平均传输率:指发送周期发送的数据量 / 发送周期 两者是不同的概念。 2. 数据传输数据传输率是物理层关心的事...
  • 可靠数据传输基本原理

    千次阅读 2019-04-02 23:00:53
    可靠数据传输是指:数据可以通过一条可靠信道来传输。传输的数据不会受到损失或者丢失,而且所有数据都是按照其发送顺序进行交付。 我们都知道IP层是不可靠传输的,而TCP是可靠传输的,但是TCP是传输层的协议,这就...
  • 【遇见CUDA】要更快,请提高数据传输效率!

    万次阅读 多人点赞 2020-08-17 21:22:26
    你的CUDA算法,数据传输是否是你的性能瓶颈呢?要用常规还是异步?锁页还是零拷贝?看完此文,你应该能有所判断!
  • 1. 物理层概述物理层的主要任务网络物理层(Physical Layer,PH)主要任务为:如何利用传输媒体,为数据链路层提供传送和接收二进制比特(bit)流的服务。 物理层的具体功能物理层协议的具体功能为: 确定与传输...
  • 数据传输速率

    千次阅读 2020-12-27 16:40:34
    计算机网络传输特性之数据传输速率 定义:每秒钟传输的(二进制)比特数 单位:bit/second, 记作bps 数据传输速率 S= 1/T(bps) T为发射1比特所需的时间 例如:T =0.001ms. S = 1000000bps=1Mbps 办光纤宽带时的10M ...
  • 数据传输加密

    千次阅读 2019-06-21 13:45:09
    加密技术是为了保护敏感数据在网络传输中的安全,就像日常生活中使用的淘宝、支付宝、微信等等软件,如果涉及到金额的数据在网络中不加密传输,那是极易被别人窃取、篡改的,通信中的数据加密技术就显得尤为重要。...
  • 各位客官早,小店今日推出特色套餐“计算机网路基础之数据传输方式”,这道菜可以说是最近一段时间以来最硬的一道特色菜,还望各位走过路过的客官能暂缓脚步,尝一尝!当然了还是免费赠送哦!!! 一、数据传输方式...
  • Navicat 数据传输(数据库导入)

    千次阅读 2022-01-25 16:51:26
    需求说明: ...使用Navicat自带的数据传输工具实现表格结构及数据的迁移。 步骤图解: 工具版本:15.0.19 步骤1:打开Navicat,选择左上角的工具 步骤2:点击工具栏,选择数据传输 ...
  • 数据传输类型与通信方式

    千次阅读 2021-06-01 16:20:29
    数据传输类型 数据在计算机中是以离散的二进制数字信号表示,但是在数据通信过程中,它是以数字信号方式还是以模拟信号方式表示,主要取决于选用的通信信道所允许传输的信号类型。 如果通信信道不允许直接传输计算机...
  • 数据传输协议汇总

    千次阅读 2021-04-09 09:14:22
    FTP(文件传输协议) 对于业务文件传输,FTP可能是第一个想到的。 FTP是为单个文件传输和批量文件传输而构建的。它已经存在了一段时间,因此您可能不会在互操作性方面遇到问题。这意味着,您的贸易伙伴将永远有很大的...
  • 1.选择(工具--- 数据传输) 2.选择高级,高级里面有很多选择(例如:使用完整的插入语句) 3.结构同步 4.比对 5.勾选自己想要同步的表结构选项即可
  • 相信不少iPhone用户都清楚,使用iTunes传输数据是很麻烦的,不仅需要先将旧设备中的数据导出,而且一旦断电就万事皆休。那么,换新苹果了该怎么传数据?有没有简单一点的方法呢?其实,借助iOS12.4正式版中新增的...
  • 数据传输安全

    万次阅读 2018-07-25 22:26:06
    数据传输安全的要求 首先我们先明确我们在数据传输时对于安全到底有什么具体要求: 消息的发送方能够确定消息只有预期的接收方可以解密(不保证第三方无法获得,但保证第三方无法解密)。 消息的接收方可以确定消息...
  • 计算机网络-数据传输

    千次阅读 2019-12-18 17:25:49
    在学习计算机网络之前首先要了解,计算机网络的结构,当然这些结构的设计主要是为了数据传输,实现正常的通信,然而数据在传输时使用什么协议,在每一层上会有什么样的体现。每一层具体的作用是什么就是要学习的地方...
  • 无线网络数据传输的相关知识

    万次阅读 2021-05-28 10:39:38
    关键单位 子载波、物理资源块(PRB)之间的关系详情见LTE中物理资源块的进一步认识 帧 数据发送流程 消息-》信源编码-》信道编码-》调制-》多...对于一次传输,接收端在解调解码之后,如何判断这次接收到的数据
  • 网络数据传输问题和解决方式

    千次阅读 2021-12-03 22:02:09
    重要数据在网络中的传输如果是公开裸露的,可以想象我们发消息,打电话,输入银行卡密码,岂不是随意便能被他人获取,那么什么问题以及该怎么解决呢? 下面是数据产生的四个问题:窃听,篡改,假冒,事后否认 产生...
  • 前面我们已经说过,按照数据传输的方向可以将传输方式分为三种:单工、半双工和全双工。 1、单工传输:单工传输只支持数据在一个方向上传输,数据传送只能在一个方向上进行,任何时候都不能改变方向,就像公路上的...
  • 数据传输过程加密方案

    千次阅读 2019-08-19 19:29:58
    从前一篇网络安全基础要点知识介绍中可以知道,在网络通信中,通信传输数据容易被截取或篡改,如果在传输用户隐私数据过程中,被不法分子截取或篡改,就可能导致用户受到伤害,比如被诈骗,所以对客户端与服务端的...
  • 考虑到地理、天气等诸多因素,后续选择了通过北斗短报文、微波、4G公网通信等通信技术组合的方式,保证了数据采集终端可以在完成数据采集后,能够在卫星通信链路、公网通信的帮助下,稳定地将数据上报到到服务器…
  • TCP/IP总结(4)TCP之数据传输过程

    千次阅读 2022-03-17 00:03:08
    1. 为了保证数据准确到达,目标机器在收到数据包(包括SYN包、FIN包、普通数据包等)包后必须立即回传ACK包,这样发送方才能确认数据传输成功。 Ack号 = Seq号 + 传递的字节数 + 1 1.1 丢包 定时器重新传包 ...
  • 数据传输速率与带宽之间的关系

    千次阅读 2021-04-15 10:15:59
    数据传输速率: 数据传输速率是描述数据传输系统的重要技术指标之一。 数据传输速率在数值上等于每秒种传输构成数据代码的二进制比特数,单位为比特/秒(bit/second),记作bps。 对于二进制数据,数据传输速率为:S=1...
  • 通信常识:波特率、数据传输速率与带宽的相互关系 本文为转载文章,支持原创,请点击原文地址 【带宽W】     带宽,又叫频宽,是数据的传输能力,指单位时间内能够传输的比特数。高带宽意味着高能力...
  • 带宽和数据传输速率

    万次阅读 多人点赞 2019-03-25 08:51:52
    数据传输速率: 数据传输速率是描述数据传输系统的重要技术指标之一。 数据传输速率在数值上等于每秒种传输构成数据代码的二进制比特数,单位为比特/秒(bit/second),记作bps。 对于二进制数据,数据传输速率为:S=...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,799,993
精华内容 719,997
关键字:

数据传输

友情链接: dixiashidemo.zip