首页 > 其他分享 >基于ESP32的CAN总线通讯

基于ESP32的CAN总线通讯

时间:2024-01-18 15:33:06浏览次数:35  
标签:控制器 通讯 ESP32 总线 TWAI 串行 报文

CAN总线的概述:
CAN 是 Controller Area Network 的缩写(以下称为 CAN),是 ISO国际标准化的串行通信协议。在当今汽车总线中CAN总线是应用最广泛的通信方式。此外CAN由于其高可靠性和高性能使其在工业自动化,船舶,医疗等领域也得到了广泛应用。

CAN总线的工作原理:
1、CAN总线使用串行数据传输方式,可以1Mb/s的速率在40m的双绞线上运行,也可以使用光缆连接,而且在这种总线上总线协议支持多主控制器。CAN与I2C总线的许多细节很类似,但也有一些明显的区别。
2、当CAN总线上的一个节点(站)发送数据时,它以报文形式广播给网络中所有节点。对每个节点来说,所有数据均进行了接收。每组报文开头的11位字符为标识符,定义了报文的优先级,这种报文格式称为面向内容的编址方案。在同一系统中标识符是唯一的,不可能有两个站发送具有相同标识符的报文。当几个站同时竞争总线读取时,这种配置十分重要。
3、当一个站要向其它站发送数据时,该站的CPU将要发送的数据和自己的标识符传送给本站的CAN芯片,并处于准备状态;当它收到总线分配时,转为发送报文状态。CAN芯片将数据根据协议组织成一定的报文格式发出,这时网上的其它站处于接收状态。每个处于接收状态的站对接收到的报文进行检测,判断这些报文是否是发给自己的,以确定是否接收它。
4、由于CAN总线是一种面向内容的编址方案,因此很容易建立高水准的控制系统并灵活地进行配置。所以在CAN总线中加进一些新站非常便利且无需在硬件或软件上进行修改。当所提供的新站是纯数据接收设备时,数据传输协议不要求独立的部分有物理目的地址。它允许分布过程同步化,即总线上控制器需要测量数据时,可由网上获得,而无须每个控制器都有自己独立的传感器。

CAN总线的优点:
1、高性能:具有实时性强、传输距离较远、抗电磁干扰能力强、成本低等优点;
2、抗干扰:采用双线串行通信方式,纠错能力强,可在高噪声多干扰环境中工作;
3、高集成:具有优先权和仲裁功能,可实现多个控制模块通过CAN 控制器集合到CAN-bus 上,从而形成多主机局部网络;
4、可控性:可根据报文的ID决定接收或屏蔽该报文;
5、验证与纠错:可靠的错误处理和检错机制;
6、修复能力:发送的信息遭到破坏后,可自动重发;
7、智能化:节点在错误严重的情况下具有自动退出总线的功能;
8、安全性:报文不包含源地址或目标地址,仅用标志符来指示功能信息、优先级信息。

CAN总线缺点:
1、可能出现的数据不一致性;
2、可能出现的不可预估错误;
3、信道堵塞情况。

CAN总线的应用:
1.楼宇自动化,在楼宇自动化中,现代的建筑安装系统(通风、照明、安全、监控)越来越多地建立在CAN总线系统上,通过其现实开关、按钮、传感器、照明设备、其他执行器和多控制系统之间的数据交换,实现建筑中各操作单元之间的协作,并对各单元不断变化的状态实时控制。
2.安全监控,在当前的各种监控系统中,普遍存在可靠性、实时性不高,分站缺乏统一规范等缺点,不能够很好地满足实时监控的要求。CAN总线由于具有高数据传输率、完善的规范和协议、高实时性、安全性、可靠性等,可很好解决上述各种问题。多应用如:水电站高边坡监控系统、大型远程高边坡监控网络、辊道陶瓷窖等监控系统。
3.汽车工业,在汽车工业领域,CAN被设计作为汽车环境中的微控制器通信,在车载各电子控制装置ECU之间进行信息交换,并形成汽车电子控制网络。如:汽车动力系统、制动控制系统、变速箱控制器、仪表、车载网络、电子主干系统中,均嵌入CAN控制装置。其应用使汽车的安全性、舒适性、动力性等性能更智能现代化。现在CAN的高性能和可靠性已被认同,并被广泛地应用于工业自动化、船舶、医疗设备、工业设备等方面,CAN总线在当今自动化领域成长迅速、被誉为自动化领域的计算机局域网络。它实现了分布式控制系统对象各节点之间进行实时、可靠的数据通信。

ESP32的CAN通信:
参考网页:https://lingshunlab.com/book/esp32/esp32-use-canbus-tja1051-esp32-arduino-can
TWAI 简介:
1、在ESP32中的外设有TWAI,是可兼容CANBUS控制器。
2、TWAI 是一种适用于汽车和工业应用的实时串行通信协议。它与ISO11898-1经典帧兼容,因此可以支持标准帧格式(11位ID)和扩展帧格式(29位ID)。
3、ESP32 包含 1 个 TWAI 控制器,可配置为通过外部收发器在 TWAI 总线上进行通信。
4、TWAI 是一种多主、多播、异步、串行通信协议。
5、TWAI 还支持错误检测和信令以及内置消息优先级。具体请查看以下官方文档:

标签:控制器,通讯,ESP32,总线,TWAI,串行,报文
From: https://www.cnblogs.com/asukana/p/17972596

相关文章

  • 03 输入输出系统和总线结构
    输入输出技术计算机系统中存在多种内存与接口地址(输入输出)的编制方法,常见的是两种:1、内存与接口地址独立编制方法内存地址和接口地址是完全独立的两个地址空间。优点:编程序和读程序很容易使用和辨认。缺点:用于接口的指令(需要独立设计)太少、功能太弱。2、内存与接口地址统......
  • 基于Minifilter的文件过滤驱动以及与应用层通讯
    前一段时间在做一个文件过滤系统,为了配合公司的产品使用,希望对指定目录禁止访问。一开始使用的是sfilter的框架,很多事情需要自己做,创建过滤驱动的控制设备,创建符号链接,设置IRP例程,设置FASTI/O例程,用这个框架做了一半,与应用层通讯比较麻烦,就又去学习了Minifilter框架,这个框架就非......
  • 即时通讯技术文集(第32期):IM开发综合技术合集(Part5) [共12篇]
    为了更好地分类阅读52im.net总计1000多篇精编文章,我将在每周三推送新的一期技术文集,本次是第32 期。[- 1 -] IM开发干货分享:如何优雅的实现大量离线消息的可靠投递[链接] http://www.52im.net/thread-3069-1-1.html[摘要] 本文作者将以自已IM开发过程中的真实总结,分......
  • C#串口通讯实战:基础功能及高效数据传输
     概述:C#串口通讯示例展示了基本功能,包括打开/关闭串口、设置属性、发送和接收数据。通过SerialPort类实现,可根据需求扩展更复杂的串口通讯应用。最近有项目应用到串口通讯,网上找到一个C#写的调试工具,如下图: 需要的文末可下载。下面我再讲一下串口通讯的基本应用:在C#中......
  • 电商通讯服务
    跨境通讯做跨境通讯的企业一般是可以提供通话话机和呼叫中心软件服务,不仅能接听还能外呼,同时我们提供的服务呼出和接听都为国际当地的号码。通过建立私有网络和全球分布的服务器节点,解决企业原有线路通话质量差、不稳定的问题,提供高质量、安全可靠的语音通信服务,帮助企业在全球范......
  • Springboot3+Vue3在进行WebSocket通讯时出现No mapping for GET或者是404
    参考:在SpringBoot中整合、使用WebSocket-spring中文网(springdoc.cn)===============================原代码(此时前端访问后端,后端会出现:NomappingforGET/wspath)前端相关代码:letsocket:WebSocket|null=nullconstsocketURL=`ws://127.0.0.1:8084/w......
  • esp32 340
     ......
  • ESP32 Arduino开发 网络连接
    ESP32Arduino开发网络连接目录ESP32Arduino开发网络连接1.编写相关程序1.1.引入头文件1.2.调用WiFi连接函数1.3.检测网络连接状态1.4.连接超时处理2.STA模式与AP模式1.编写相关程序1.1.引入头文件WiFi.h并不是第三方的库,所以不需要先加载库#include<WiFi.h>1.......
  • 企业如何选择适合自己的即时通讯软件?先了解这3种部署模式
    当今信息化时代,即时通讯软件已经成为企业日常沟通的不可或缺的工具,而如何选择适合自己的即时通讯软件也成为了企业面临的重要问题。下面我将从部署方式出发,深入分析即时通讯软件的部署方式以及优劣势,帮助企业更好地选择适合自己的即时通讯软件。一、Saas部署模式SaaS部署模式是指基......
  • C#实现串口通讯的方法
    帖子只用于记录本人的学习记录,算是给未来的自己出一份傻瓜式教学。 在C#语言上,一般上位机是由Winform开发,也有WPF,但是我不会WPF上位机无非就是发送数据与接收数据,可以使用C#的SerialPort方法winform自带SerialPort控件,可以将此控件直接拖到页面上,然后实例化该控件,也可以直接实例化......