ArmSoM Rockchip系列产品 通用教程 之 CAN 使用

news2024/12/21 14:56:27

CAN 使用

1. CAN 简介

CAN (controller Area Network):控制器局域网络总线,是一种有效支持分布式控制或实时控制的串行通信网络。

  • 目前世界上绝大多数汽车制造厂商都采用CAN总线来实现汽车内部控制系统之间的数据通信。

  • RK3568/RK3588的CAN驱动文件:drivers/net/can/rockchip/rockchip_canfd.c

  • 在ArmSoM-Sige7中,CAN集成在40PIN中,可供用户复用为CAN相关引脚。

2. 原理图

CAN在40PIN中的位置: CAN_TX对应40PIN中的第35编号,CAN_RX对应40PIN中的第12编号
在这里插入图片描述

3. 硬件连接

CAN模块之间接线:CAN_TX接CAN_TX,CAN_RX接CAN_RX。
在这里插入图片描述

4. 内核配置

  • rockchip_linux_defconfig配置:
CONFIG_CAN=y

CONFIG_CAN_DEV=y

CONFIG_CAN_ROCKCHIP=y

CONFIG_CANFD_ROCKCHIP=y
  • 内核配置:
cd kernel

make ARCH=arm64 menuconfig

make savedefconfig
  • 选择:Networking support —> CAN bus subsystem support ()—>CAN Device Drivers() —> Platform CAN drivers with Netlink support(*)

在这里插入图片描述

5. DTS 节点配置

5.1 主要参数:

  • interrupts = <GIC_SPI 1 IRQ_TYPE_LEVEL_HIGH>;
    转换完成,产生中断信号。

  • clock
    时钟属性,用于驱动开关clk,reset属性,用于每次复位总线。

  • pinctrl
    配置CAN相关的引脚信息,功能复用

5.2 芯片级公共配置

kernel-5.10/arch/arm64/boot/dts/rockchip/rk3588s.dtsi

can0: can@fea50000 {
	            compatible = "rockchip,can-2.0";
	            reg = <0x0 0xfea50000 0x0 0x1000>;
	            interrupts = <GIC_SPI 341 IRQ_TYPE_LEVEL_HIGH>;
	            clocks = <&cru CLK_CAN0>, <&cru PCLK_CAN0>;
	            clock-names = "baudclk", "apb_pclk";
	            resets = <&cru SRST_CAN0>, <&cru SRST_P_CAN0>;
	            reset-names = "can", "can-apb";
	            pinctrl-names = "default";
	            pinctrl-0 = <&can0m0_pins>;
	            tx-fifo-depth = <1>;
	            rx-fifo-depth = <6>;
	            status = "disabled";
	    };
	
can1: can@fea60000 {
	            compatible = "rockchip,can-2.0";
	            reg = <0x0 0xfea60000 0x0 0x1000>;
	            interrupts = <GIC_SPI 342 IRQ_TYPE_LEVEL_HIGH>;
	            clocks = <&cru CLK_CAN1>, <&cru PCLK_CAN1>;
	            clock-names = "baudclk", "apb_pclk";
	            resets = <&cru SRST_CAN1>, <&cru SRST_P_CAN1>;
	            reset-names = "can", "can-apb";
	            pinctrl-names = "default";
	            pinctrl-0 = <&can1m0_pins>;
	            tx-fifo-depth = <1>;
	            rx-fifo-depth = <6>;
	            status = "disabled";
	    };
	
can2: can@fea70000 {
	            compatible = "rockchip,can-2.0";
	            reg = <0x0 0xfea70000 0x0 0x1000>;
	            interrupts = <GIC_SPI 343 IRQ_TYPE_LEVEL_HIGH>;
	            clocks = <&cru CLK_CAN2>, <&cru PCLK_CAN2>;
	            clock-names = "baudclk", "apb_pclk";
	            resets = <&cru SRST_CAN2>, <&cru SRST_P_CAN2>;
	            reset-names = "can", "can-apb";
	            pinctrl-names = "default";
	            pinctrl-0 = <&can2m0_pins>;
	            tx-fifo-depth = <1>;
	            rx-fifo-depth = <6>;
	            status = "disabled";
	    };
  • compatible = “rockchip,can-1.0” ,rockchip,can-1.0用来匹配can控制器驱动。

  • compatible = “rockchip,can-2.0” ,rockchip,can-2.0用来匹配canfd控制器驱动。

  • assigned-clock-rates用来配置can的始终频率,如果CAN的比特率低于等于3M建议修改CAN时钟到100M,信号更稳定。高于3M比特率的,时钟设置200M就可以。

  • pinctrl配置:根据实际板卡连接情况配置can_h和can_l的iomux作为can功能使用。

5.3 板级配置

kernel-5.10/arch/arm64/boot/dts/rockchip/rk3588-armsom-w3.dts

/* can1 */
&can1 {
		status = "okay";
		assigned-clocks = <&cru CLK_CAN1>;
		assigned-clock-rates = <200000000>;
		pinctrl-names = "default";
		pinctrl-0 = <&can1m1_pins>;      #根据原理图进行配置
};
  • 由于系统根据上述dts节点创建的CAN设备只有一个,而第一个创建的设备为CAN0

6. CAN通信测试

  • 查询当前⽹络设备:
ifconfig -a
  • CAN启动
ip link set can0 down   //关闭CAN

ip link set can0 type can bitrate 500000   #设置⽐特率500KHz

ip -details -statistics link show can0    #打印can0信息
	
ip link set can0 up     //启动CAN
  • CAN发送
cansend can0 123#DEADBEEF            #发送(标准帧,数据帧,ID:123,date:DEADBEEF)

cansend can0 123#R                   #发送(标准帧,远程帧,ID:123)
	
cansend can0 00000123#12345678       #发送(扩展帧,数据帧,ID:00000123,date:DEADBEEF)

cansend can0 00000123#R              #发送(扩展帧,远程帧,ID:00000123)
  • CAN接收
candump can0       //candump can0
      #发送(扩展帧,数据帧,ID:00000123,date:DEADBEEF)

cansend can0 00000123#R              #发送(扩展帧,远程帧,ID:00000123)
  • CAN接收
candump can0       //candump can0

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1487589.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Effective objective-c-- 内存管理

Effective objective-c-- 内存管理 前言理解引用计数引用计数工作原理属性存取方法中的内存管理自动释放池保留环要点 以ARC简化引用计数使用ARC时必须遵循的方法和命名规则变量的内存管理语义ARC如何清理实例变量覆写内存管理方法要点 在dealloc方法中只释放引用并解除监听要点…

品牌与时间函数:在时间的长河中铸造品牌

品牌推广是一个与时间紧密相连的复杂过程。时间不仅是品牌推广的见证者&#xff0c;更是其推动者和塑造者。迅腾文化深刻理解品牌推广与时间之间的微妙关系&#xff0c;提出的“显”的原则&#xff0c;旨在通过巧妙的策略&#xff0c;使品牌在时间的流转中逐渐显现出其特别的魅…

Less is More: Generating Grounded Navigation Instructions from Landmarks

摘要 我们研究根据室内路线捕获的 360 图像自动生成导航指令。现有的生成器视觉基础较差&#xff0c;导致它们依赖语言先验并对物体产生幻觉。我们的 MARKY-MT5 系统通过关注视觉地标来解决这个问题&#xff1b;它包括第一级地标检测器和第二级生成器——多模式、多语言、多任…

基于springboot实现计算机类考研交流平台系统项目【项目源码+论文说明】

基于springboot实现计算机类考研交流平台系统演示 摘要 高校的大学生考研是继高校的高等教育更上一层的表现形式&#xff0c;教育的发展是我们社会的根本&#xff0c;那么信息技术的发展又是改变我们生活的重要因素&#xff0c;生活当中各种各样的场景都存在着信息技术的发展。…

U盘遇阻?解决“位置不可用”的困扰

U盘遇阻&#xff1a;当“位置不可用”成为难题 在数字化时代&#xff0c;U盘已成为我们存储和传输数据的重要工具。然而&#xff0c;当U盘突然提示“位置不可用”时&#xff0c;这无疑是一个令人头疼的问题。这不仅意味着我们无法访问存储在U盘中的文件&#xff0c;而且可能还…

PlantUML - 时序图

时序图主要内容 下面是一个简单的时序图&#xff0c;我们可以很容易并且美观的表达我们的交互流程&#xff0c;只需要在箭头的两边指定一个名字&#xff0c;加上描述即可&#xff1a; startuml bkloanapply -> bkloanapprove : request bkloanapprove --> bkloanapply :…

信息系统安全与对抗-作业2

目录 1、使用自己姓名拼音创建一个账户&#xff0c; 并使用命令和图形化查看 2、使用自己拼音打头字母创建一个隐藏账户 &#xff0c;并使用命令和图形化查看 3、使用命令启动 telnet 服务 4、使用命令打开防火墙 23 端口 5、熟悉LINUX系统&#xff0c;使用命令行创建用户…

排序(1)——直接插入排序+冒泡排序

目录 1 排序的概念及其应用 1.1 排序的概念 1.2 排序的应用 1.3 常见的排序算法 2 直接插入排序 2.1 基本思想 2.2 基本思路 2.3 代码实现 2.4 时间复杂度 3 冒泡排序&#xff08;回顾&#xff09; 3.1 思路分析 3.2 时间复杂度 4 比较 1 排序的概念及其应用 1.…

STP保护机制

1、BPDU保护: 为了保护边缘端口,因为当一个边缘端口收到一个BPDU时,会状变为非边缘端口,会参与生成树的计算,如果频繁的UP/DOWN,就使网络一直处于生成树的计算。 解决方法:在交换机的端口开启BPDU保护,当设置为BPDU保护的端口收到BPDU时,系统会将该端口变为down状态。…

网络安全: Kali Linux 使用 nmap 扫描目标主机

目录 一、实验 1.环境 2. Kali Linux (2024.1) 使用 namp 扫描目标主机 3.Kali Linux (2024.1)远程登录 Windows Server 4.Kali Linux (2024.1) 使用crunch字典工具 5.Kali Linux (2024.1)使用hydra密码工具 6.Kali Linux (2022.3) 通过SSH端口获取 Ubuntu 密码 二、问题…

蓝桥杯嵌入式2015年第六届省赛主观题解析

1 题目 2 解析 /* USER CODE BEGIN Header */ /********************************************************************************* file : main.c* brief : Main program body********************************************************************…

STM32(11)按键产生中断

1.初始化IO引脚&#xff0c;设置模式&#xff0c;速度等 2.设置AFIO&#xff08;配置EXTI的引脚映射&#xff09;&#xff0c;记得开启时钟 3.配置EXTI的通道&#xff08;EXTI0和EXTI1&#xff09; 4.配置NVIC 4.1 中断优先级分组 4.2 配置中断 5.编写中断响应函数 在中断向量…

Vue前端的工作需求

加油&#xff0c;新时代打工人&#xff01; 需求&#xff1a; 实现带树形结构的表格&#xff0c;父数据显示新增下级&#xff0c;和父子都显示编辑。 技术&#xff1a; Vue3 Element Plus <template><div><el-table:data"tableData"style"width…

《数字图像处理(MATLAB版)》相关算法代码及其分析(2)

目录 1 将8连通边界转换为4连通边界 1.1 移除对角线转折 1.2 插入额外像素 1.3 总结 2 将边界信息转换为二进制图像 2.1 函数定义 2.2 参数处理和验证 2.3 默认大小参数设置 2.4 根据参数调整边界位置 2.5 生成二进制图像 2.6 错误处理 2.7 总结 3 对二值图像边界…

【EAI 028】Video as the New Language for Real-World Decision Making

Paper Card 论文标题&#xff1a;Video as the New Language for Real-World Decision Making 论文作者&#xff1a;Sherry Yang, Jacob Walker, Jack Parker-Holder, Yilun Du, Jake Bruce, Andre Barreto, Pieter Abbeel, Dale Schuurmans 作者单位&#xff1a;Google DeepMi…

Sqli-labs靶场第16关详解[Sqli-labs-less-16]自动化注入-SQLmap工具注入

Sqli-labs-Less-16 #自动化注入-SQLmap工具注入 SQLmap用户手册&#xff1a;文档介绍 - sqlmap 用户手册 以非交互式模式运行 --batch 当你需要以批处理模式运行 sqlmap&#xff0c;避免任何用户干预 sqlmap 的运行&#xff0c;可以强制使用 --batch 这个开关。这样&#xff0…

如何使用恢复软件恢复删除的文件?回收站文件恢复攻略

随着计算机在日常生活中的普及&#xff0c;文件的管理和存储成为我们不可或缺的技能。在Windows操作系统中&#xff0c;回收站作为一个帮助我们管理文件删除的重要工具&#xff0c;在误删了一些重要文件之后&#xff0c;我们可能会因为找不到回收站中恢复的文件而感到困惑。本文…

动态规划DP之背包问题3---多重背包问题

目录 DP分析&#xff1a; 优化&#xff1a; 二进制优化 例题&#xff1a; 01背包是每个物品只有一个&#xff0c;完全背包问题是每个物品有无限个。 那么多重背包问题就是 每个物品有有限个。 有 N 种物品和一个容量是 V 的背包。 第 i 种物品最多有 si 件&#xff0c;每件体…

安卓手机安装termux、kali linux及基本配置

相关阅读&#xff1a;Termux 高级终端安装使用配置教程 | 国光 百度安全验证 该文安装的 kali liunx 应该是简易版的&#xff0c;没有相关工具 一、下载安装termux 建议通过 f-droid 应用市场下载链接termux&#xff0c;点击即直接下载。 二、配置termux 1.更换镜像源 te…

【大厂AI课学习笔记NO.61】环境部署的选择

主要是选择单机和分布式、生产和开发环境的规划等。 开发环境、测试环境、预发布环境和生产环境是软件开发和部署过程中常见的几个环境&#xff0c;它们各自的定义、区别、联系以及实现的关键技术如下&#xff1a; 1. 开发环境&#xff08;Development Environment&#xff09…