精华内容
下载资源
问答
  • 串口通信的重要性和基础就不用我多讲了吧?基础不懂直接点链接:https://blog.csdn.net/weixin_45629315/article/details/105717414 这一次的重点是讲解几个串口的实验来加深自己对串口通信的理解。 目录 实验一(将...
  • 串口通信UART学习心得

    2020-08-04 05:13:09
    CPLD学习心得之串口通信UART学习
  • 互联网串口通信 让世界联网起来 2017版 周云波注 自存收藏
  • AT89C51双机串口通信proteus仿真源文件(含汇编程序),两个单片机通过串口连接,有按键和LED,两个包含proteus工程源文件,单片机汇编语言程序。proteus8.6可正常打开,仿真。
  • 工程中常用的串行通信有RS-232、RS-422、RS-485,这三个标准都 是由EIA/TIA定义的,有关三个标准更加细节的内容,可以参考TIA的网站。 最早的数据网络就是在三个标准下传输数据的。电脑通过COM口 与Modem相连,如果...
  • 本文主要为两个单片机之间的串口通信实例,希望对你的学习有所帮助。
  • STM32之间的串口通信

    2018-08-10 11:44:12
    STM32之间的串口通信,代码调试完全可用,使用的是基于正点原子的开发板,一个是mini板,一个是精英板,通过迷你板的USART3(PB10,PB11)串口实现输出,通过精英板的USART3(PB10,PB11)串口实现读取,并且通过...
  • 51 单片机串口通信程序,RS232串口通信 含详细例子。 含详细例子,RS232串口通信单片机接收发送数据的 C51程序,手把手教你用增强型51 实验板实现RS232 串口通信 51串口通信
  • 三菱FX5U用户手册(串行通信篇)
  • 用UART在两个模块间进行数据交互,实现数据的传输与接收
  • matlab串口通信-基于MATLAB的MCU串行通信.pdf 不错的文章有点启发 适合作为毕业设计的一部分 基于MATLAB的MCU串行通信
  • zigbee 串口通信

    2018-04-28 18:14:53
    Zigbee cc2530 串口通讯 发送字符串 PDF 教程
  • 串口通信,Android端与电脑端串口通信Demo,这个demo 是串口2302通信,主要用于测试,demo来源是网上买的光盘自带,可作为参考
  • Arduino 串行通信之串口通信 UART 原理及释义

    万次阅读 多人点赞 2019-03-28 09:43:53
    本系列中提到的串口通信一般指Arduino上面的USART通信模式,USART也是串行通信的一种,可以有硬串口,软串口两种实现方式,并且USART是一种异步串行通信.   相关案例: 环境监测 温湿度传感器 案例  

        对于Arduino来说,甚至是对于电子学领域来说,信号分为数字信号和模拟信号。这两种信号又分为输入和输出两种情况,所以我的理解是电子学就是一门研究这四种情况相互关系的学科。模拟信号是一种连续变化的物理量,能帮助我们更好地理解周围环境的信息,任何的信息都可以用模拟信号来准确表达,但其缺点是易受噪声的影响,信号被多次复制,或进行长距离传输之后,会发生衰减。相比而言数字信号受噪声的影响小,易于传输、处理和存储,现在被广泛应用于电子领域,但数字信号的缺点是每次的信息量小,只有0和1两种状态,所以就出现了串行通信的概念,通过多次的0或者1的数字信号组合来表达更丰富的信息。本章我们就来介绍一下Arduino中最基本的串行通信。

    串行通信的介绍

          串行通信是指使用一条数据线,将数据一位一位地依次传输,每一位数据占据一个固定的时间长度。使用串口通信时,发送和接收到的每一个字符实际上都是一次一位传送的,每一位为1或者为0.这就好像大家在电视里看到的通过敲门声的长短能够表达一些复杂的信息一样,这里敲门声的长短就相当于信号0或者1,只要双方约定好,就能够通过这种长短的变化表达固定的信息。在串行通信中, “双方约定好”这一点很重要,因为从实质上来说,通信的信号就是一堆0和1的数字,如果没有约定好这些0、1数字组合所代表的意义,那么双方不可能知道对方所发送信息的含义,就好像如果两个人交谈时使用不同的语言,那么他们的交谈是没有任何意义的。

    串行通信的约定

        串行通信中的这种约定包含两个方面,一方面是通信的速率要保持一致,另一方面是字符的编码要一致。

    波特率

        通信速率是指单位时间内传输的信息量,可用比特率和波特率来表示。比特率是指每秒传输的二进制位数,用bps (bits)表示。波特率是指每秒传输的符号数,若每个符号所含的信息量为1比特,则波特率等于比特率。在电子学中,一个符号的含义为高电平或低电平,它们分别代表"1"和"0",所以 ,每个符号所含的信息量刚好为1比特,因此常将比特率称为波特率,即:

    1波特(B) =1比特(bit) =1位/秒(1bps)

    常用的波特率有: 110,300,600, 1200,2400,4800,9600, 19200,38400,115200等最常用的是9600.

    ASCII码

         ASCII码是由美国国家标准学会(American National Standard Institute , ANSI)制定的,其英文全称是American Standard Code for Information Interchange,它是现今最通用的单字节编码系统,主要是为了解决大家在串行通信中的信息一致性问题。在Arduino中也采用这种字符编码方式。

         在计算机中,所有的数据在存储和运算时都用0或者1来表示,像a,b,c,d这样的字母(包括大写共52个);以及0、1等数字还有一些常用的符号(*、#、@等)在计算机中都要使用0或1来表示,而具体用哪些0、1组合表示哪个符号,每个人都可以约定自己的一套定义(这个定义就叫编码),只要双方的编码一致就可以通信了。而要想让更多人互相通信而不造成混乱,那么大家就必须使用相同的编码规则,于是美国有关的标准化组织就出台了所谓的ASCI1编码,统一规定了上述常用符号用哪些0、1的组合来表示.ASCII是基于拉丁字母的一套电脑编码系统。它主要用于显示现代英语和其他西欧语言。

    标准的ASCII码

         ASCII码使用指定的7 bit或8 bit数据组合来表示128或256种可能的字符。标准 , ASCI码使用7bit数据来表示所有的大写和小写字母、数字0到9、标点符号,以及在美式英语中使用的特殊控制字符。

         其中0~31及127 (共33个)是控制字符或通信专用字符,如: LF (换行)、CR (回车)、FF (换页)、 DEL (删除)、BS (退格), BEL (响铃)等;通信专用字符包括: SOH (文头)、EOT (文尾)、ACK (确认)等;ASCII值为8、9、10和13分别转换为退格、制表、换行和回车字符。这些字符并没有特定的图形显示,但会依不同的应用程序,而对文本显示产生不同的影响,其余为可显示字符。32 ~ 126 (共95个)是字符(32是空格),其中 48~57为0到9十个阿拉伯数字。65~90为26个大写英文字母, 97 ~ 122号为26个小写英文字母,其余为一些标点符号、运算符号等。

    串行通信的应用

         使用串行通信我们就能让Arduino与计算机通信了,在Arduino端进行串行通信的引脚称为串行端口,一般分为发送和接收,其中发送用TX表示,接收用RX表示。

    深入了解Arduino与外部设备的通信方式,这些通信方式均属于串行通信. 串行通信是相对于并行通信的一个概念. 

    如上图所示,并行通信虽然可以多位数据同时传输,速度更快,但其占用的I/O口较多,而Arduino的I/O口资源较少,因此在Arduino中更常用的是串行通信方式.

       Arduino硬件集成了串口 IIC SPI 三种常见的通信方式,掌握了这三种通信类库的用法,即可与具有相应通信接口的各种设备通信,也可以为基于这些通信方式的传感器或模块写驱动程序.

    硬件串口通信---HardwareSerial 类库的使用

       串口,也称UART(Universal Asynchronous Receiver Transmitter, 通用异步(串行)收/发器)接口,是指Arduino 硬件集成的串口.

    在Arduino中,通过Arduino上的USB接口与计算机连接而进行Arduino与计算机之间的串口通信. 除此之外,还可以使用串口引脚连接其他的串口设备进行通信. 需要注意的是,通常一个串口只能连接一个设备进行通信.

    连接如下图所示

    在进行串口通信时,两个串口设备间需要发送端(TX)与接收端(RX)交叉相连,并共用电源地(GND).

       在Arduino UNO 及其他使用ATmega328芯片的Arduino控制器中,只有一组串行端口,即位于0(RX)和1(TX)的引脚.

    串口工作原理

       在Arduino与其它器件通讯的过程中,数据传输实际上都是以数字信号(即电平高低变化)的形式进行的,串口通信也是如此. 当使用Serial.print()函数输出数据时,Arduino的发送端会输出一连串的数字信号,称这些数字信号为数据帧.

       例如,当时用Serial.print('A')语句发送数据时,实际发送的数据帧格式如下图所示:

    (1)起始位

       起始位总为低电平,是一组数据帧开始传输的信号.

    (2)数据位

       数据位是一个数据包,其中承载了实际发送的数据的数据段. 当Arduino通过串口发送一个数据包时,实际的数据可能不是8位的,比如,标准的 ASCII码是0~127(7位). 而拓展的 ASCII码则是0~255(8位). 如果数据使用简单的文本(标准ASCII码),那么每个数据包将使用7位数据. Arduino默认使用8位数据位,即每次可传输1B数据.

    (3)校验位

       校验位是串口通信中一种简单的检错方式. 可以设置为偶校验或者奇校验. 当然,没有校验位也可以. Arduino默认无校验位.

    (4)停止位

       每段数据帧的最后都有停止位表示该段数据帧传输结束. 停止位总为高电平,可以设置为停止位为1位或2位. Arduino默认是1位停止位. 

       当串口通信速率较高或外部干扰较大时,可能会出现数据丢失的情况. 为了保证数据传输的稳定性,最简单的方式就是降低通信波特率或增加停止位和校验位. 在Arduino中,可以通过Serial.begin(speed, config)语句配置串口通信的数据位 停止位 和校验位参数. config 的可用配置可去网上搜索相应配置表.

     

    请大家注意区别:串口通信和串行通信。串行通信指的是一个大类,区别于并行通信;本系列中提到的串口通信一般指Arduino上面的USART通信模式,USART也是串行通信的一种,可以有硬串口,软串口两种实现方式,并且USART是一种异步串行通信.

     

    相关案例: 环境监测 温湿度传感器 案例   

    展开全文
  • 针对目前广泛使用的RS-232串行通信在实际应用中所存在的缺点,提出了利用电流环同RS-232进行接口来提高串行通信距离及抗干扰能力的一种简单实用方法。该方法已在许多场合应用,效果很好。
  • 基于STM32CubeMX串口通信实验,实现返回所发送的数据,可作为开发参考例程或学习参考例程,单片机型号为STM32F407,串口为USART1,中英文兼容。
  • pyserial模块封装了对串口的访问,兼容各种平台。 安装 pip insatll pyserial 初始化 简单初始化示例 import serial ser = serial.Serial('com1', 9600, timeout=1) 所有参数 ser = serial.Serial( port=None, ...
  • Qt上位机串口通信,实现了与STM32单片机的数据收发,按钮控制LED、蜂鸣器。资源包括STM32单片机源程序、Qt源工程、打包好的.exe上位机软件程序。内含配置说明文档,适合新手学习Qt串口开发。 友情提示:Qt源程序...
  • 串口通信基本概念(一)——串行与并行通信,同步与异步通信 一、串口通信简介 串口通信,顾名思义也就是利用串行接口进行通信。串行接口指串口按位(bit)发送和接收字节。尽管比按字节(byte)传输的并行通信慢,...

    一、串口通信简介

    串口通信,顾名思义也就是利用串行接口进行通信。串行接口指串口按位(bit)发送和接收字节。尽管比按字节(byte)传输的并行通信慢,但是串口可以在使用一根线发送数据的同时用另一根线接收数据。

    串口通信中比较重要的参数包括波特率、数据位、停止位及校验位,通讯双方需要约定一致的数据格式才能正常收发数据。串行通讯可以进一步分为单工、半双工和全双工三种。在串口通信中,常用的协议包括RS-232、RS-422和RS-485。它们的主要区别在于其各自的电平范围不相同。

    二、串行和并行通信

    刚说到串口通信是通过接口进行串行通讯。那么什么是串行通讯呢?

    1 串行通信:

    串行通信:计算机与I/O设备之间,同一时刻,只能传输一个bit位的信号。传输数据按顺序依次一bit位接一bit位进行传输,通常数据在一根数据线或一对差分线上传输。

    比如,当传输1字节信息时,并行通讯有8根信号线实现同时传输,假如耗时为1T,而串行是在一根信号线上,把数据排成一行、一位一位传输,需要传8次,因此耗时为8T。因此可总结出二者的特性:

    2 并行通信:

    并行通信是和串行通信相对的数据传输的方式。

    并行通信:计算机与I/O设备之间,通过多条传输线,可以同时传输多个bit位的信号。

    • 并行通讯的效率高,但是成本高、对信号线路要求高,一般应用于快速设备之间近距离传输,譬如CPU 与存储设备、存储器与存储器、主机与打印机等都采用并行通讯。

    • 串行通讯效率较低,但是对信号线路要求低,抗干扰能力强,同时成本也相对较低,一般用于计算机与计算机、计算机与外设之间远距离通讯。

    3 串口通信和串行通信的区别

    串口通信和串行通信的区别在于:串行通信是一种概念,串口通信是一种具体的通信手段。

    串行通信是一种概念,是指一比特一比特的收发数据,相对于并行通信可同时传输多个bit位而言。包括一般的的串口通信、I2C、SPI等等。

    串口通信是外设和计算机间的一种通信手段,是相对于以太网通信等通信手段而言的。

    二者一个是一种概念,一个是一种实际的通信方式。

    三、同步和异步通信

    在设备之间传送数据,不管是同步通信还是异步通信,都是为了保证数据被正确的发送和接收,即发送方和接收方的“同步”。即接收方可以确定什么时候发送方开始或者结束发送数据以及每一个数据单位(例如bit,字符)的开始和结束的位置,这样接收方才能在正确的时间对发送方的数据进行采样,以接收正确的数据,否则接收到的数据就是错误的。

    根据“同步方式”的不同,由此分出两种同步信号得方法:
    (1)同步通信(比特位同步)
    (2)异步通信(字符间同步,字符内比特位异步)

    同步通信会利用一根额外的信号线,其实也就是时钟信号线,它往往是发送设备提供的时钟信号,发送设备和接收设备在发送设备提供的同一时钟频率下完成同步。(实际上,基本所有的并行通信采用同步通信。)

    异步通信没有额外的一根信号线用于同步,接收者和发送者使用各自的时钟信号,接收者根据与发送者按事先约定的规来确定数据发送的开始与结束以及数据单位的持续时间。例如异步串行通信中,一般接收双方会确定一致的停止位,数据位的个数、波特率的大小以及是否采用奇偶校验位。接收方可以根据这些信息推测出准确的数据采样时间以接收正确的数据。如果是同步通信则不需要这些额外的用于同步的数据位(开始位,结束位,奇偶校验位)。

    1 同步通信

    同步通信要求发送和接收双方在进行数据传输时,保持完全的同步,因此,要求发收双方必须使用同频同相的同步时钟信号。只需在传送报文的最前面附加特定的同步字符,使发收双方建立同步,此后在同步时钟的控制下逐位发送/接收。这样,信息传输完全可以确定传输过程中每1位的位置。因此同步通信是一种比特同步通信技术。

    如下图所示:
    在这里插入图片描述

    同步通信是一种连续传送数据的通信方式,一次通信传送一帧数据,每个信息帧用同步字符作为开始,字符间不加标识位。(这里的数据帧比异步通信中的字符帧要大得多,通常含有若干个数据字符)。当检测到有一串数位和同步字符相匹配时,就认为开始一个信息帧,于是,把此后的数位作为实际传输信息来处理。

    同步通信以数据帧为单位,其格式包括:同步字符+数据+校验字符CRC。

    (a)单同步数据帧结构

    同步字符数据字符1数据字符2数据字符3数据字符nCRC1CRC1

    (b)双同步数据帧结构

    同步字符1同步字符2数据字符1数据字符2数据字符nCRC1CRC1

    没有数据发送时,接收方要时刻做好接收数据的准备。在每组信息(通常称为帧)传输的开始,发送方先发送一个或两个特殊字符,该字符称为同步字符。当接收方收到同步字符,并和发送方达到同步后,就可以以固定的节奏一个字符接一个字符地发送一大块数据,而不再需要用起始位和停止位了,这样可以明显地提高数据的传输速率。同步通信更加适合对速度要求高的传输,对时序的要求很高,当然对硬件要求也更高。

    在没有信息要传输时,要填上空字符,因为同步传输不允许有间隙。在同步传输过程中,一个字符可以对应5~8位。当然,对同一个传输过程,所有字符对应同样的数位,比如说n位。这样,传输时,收发双方用一个时钟进行协调,按每n位划分为一个时间片,发送端在一个时间片中发送一个字符,接收端则在一个时间片中接收一个字符,这样就可以确定传输中每一位的位置。接收数据时,接收方利用同步字符使内部时钟与发送方保持同步,然后将同步字符后面的数据逐位移入,并转换成并行格式,供CPU读取,直至收到结束符为止。

    2 异步通信

    异步通信是按字符帧传输的,相对于同步通信,异步通信在发送字符时,所发送的字符之间的时隙可以是任意的,接收方并不知道数据什么时候会到达,因此接收端必须时刻做好接收的准备(如果接收端主机的电源都没有加上,那么发送端发送字符就没有意义,因为接收端根本无法接收)。发送端可以在任意时刻开始发送字符,时间间隔可以是任意的,在一字符帧中的所有比特是连续发送的。

    发送端不需要在发送字符之前和接收端进行协调(不需要先进行比特同步)。接收设备在收到起始信号之后只要在一个字符的传输时间内能和发送设备保持同步就能正确接收。内部处理器在完成了相应的操作后,通过一个回调的机制,以便通知发送端发送的字符已经得到了回复。下一个字符起始位的到来又使同步重新校准(依靠检测起始位来实现发送与接收方的时钟自同步的字符间同步,字符内比特位异步)

    因此必须在每一个字符的开始和结束的地方加上标志,即加上开始位和停止位,以便使接收端能够正确地将每一个字符接收下来。通信双方需要对采用的信息格式(字符的位数、停止位的位数、有无校验位及校验方式等)和数据的传输速率作相同的约定。接收方是在数据的起始位和停止位的帮助下实现字符传送时的同步。这种传输通常是很小的分组,比如一个字符为一组,为这个组配备起始位和结束位。所以这种传输方式的效率是比较低的,毕竟额外加入了很多的辅助位作为负载,常用在低速的传输中。

    在这里插入图片描述
    异步通信以字符为单位,其格式包括:起始位+数据+奇偶校验位+停止位。
    以起止式异步协议为例,如下图所示
    在这里插入图片描述
      起止式异步通信的特点是:一个字符一个字符地传输,每个字符一位一位地传输,并且传输一个字符时,总是以"起始位"开始,以"停止位"结束,字符之间没有固定的时间间隔要求。每一个字符的前面都有一位低电平起始位(逻辑值0),字符本身由5-8位数据位组成,接着字符后面是一位校验位(也可以没有校验位),最后是一位或一位半或二位停止位,停止位后面是不定长的空闲位。停止位和空闲位都规定为高电平(逻辑值1),这样就保证起始位开始处一定有一个下跳沿。由此就可以标志一个字符传输的起始。而根据起始位和停止位也就很容易的实现了字符的界定和同步。
      如上图中所示,这种格式是靠起始位和停止位来实现字符的界定或同步的,故称为起止式协议。
      
    (1)起始位:发送数据时,先发持续一个bit时间的逻辑”0”信号,表示字符传输的开始,接收端可根据起始位使自己的接收时钟与发送方的数据同步。

    (2)数据位:起始位后是数据位,异步传送规定低位在前,高位在后,数据位的位数一般可以是5~8位。

    (3)奇偶校验位:奇偶位紧跟在数据最高位之后,占用一位(也可省去)。加上这一位后,使得逻辑“1”信号的位数得到偶校验或奇校验,以此来校验数据传送的正确性。
      如果是奇校验,需要保证传输的数据总共有奇数个逻辑高位;如果是偶校验,需要保证传输的数据总共有偶数个逻辑高位。举例来说,假设传输的数据位为01001100,如果是奇校验,则奇校验位为0(要确保总共有奇数个1),如果是偶校验,则偶校验位为1(要确保总共有偶数个1)。
      由此可见,奇偶校验位仅是对数据进行简单的置逻辑高位或逻辑低位,不会对数据进行实质的判断,这样做的好处是接收设备能够知道一个位的状态,有可能判断是否有噪声干扰了通信以及传输的数据是否同步。

    (4)停止位:数据发送完后,再发1位、1.5位、2位的高电平(逻辑”1”信号)代表停止位,表示一帧数据结束,同时为接收下一帧数据做准备。

    (5)空闲位:在没有数据发送时,即下一帧的起始位“0”到来之前,数据线保持默认的“1”状态,即由高电平来填充。

    异步通信字符帧格式总结如下表:

    逻辑信号数据位数
    起始位01位
    数据位0或15~8位
    校验位0或11位或无
    停止位11位,1.5位或2位
    空闲位1任意数量

    :位数的本质含义是信号持续的时间,故可有分数位,如停止位1.5位,1.5是它的长度,即停止位的电平保持1.5个单位时间长度。一个单位时间就是波特率的倒数,例如波特率为9600bps,则一个单位时间长为1/9600s,1.5个停止位,即停止位电平保持1.5/9600s。

    3 同步通信和异步通信比较

    (1)同步通信要求接收端时钟频率和发送端时钟频率一致;异步通信时不要求接收端时钟和发送端时钟同步。

    (2)同步通信数据传输是以字节块(多个字节)传输的;异步通信数据传输是以字符(一个字节)传输的。

    (3)同步通信传输效率高,但复杂、要求高,双方时钟的允许误差较小;异步通信传输效率低,但简单、要求低,双方时钟可允许一定误差。

    (4)同步通信的字节传输是没有间隔的发送端发送连续的比特流;异步通信字节传送的间隔是任意的,发送端发送完一个字节后,可经过任意长的时间间隔再发送下一个字节。

    同步通信和异步通信的差异总结如下表:

    同步通信异步通信
    传送单位信息帧(由若干字符组成的数据块)字符(由若干bit组成)
    单位格式同步字符+数据+校验字符CRC起始位+数据位+奇偶校验位+停止位
    传送间隔一个数据块(信息帧)内,字符与字符间无间隔相邻两字符之间隔任意长
    时钟信号时序要求高,使用同频同相的时钟线路时序要求较低,使用各自的时钟信号
    优点效率高简单,要求低
    缺点复杂,要求高效率低(传送一个字符,要增加约20%的附加信息位)
    展开全文
  • 基于简化计算机与外部串行设备或其他计算机之间串口通信软件开发流程的目的,采用了依据串口通信原理使用LABVIEW作为上位机程序开发平台的方法,运用图形化程序语言搭建上位机串口通信监控界面。通过由虚拟串口通信...
  • 本文介绍了一种用 C 语言实现 P C 机与单片机利用 R S 2 3 2 进行串行通信的方法, 并给出了一个 PC 机与单片机( 8051) 串行通信的 应 用 实 例 。 采 用 串 行 异 步 方 式 及 和 校验发送和接收数据, 上、 下位...
  • STM32F103C8T6串口通信

    2018-11-21 21:47:35
    STM32F103C8T6串口通信 USB转TTL的TX连接STM32的RX(PA10),USB转TTL的RX连接STM32的TX(PA9)
  • 异步串口通信VC源码、用vc++编程实现GPS数据的串口接收、用vc++编写的一个完整的 串口通信的例子、用VC6实现串行通信的三种方法(提供关键代码)、用VC和TC实现不同操作系统下的双机串口通信、用visual c++写的串口...
  • BUSY BIT 20H.0 FLAG BIT 20H.1 EVENFLAG BIT 20H.2 TXDATA EQU 21H RXDATA EQU 22H ORG 0000H LJMP START ORG 0003H ; 外部中断0 ORG 000BH ; T0中断 ORG 0013H
  • 超级终端为串口通信中用于测试串口的一个非常方便的工具,里面包含中英文两个版本。
  • 串口通信

    2016-12-03 16:11:49
    c语言开发的串口库,由于跨平台,封装性号,使用很方便
  • 最简洁的单片机串口通信程序,芯片STC15系列 一个同学写的,希望不算盗用版权
  • Linux串口通信编程大全,串行通信接口标准经过使用和发展,目前已经有几种。但都是在RS-232标准的基础上 经过改进而形成的。所以,以RS-232C为主来讨论。RS-323C 标准是美国EIA(电子工业联合 会)与BELL等公司一起...
  • VB串口通信第三节串行通信接口标准.pptx
  • TI MSP432学习之串口通信 四个串口,但是串口0好像出问题了。 为电赛准备的。

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 199,946
精华内容 79,978
关键字:

串行通信