can通信和串口 通信区别(can通信和串口通信区别)

      最后更新:2023-03-19 04:45:40 手机定位技术交流文章

      stm32can通信和串口的区别

      一、简介 STM32F103ZET6有3个USART(通用同步和异步收发器) + 2个UART(通用异步收发器)分别是USART1,USART2,USART3和UART4,UART5二、USART和UART有什么区别呢?当进行异步通信时,这两者是没有区别的。区别在于USART比UART多了同步通信功能,同步通信需要STM32提供时钟来同步的,这个同步通信功能可以把USART当做SPI来用,比如用USART来驱动SPI设备。同步通信的连接示例图:其中RX,TX,SCLK引脚的定义,在数据手册上都可以找到:百为stm32开发板光盘芯片数据手册数据手册STM32F103xC STM32F103xD STM32F103xE.pdf这个区别在初学STM32的时候我们不需要去深入研究,只要知道USART有很多功能,除了全双工异步通信之外,还包括支持同步通信和单线半双工通信,支持LIN(局部互连网),智能卡协议和IrDA红外通信,以及调制解调器(CTS/RTS)等操作。三、数据通信格式我们用得最多的是全双工异步通信功能,下面我们来研究下怎么通过串口1(USART1)来收发信息,和printf功能的实现。通常串口通信的数据格式如下图:我们需要设置的数据有通信速率,数据字长,奇偶检验位,停止位。一个典型的设置是115200波特率,8位数据,无奇偶校验,1位停止位。这个设置在固件函数库里面,我们是通过设置USART_InitStructure结构体,然后调用USART_Init函数来实现的:USART_InitStructure.USART_BaudRate = 115200;//设置通信波特率为115200USART_InitStructure.USART_WordLength = USART_WordLength_8b; //设置通信数据格式为8位数据USART_InitStructure.USART_StopBits = USART_StopBits_1; //设置停止位为1位USART_InitStructure.USART_Parity = USART_Parity_No ; //设置为无奇偶校验USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;//设置为无硬件流控制,即无CTS/RTS控制USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx;//设置发送使能,接收使能USART_Init(USART1, &USART_InitStructure);//调用USART_Init,把上面的参数分别设置进USART的控制寄存器USART1->CR1,USART1->CR2,USART1->CR3USART_Cmd(USART1, ENABLE);//使能串口大家发现,在2.0固件库的USART例程里并没有看到USART1,因为是它用USARTx宏代替的,其中USARTx是platform_config.h里定义的,大概是这个样子:#ifdef USE_USART1#defineUSARTxUSART1#defineGPIOx GPIOA#defineRCC_APB2Periph_GPIOx RCC_APB2Periph_GPIOA#defineGPIO_RxPinGPIO_Pin_10#defineGPIO_TxPinGPIO_Pin_9#endif只有定义了USE_USART1,上面的#ifdef USE_USART1和#endif之间的内容才会被编译,所以在platform_config.h里也需要定义USE_USART1:#define USE_USART1这里GPIO_Pin_9是串口1的发送引脚,GPIO_Pin_10是串口1的接收引脚,也可以从百为STM32开发板的电路图上看出来:四、串口引脚配置上面USART_Init函数配置了USART1的数据通信格式,但串口能工作的前提是需要配置相应的TX,RX的引脚,这个是通过GPIO_Configuration函数来配置的:void GPIO_Configuration(void){GPIO_InitTypeDef GPIO_InitStructure;RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1, ENABLE);//打开USART1时钟RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE);//打开AFIO时钟/* 配置 USARTx_Tx 为复用推挽输出 */GPIO_InitStructure.GPIO_Pin = GPIO_TxPin;GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;GPIO_Init(GPIOx, &GPIO_InitStructure);/* 配置 USARTx_Rx 为输入悬空 */GPIO_InitStructure.GPIO_Pin = GPIO_RxPin;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;GPIO_Init(GPIOx, &GPIO_InitStructure);}五、收发数据配置好USART1使用的引脚,数据通信格式,下面就可以收发数据了,USART_GetFlagStatus函数可以读取收发状态等,读取状态标志可以是以下几个:发送数据示例:USART_SendData(USART1, 'a');//发送一个字符a接收数据示例:u16 RxData;RxData = USART_ReceiveData(USART1);//从USART1接收数据到RxData变量下面是串口通信printf程序里的主要功能,上电打印一串信息,把接收到的数据回显到PC上:/* 用printf打印一串信息到PC的超级终端或串口调试软件上 */printf("nrUSART Printf Example: retarget the C library printf function to the USARTnr");while (1){if(USART_GetFlagStatus(USARTx,USART_FLAG_RXNE)==SET)//判断是否有数据要接收{i = USART_ReceiveData(USARTx);//接收数据printf("%cnr",i&0xff);//回显到PC的超级终端或串口调试软件上}}六、printf的实现上面的printf是怎么实现的呢,这个是C标准库里定义的函数,我们是怎样把它的输出重定向到串口的呢?我们知道printf是调用fputc函数来打印的,所以我们只要把fputc函数重定义就可以了:#define PUTCHAR_PROTOTYPE int fputc(int ch, FILE *f)PUTCHAR_PROTOTYPE{/* 调用USARTx发送一个字符*/USART_SendData(USARTx, (u8) ch);/* 等待发送完成 */while(USART_GetFlagStatus(USARTx, USART_FLAG_TXE) == RESET){}return ch;}另外还要加上头文件#include "stdio.h" 还要注意的是,在工程里要勾上USE MicroLIB
      关注这个问题
      stm32can通信和串口的区别

      为什么工程机械喜欢使用CAN通信,为什么不使用串口进行通信呢?

      can通讯稳定,灵活,准确率高
      相比串口通信,can通信误码率低,传输速度快,挂点多!
      为什么工程机械喜欢使用CAN通信,为什么不使用串口进行通信呢?

      CAN接口是什么口?普通计算机上面带这个口吗?它是串口吗?是什么样子的呢?

      CAN是一种工业现场总线的名称。一般普通计算机上没有这个接口。它是串行通信方式,但不是一般说的串口。接口外观可以是15针D型口,也可以RJ45接口,看用在什么场合了。CAN的特点:1、网络各节点之间的数据通信实时性强:CAN控制器工作于多种方式,网络中的各节点都可根据总线访问优先权采用无损结构的逐位仲裁的方式竞争向总线发送数据。且CAN协议废除了站地址编码,而代之以对通信数据进行编码,这可使不同的节点同时接收到相同的数据,这些特点使得CAN总线构成的网络各节点之间的数据通信实时性强,并且容易构成冗余结构,提高系统的可靠性和系统的灵活性。2、开发周期短:CAN节点在错误严重的情况下具有自动关闭输出功能,以使总线上其他节点的操作不受影响,从而保证不会出现像在网络中,因个别节点出现问题,使得总线处于“死锁”状态。而且,CAN具有的完善的通信协议可由CAN控制器芯片及其接口芯片来实现,从而大大降低系统开发难度,缩短了开发周期,这些是仅有电气协议的RS-485所无法比拟的。3、已形成国际标准的现场总线:与其它现场总线比较而言,CAN总线是具有通信速率高、容易实现、且性价比高等诸多特点的一种已形成国际标准的现场总线。这些也是CAN总线应用于众多领域,具有强劲的市场竞争力的重要原因。扩展资料:与一般的通信总线相比,CAN总线的数据通信具有突出的可靠性、实时性和灵活性。它在汽车领域上的应用是最广泛的,世界上一些著名的汽车制造厂商都采用了CAN总线来实现汽车内部控制系统与各检测和执行机构间的数据通信。同时,由于CAN总线本身的特点,其应用范围已不再局限于汽车行业,而向自动控制、航空航天、航海、过程工业、机械工业、纺织机械、农用机械、机器人、数控机床、医疗器械及传感器等领域发展。CAN已经形成国际标准,并已被公认为几种最有前途的现场总线之一。参考资料:百度百科-CAN总线
      CAN是一种工业现场总线的名称。一般计算机上没有这个接口,是串行通信方式,但不是一般说的串口。接口外观可以是15针D型口,也可以RJ45接口,看用在什么场合了。
      CAN接口是什么口?普通计算机上面带这个口吗?它是串口吗?是什么样子的呢?

      “can通讯”、“485”和“232”通讯的区别。

      RS232支持15米以内的通信。RS485 和RS232最主要的区别是电平不同,需要经过RS232/RS485转换器转换。RS485最大无中继传输距离为1200米,超过可加中继器(最多8只),传输距离接近10Km。RS485是一主多从结构,因而传输速率较高,最高可达12Mbps。而CAN是多主结构,因而容错性较好,但速率较逊色。尽管CAN和RS485都采用特性阻抗为120Ω的双绞屏蔽总线电缆,但CAN电流也较大,为非本安电路。
      给你做了个对比表格可以看一下
      “can通讯”、“485”和“232”通讯的区别。

      总线通信与串口通信有什么区别

      1、性质总线通信:是计算机各种功能部件之间传送信息的公共通信干线,它是由导线组成的传输线束, 按照计算机所传输的信息种类,计算机的总线可以划分为数据总线、地址总线和控制总线,分别用来传输数据、数据地址和控制信号。串口通信:是一种可以将接受来自CPU的并行数据字符转换为连续的串行数据流发送出去,同时可将接受的串行数据流转换为并行的数据字符供给CPU的器件。2、特点总线通信:面向存储器的双总线结构信息传送效率较高,这是它的主要优点。但CPU与I/O接口都要访问存储器时,仍会产生冲突。串口通信:使用的数据线少,在远距离通信中可以节约通信成本,但其传输速度比并行传输低。3、原理总线通信:如果说主板是一座城市,那么总线就像是城市里的公共汽车,能按照固定行车路线,传输来回不停运作的比特,这些线路在同一时间内都仅能负责传输一个比特。串口通信:串口按位发送和接收字节。尽管比按字节的并行通信慢,但是串口可以在使用一根线发送数据的同时用另一根线接收数据。它很简单并且能够实现远距离通信。参考资料:百度百科-串口通信参考资料:百度百科-总线
      1、性质总线通信:是计算机各种功能部件之间传送信息的公共通信干线,它是由导线组成的传输线束, 按照计算机所传输的信息种类,计算机的总线可以划分为数据总线、地址总线和控制总线,分别用来传输数据、数据地址和控制信号。串口通信:是一种可以将接受来自CPU的并行数据字符转换为连续的串行数据流发送出去,同时可将接受的串行数据流转换为并行的数据字符供给CPU的器件。2、特点总线通信:面向存储器的双总线结构信息传送效率较高,这是它的主要优点。但CPU与I/O接口都要访问存储器时,仍会产生冲突。串口通信:使用的数据线少,在远距离通信中可以节约通信成本,但其传输速度比并行传输低。3、原理总线通信:如果说主板是一座城市,那么总线就像是城市里的公共汽车,能按照固定行车路线,传输来回不停运作的比特,这些线路在同一时间内都仅能负责传输一个比特。串口通信:串口按位发送和接收字节。尽管比按字节的并行通信慢,但是串口可以在使用一根线发送数据的同时用另一根线接收数据。它很简单并且能够实现远距离通信。参考资料来源:百度百科-总线参考资料来源:百度百科-串口通信
      modbus,profibus是以rs485为基础的通讯协议,devicenet以can为基础的通讯协议; PPI MPI Profibus 通信协议详解2011-03-04 19:23:42|分类: 工控PLC |标签:无 |字号大中小 订阅1、 MPI是Multi-Point Interface,适用于PLC 200/300/400、操作面板TP/OP及上位机MPI/PROFIBUS通信卡,MPI网络的通信速率为网络才支持12Mbit/s的通信速率。MPI网络最多可以连接32个接节点,最大通信距离为50m,但是可以通过中继器来扩展长度。PPI协议是专门为S7-200开发的通信协议。S7-200 CPU的通信口(Port0、Port1)支持PPI通信协议,S7-200的一些通信模块也支持PPI协议。Micro/WIN与CPU进行编程通信也通过PPI协议。PPI是一种主从协议,主站、从站在一个令牌网。在一个PPI网络中,与一个从站通信的主站的个数并没有限制,但是一个网络中主站的个数不能超过32个。主站既可以读写从站的数据,也可以读写主站的数据。也就是说,S7-200作为PPI主站时,仍然可以作为从站响应其他主站的数据请求。MPI是主站之间的通信;PPI可以是多台主站与从站之间通信。2、MPI协议:西门子内部协议,不公开;PROFIBUS-DP协议:标准协议,公开。3、MODBUS 是MODICON公司最先倡导的一种软的通讯规约,经过大多数公司的实际应用,逐渐被认可,成为一种标准的通讯规约,只要按照这种规约进行数据通讯或传输,不同的系统就可以通讯。目前,在RS232/RS485通讯过程中,更是广泛采用这种规约。常用的MODBUS 通讯规约有两种,一种是MODBUS ASCII,一种是MODBUS RTU。一般来说,通讯数据量少而且主要是文本的通讯则采用MODBUS ASCII规约,通讯数据数据量大而且是二进制数值时,多采用MODBUS RTU规约。在实际的应用过程中,为了解决某一个特殊问题,人们喜欢自己修改MODBUS规约来满足自己的需要(事实上,人们经常使用自己定义的规约来通讯,这样能解决问题,但不太规范)。更为普通的用法是,少量修改规约,但将规约格式附在软件说明书一起,或直接放在帮助中,这样就方便了用户的通讯。3. PPI,MPI和PROFIBUS都是基于OSI(开放系统互联)的七层网络结构模型,符合欧洲标准EN50170所定义的PROFIBUS标准,基于令牌的的网络通信协议。这些协议是非同步的(串行的)基于字符的通信协议,字符格式包括一个起始位、8个数据位、一个偶校验位和一个停止位。其通信帧包括特定的起始和结束字符、源和目的站的地址、帧长度和数据校验和。在波特率一致、各站地址不同的情况下,PPI,MPI和PROFIBUS可以同时在一个网络上运行,并且互不干扰。这就是说如果一个网络上有S7-300、S7-200,S7-300之间可以通过MPI或PROFIBUS通信,而在同时在同一个网络上的TP170 如果在一个通信网络上存在其他主站(如TD 200,或者上位计算机等),同时需要进行Micro/WIN的编程、监控,这就是多主站网络编程。使用西门子的下列设备可以实现Micro/WIN的多主站编程:micro触摸屏可以与一个S7-200 CPU通信。使用智能多主站电缆和Micro/WIN V3.2 SP4以上版本。新电缆可以在网络上传递令牌,因而自动支持多主站网络编程。如果使用CP卡,如CP5511/CP5512(笔记本电脑PCMCIA卡)、CP5611(台式机PCI卡),能够支持多主站编程通信。如果通过CP卡编程时,选择了MPI协议,注意MPI主站不能访问作为PPI主站的CPU。如果有第三方的产品要连接到多主站网络上,用户需要咨询第三方产品提供商以了解是否支持西门子的S7-200多主站网络。要进行多主站编程,不但编程计算机要支持,网上的其他设备也要有多主站通信能力。早期的多主站连接依赖于计算机硬件和Windows操作系统。随着计算机技术的发展,多数情况下已经不能做到多主站编程通信。建议用户使用西门子的多主站编程电缆或者CP卡配合Micro/WIN实现多主站编程通信。4 .MPI (Multipoint interface)是SIMATIC S7多点通信的接口,是一种适用于少数站点间通信的网络,多用于连接上位机和少量PLC之间近距离通信。通过PROFIBUS电缆和接头,将控制器S7-300或S7-400的CPU自带的MPI编程口及S7-200CPU 自带的PPI通信口相互连接,以及与上位机网卡的编程口(MPI/DP 口)通过PROFIBUS或MPI电缆连接即可实现。网络中当然也可以不包括PC机而只包括PLC。MPI的通信速率为19.2K~12Mbit/s ,但直接连接S7-200CPU通信口的MPI网,其最高速率通常为187.5Kbit/s (受S7-200CPU最高通信速率的限制)。在MPI网络上最多可以有32个站,一个网段的最长通信距离为50米(通信波特率为187.5Kbit/s时),更长的通信距离可以通过RS-485中继器扩展。MPI允许主-主通信和主-从通信,每个S7-200CPU通信口的连接数为4个。MPI协议不能与一个作为PPI主站的S7-200CPU通信,即S7-300或S7-400与S7-200通信时必须保证这个S7-200 CPU不能再作PPI主站,Micro/WIN也不能通过MPI协议访问作为PPI主站的S7-200CPU。S7-200CPU只能做MPI从站,即S7-200CPU之间不能通过MPI网络互相通信,只能通过PPI方式互相通信。STEP 7-Micro/WIN可以与S7-200CPU建立MPI主-从连接。硬件使用CP5611卡加上PROFIBUS或MPI电缆,S7-200 CPU通信口上要使用带编程口的网络连接器。S注:CP5613不能通过MPI方式与S7-200 CPU通信口进行编程通信。7-200CPU的通信口最低通信速率可设为19.2K,最高187.5K。S7-300和S7-400 CPU可以作为MPI主站用XGET(SFC67)和XPUT(SFC68)指令读取S7-200数据,通信数据包最大为64个字节。S7200 CPU中不需要编写任何与通信有关的程序,只需要将要交换的数据整理到一个连续的V 存储区当中即可。5. S7-200 通过以下方式支持 Modbus 通信协议:S7-200 CPU上的通信口Port0可以支持Modbus RTU协议,成为Modbus RTU从站。此功能是通过S7-200的自由口通信模式实现,因此可以通过无线数据电台等慢速通信设备传输。如果想在S7-200 CPU之间、或者其他支持Modbus RTU的设备使用Modbus RTU协议通信,需要由有S7-200 CPU做Modbus主站。S7-200 CPU做主站必须由用户自己用自由口模式,按相关协议编程。要实现Modbus RTU通信,需要STEP 7-Micro/WIN32 V3.2以上版本的编程软件,而且须安装STEP 7-Micro/WIN32 V3.2 Instruction Library(指令库)。Modbus RTU功能是通过指令库中预先编好的程序功能块实现的。 Modbus RTU从站指令库只支持CPU上的通信0口(Port0)。1. Modbus RTU 主站指令库的功能是通过在用户程序中调用预先编好的程序功能块实现的,该库对 Port 0 和 Port 1 有效。该指令库将设置通信口工作在自由口模式下。2. Modbus RTU 主站指令库使用了一些用户中断功能,编其他程序时不能在用户程序中禁止中断。 3. Modbus RTU 主站库对CPU的版本有要求。CPU 的版本必须为 2.00 或者 2.01(即订货号为 6ES721*-***23-0BA*),1.22版本之前(包括1.22版本)的 S7-200 CPU 不支持。
      怎么其他答案全是抄百科啊。。。哎大家要支持原创回答啊!!!举个例子吧:串口只是MCU常用的一种1对1板端接口,就像SPI,IIC。非联网通讯的,属于数据原始接口。而常用的RS485,现场布线更方便的POWERBUS这种现场总线,信号源都取自UART串口。TTL接口电平常见的有3.3V和5V的。通过在0和TTL电平之间摆动,来传输数据。需要通讯双方“约定”好速率。也就是说,通过TTL电平传输的UART接口是一种不传输时钟的"异步通讯"方式。一般通讯格式以一个字节为最小单位,有8位,和9位的常见格式。第九位有的人用于奇偶效验用。如下图:而RS485接口,简单说就是把TTL的“0-3.3V/5V之间摆动”的信号,转换为“5V压差颠倒反转的AB线信号”,并且扩流驱动电缆电容。简单说就是这样。所以可以理解为,RS485是以TTL数据源的总线驱动芯片。
      总线通信与串口通信有什么区别

      本文由 在线网速测试 整理编辑,转载请注明出处,原文链接:https://www.wangsu123.cn/news/58373.html

          热门文章

          文章分类