海思3559平台MCP2515 SPI转CAN驱动配置

2024-02-01 01:58

本文主要是介绍海思3559平台MCP2515 SPI转CAN驱动配置,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1. 转载前言

由于海思平台需要接入CAN设备,而3559平台的CAN接口没有驱动支持; 但是标准Linux是支持mcp2515驱动,作为CAN设备接入的

2. 需要修改内容

  • SPI pinmux复用配置
  • 内核开启mcp2515驱动
  • dts配置

3. SPI pinmux 复用配置

由于mcp2515驱动加载时,是需要通过spi接口读取硬件状态的,所以必须提前配置。 这里有两种方法: 方法一:uboot里面配置 【这里我采用这种方法,方法如下】 方法二: mcp2515驱动probe函数里面添加pinmux复用配置

(1)修改uboot 参数表

(2)制作reg_info.bin

有两种方法,一种使用表格直接生成,另一种使用提供工具生成; 由于我这边WPS缺少库,所以只能使用工具生成,如下:

osdrv/tools/pc/uboot_tools目录下
解压
tar -zxvf hiregbin-v5.0.1.tgz
查看readme修改工具执行权限
chmod 777 hiregbin./hiregbin ./Hi3559AV100-DMEBLITE_8L_T-LPDDR4_2664M_8GB_32bitx2-A73_1608M.xlsm ./reg_info.bin
生成reg_info.bin

(3)生成uboot

将临时文件 reg_info.bin 拷贝到 SDK 中的“osdrv/opensource/uboot/u-boot-2016.11/”目
录下, 并命名为: .reg
make CROSS_COMPILE=aarch64-himix100-linux- u-boot-z.bin

烧写uboot即可

4. 内核开启mcp2515驱动

进入menuconfig make ARCH=arm64 menuconfig 步骤如下:

5. 内核设备树dts配置

修改路径: arch/arm64/boot/dts/hisilicon 硬件连接: MCP2515是挂在SPI1的片选0上的

(1)SPICAN设备配置

&spi_bus1{status = "okay";#if 0spidev@0 {compatible = "rohm,dh2228fv";reg = <0>;pl022,interface = <0>;pl022,com-mode = <0>;spi-max-frequency = <24750000>;};
#endif
#if 1can0: can@0 {compatible = "microchip,mcp2515";reg = <0>;clocks = <&clk_16m>;spi-max-frequency = <2000000>;interrupt-parent = <&gpio_chip17>;interrupts = <5 0x2>;reset-gpios = <&gpio_chip17 6 0>;status = "okay";};#endif

(2) 中断脚和复位脚配置

按照上面,中断脚和复位脚对照硬件,配置好GPIO

中断脚对应: GPIO17-5 复位脚对应: GPIO17-6

(3) 时钟配置

要注意的晶振时钟配置要与MCP2515一致,SPI的最大频率根据MCP2515接收端的承受能力来配置,驱动中会默认设置好传输速率

    soc {#address-cells = <1>;#size-cells = <1>;compatible = "simple-bus";device_type = "soc";interrupt-parent = <&gic>;ranges = <0x0 0x00000000 0x0 0xffffffff>;clk_3m: clk_3m {compatible = "fixed-clock";#clock-cells = <0>;clock-frequency = <3000000>;};
//addclk_16m: clk_16m {compatible = "fixed-clock";#clock-cells = <0>;clock-frequency = <16000000>;};

这篇关于海思3559平台MCP2515 SPI转CAN驱动配置的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/665736

相关文章

Linux下进程的CPU配置与线程绑定过程

《Linux下进程的CPU配置与线程绑定过程》本文介绍Linux系统中基于进程和线程的CPU配置方法,通过taskset命令和pthread库调整亲和力,将进程/线程绑定到特定CPU核心以优化资源分配... 目录1 基于进程的CPU配置1.1 对CPU亲和力的配置1.2 绑定进程到指定CPU核上运行2 基于

Spring Boot spring-boot-maven-plugin 参数配置详解(最新推荐)

《SpringBootspring-boot-maven-plugin参数配置详解(最新推荐)》文章介绍了SpringBootMaven插件的5个核心目标(repackage、run、start... 目录一 spring-boot-maven-plugin 插件的5个Goals二 应用场景1 重新打包应用

Java中读取YAML文件配置信息常见问题及解决方法

《Java中读取YAML文件配置信息常见问题及解决方法》:本文主要介绍Java中读取YAML文件配置信息常见问题及解决方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要... 目录1 使用Spring Boot的@ConfigurationProperties2. 使用@Valu

Jenkins分布式集群配置方式

《Jenkins分布式集群配置方式》:本文主要介绍Jenkins分布式集群配置方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1.安装jenkins2.配置集群总结Jenkins是一个开源项目,它提供了一个容易使用的持续集成系统,并且提供了大量的plugin满

Java通过驱动包(jar包)连接MySQL数据库的步骤总结及验证方式

《Java通过驱动包(jar包)连接MySQL数据库的步骤总结及验证方式》本文详细介绍如何使用Java通过JDBC连接MySQL数据库,包括下载驱动、配置Eclipse环境、检测数据库连接等关键步骤,... 目录一、下载驱动包二、放jar包三、检测数据库连接JavaJava 如何使用 JDBC 连接 mys

SpringBoot线程池配置使用示例详解

《SpringBoot线程池配置使用示例详解》SpringBoot集成@Async注解,支持线程池参数配置(核心数、队列容量、拒绝策略等)及生命周期管理,结合监控与任务装饰器,提升异步处理效率与系统... 目录一、核心特性二、添加依赖三、参数详解四、配置线程池五、应用实践代码说明拒绝策略(Rejected

SQL Server配置管理器无法打开的四种解决方法

《SQLServer配置管理器无法打开的四种解决方法》本文总结了SQLServer配置管理器无法打开的四种解决方法,文中通过图文示例介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的... 目录方法一:桌面图标进入方法二:运行窗口进入检查版本号对照表php方法三:查找文件路径方法四:检查 S

Linux中SSH服务配置的全面指南

《Linux中SSH服务配置的全面指南》作为网络安全工程师,SSH(SecureShell)服务的安全配置是我们日常工作中不可忽视的重要环节,本文将从基础配置到高级安全加固,全面解析SSH服务的各项参... 目录概述基础配置详解端口与监听设置主机密钥配置认证机制强化禁用密码认证禁止root直接登录实现双因素

嵌入式数据库SQLite 3配置使用讲解

《嵌入式数据库SQLite3配置使用讲解》本文强调嵌入式项目中SQLite3数据库的重要性,因其零配置、轻量级、跨平台及事务处理特性,可保障数据溯源与责任明确,详细讲解安装配置、基础语法及SQLit... 目录0、惨痛教训1、SQLite3环境配置(1)、下载安装SQLite库(2)、解压下载的文件(3)、

Linux如何快速检查服务器的硬件配置和性能指标

《Linux如何快速检查服务器的硬件配置和性能指标》在运维和开发工作中,我们经常需要快速检查Linux服务器的硬件配置和性能指标,本文将以CentOS为例,介绍如何通过命令行快速获取这些关键信息,... 目录引言一、查询CPU核心数编程(几C?)1. 使用 nproc(最简单)2. 使用 lscpu(详细信