匿名
未登录
登录
百问网嵌入式Linux wiki
搜索
查看“CAN overview”的源代码
来自百问网嵌入式Linux wiki
名字空间
页面
讨论
更多
更多
页面选项
Read
查看源代码
历史
←
CAN overview
因为以下原因,您没有权限编辑本页:
您所请求的操作仅限于该用户组的用户使用:
用户
您可以查看与复制此页面的源代码。
本文提供有关 Linux<sup>®</sup> 控制器局域网(CAN)框架的信息。 它说明了如何激活CAN接口以及基于示例的使用方法。 == Framework purpose == '''Controller Area Network'''(CAN)是一种多主机串行总线标准,它连接至少两个节点。 它是一种基于消息的协议,最初是为车载通信而设计的,其主要优点是显着减少了接线并防止了消息冲突。 为了获得更好的实时性能,具有灵活数据速率(CAN FD)的CAN<ref>[https://www.can-cia.org/can-knowledge/can/can-fd/ CAN FD - The basic idea], from the CAN in Automation group (CiA)</ref> 用作经典CAN协议的扩展<ref>[https://www.can-cia.org/can-knowledge/can/can-implementations/ CAN protocol implementations], from the CAN in Automation group (CiA)</ref>. 它允许的数据速率高于1 MBit/s有效载荷则超过每帧8个字节(最多64个数据字节)。 '''SocketCAN''' <ref name=SocketCAN>{{CodeSource | Linux kernel | Documentation/networking/can.rst | Kernel SocketCAN documentation}}, Linux Foundation</ref> 是用于Linux内核的统一CAN框架。 它实现了一个名为'''PF_CAN'''<ref name=PF_CAN>{{CodeSource | Linux kernel | net/can/af_can.c | net/can/af_can.c}}, Protocol family CAN core module</ref> 并允许应用程序通过具有CAN特定套接字选项的套接字API接收和传输CAN消息。 您可以在汽车行业找到CAN的许多应用。在车辆中,它允许电子控制单元和设备在没有主机的情况下在应用程序中相互通信。例如,高速CAN总线专用于安全设备,例如紧急制动系统或安全气囊。另一种低速CAN总线专用于舒适设备,例如室内照明或座椅控制。 本文介绍了CAN框架的主要组件和API,并提供了CAN使用示例。 ==System overview== [[File:CAN overview V1.0.png|thumb|link=|center|766px|alt=Alternate text|CAN Overview]] ===Component description=== ''从用户空间到硬件'' *'''应用''' (用户空间) 读取/写入[[CAN overview#API description | SocketCAN interface]],用于与CAN网络上连接的外部设备(例如can-utils)进行通信。 *'''CAN 工具''' (用户空间) 一组实用程序,用于配置和启用SocketCAN接口(例如iproute2)。 *'''SocketCAN''' (内核空间) 具有特定CAN选项的套接字接口,该选项建立在Linux网络层上。 *'''Linux套接字层和CAN协议(PF_CAN)''' (内核空间) 协议系列PF_CAN<ref name=PF_CAN/>,为传输协议模块的注册提供了API,并提供了在总线上启用不同CAN协议的结构。 *'''Linux网络核心''' (内核空间) 内核网络层,使消息适应所使用的传输协议。 Linux内核的网络子系统设计为完全独立于协议。 *'''M_CAN Driver''' (内核空间) 驱动程序已实现为Bosch M_CAN控制器的网络接口<ref name=M_CAN>{{CodeSource | Linux kernel | drivers/net/can/m_can}}, Driver for Bosch M_CAN controller</ref>. *'''CAN''' (硬件) 这是CAN Core IP。 *'''CAN Transceiver''' (硬件) CAN协议控制器和CAN总线的物理线路之间的接口。 ===API description=== SocketCAN接口API描述可以在内核文档中找到 <ref name=SocketCAN/>. ==Configuration == ===Kernel configuration=== 使用Linux [[Menuconfig or how to configure kernel | Menuconfig ]]工具在内核配置中激活CAN驱动程序。 要编译M_CAN驱动程序,请选择 "Bosch M_CAN 设备": <pre> [*] Networking support ---> <*> CAN bus subsystem support ---> CAN Device Drivers ---> <*> Bosch M_CAN devices </pre> 默认情况下,ST交付中已激活M_CAN驱动程序。 ===Device tree configuration=== CAN通用DT绑定: * M_CAN设备树绑定<ref>{{CodeSource | Linux kernel | Documentation/devicetree/bindings/net/can/m_can.txt | Documentation/devicetree/bindings/net/can/m_can.txt}} M_CAN device tree bindings</ref> 描述所有必需和可选的属性。 STM32内部外设的详细DT配置: * [[FDCAN device tree configuration]] == How to use the framework== 必须通过netlink接口配置CAN设备。以下文章为用户空间示例提供了有关如何设置SockeCAN接口(以及配置位定时参数等设置)以及如何在CAN总线上发送/接收数据的示例。 === How to set up a SocketCAN interface === [[How to set up a SocketCAN interface]] === How to send/receive CAN data === [[How to send or receive CAN data]] ==How to trace and debug the framework== === How to trace === CAN框架,特别是M_CAN驱动程序,可以打印出信息和错误消息。您可以使用dmesg命令显示它们: {{Board$}} '''dmesg | grep m_can''' [ 1.327824] m_can 4400e000.can: m_can device registered (irq=30, version=32) [ 25.560759] m_can 4400e000.can can0: bitrate error 0.3% [ 25.564630] m_can 4400e000.can can0: bitrate error 1.6% === How to monitor CAN bus === 您可以使用CAN FD适配器 '''PCAN-USB Pro FD'''<ref>[http://www.peak-system.com/PCAN-USB-Pro-FD.366.0.html?&L=1 PCAN-USB Pro FD description], by PEAK System</ref>通过USB将计算机连接到CAN网络。该工具随附的PCAN-View软件是一个监视程序,可以监视CAN网络上的数据流并检测帧错误。 ==Source code location== 源文件位于Linux内核中。 *'''PF_CAN''': af_can.c<ref name=PF_CAN/> *'''M_CAN driver''': m_can.c<ref name=M_CAN/> ==To go further== CAN位时序计算在确保CAN网络性能方面起着重要作用。为避免传输错误,必须正确配置位时序。 有关CAN位时序的更多信息 * ''简化了CAN位时序参数的计算''<ref>[https://www.can-cia.org/fileadmin/resources/documents/proceedings/2012_taralkar.pdf Computation of CAN Bit Timing Parameters Simplified], from the CAN in Automation group (CiA)</ref>, 来自Automation group的CNA (CiA) * ''CAN位时序的配置''<ref>[https://www.mikrocontroller.net/attachment/114193/BOSCH_The_config_of_CAN_Bit_Timing_L-1.pdf The Configuration of the CAN Bit Timing], from Bosch documentation</ref>, 来自 Bosch 文档。 ==References== <references />
该页面使用的模板:
模板:Board$
(
查看源代码
)
模板:CodeSource
(
查看源代码
)
返回至
CAN overview
。
导航
导航
WIKI首页
官方店铺
资料下载
交流社区
所有页面
所有产品
MPU-Linux开发板
MCU-单片机开发板
Linux开发系列视频
单片机开发系列视频
所有模块配件
Wiki工具
Wiki工具
特殊页面
页面工具
页面工具
用户页面工具
更多
链入页面
相关更改
页面信息
页面日志