技术专栏
海思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 0
spidev@0 {
compatible = "rohm,dh2228fv";
reg = <0>;
pl022,interface = <0>;
pl022,com-mode = <0>;
spi-max-frequency = <24750000>;
};
#endif
#if 1
can0: 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>;
};
//add
clk_16m: clk_16m {
compatible = "fixed-clock";
#clock-cells = <0>;
clock-frequency = <16000000>;
};
声明:本文内容由易百纳平台入驻作者撰写,文章观点仅代表作者本人,不代表易百纳立场。如有内容侵权或者其他问题,请联系本站进行删除。
红包
4
2
评论
打赏
- 分享
- 举报
评论
1个
手气红包
-
hello 2024-11-29 21:55:09回复 举报您好,我近期在ss626平台使用了mcp2515的这个spi转can的设备,正在调试中。 现在我配置设备树,并修改内核后,将驱动模块化加载,然后手动复用在加载驱动,可以正常生成can0节点,并可以使用ip唤醒以及设置波特率。但是我使用cansend发送一次数据后,windows下的can测试软件会一直接受数据,停不下来的情况,并且reboot重启开发板也无法停止,只能断电重新启动,请问有遇到过这种情况吗-
Schips 回复 hello 2025-05-07 15:23:33回复 举报考虑一下降低SPI 通信速率,导致是某些配置写不成功引起CAN芯片工作不正常。
-
相关专栏
-
浏览量:4363次2018-10-31 14:12:11
-
浏览量:4067次2024-01-10 10:01:45
-
浏览量:5015次2020-09-04 15:36:49
-
浏览量:2206次2020-08-10 19:19:56
-
浏览量:2664次2024-03-05 17:10:43
-
浏览量:3152次2024-02-19 15:26:47
-
浏览量:2567次2023-10-12 16:48:04
-
浏览量:1203次2024-01-02 16:51:15
-
浏览量:6406次2020-09-18 11:28:51
-
浏览量:3446次2020-07-31 16:50:14
-
浏览量:4397次2022-01-04 09:00:18
-
浏览量:1828次2024-01-05 10:33:11
-
浏览量:1880次2024-01-02 17:24:57
-
浏览量:1856次2024-01-03 17:15:03
-
浏览量:3569次2023-06-12 14:34:18
-
浏览量:3744次2020-08-10 19:30:45
-
浏览量:4451次2020-08-24 21:15:04
-
浏览量:10176次2020-12-22 15:50:36
-
浏览量:6020次2021-06-25 09:46:07
切换马甲
上一页
下一页
打赏用户
共 2 位
我要创作
分享技术经验,可获取创作收益
分类专栏
-
178篇
热门专栏
- Hi3516CV610 SDK 安装及升级
- Node-RED系列(十):Node-RED面板dashboard节点的配置
- 海思 AI 芯片 (Hi3559A V100) 算法开发(三) 在 PC 仿真库使用 YOLOv3 进行图片目标检测以及 NMS、YOLO 讲解
- 海思AI芯片HI3516DV300上SSD代码的移植和优化
- 物联网传输协议基石 - TCP ( Transmission Control Protocol )下
- 南京启诺信息技术有限公司荣获2024年度openEuler领先商业实践创新荣誉,海鸥派引领高校人才培训与就业新篇章!
- 防疫好帮手!搭载海思NB芯片的智能测温手环上线啦~
- 易百纳亮相AWE展会,海思展台呈现人工智能/物联网解决方案
- 如何让软件支持usb host和device自切换?
- 物联网网关神器 Kong ( 四 )- 利用 Konga 来配置生产环境安全连接 Kong
置顶时间设置
结束时间
删除原因
-
广告/SPAM
-
恶意灌水
-
违规内容
-
文不对题
-
重复发帖
打赏作者
free-jdx
您的支持将鼓励我继续创作!
打赏金额:
¥1
¥5
¥10
¥50
¥100
支付方式:
微信支付
举报反馈
举报类型
- 内容涉黄/赌/毒
- 内容侵权/抄袭
- 政治相关
- 涉嫌广告
- 侮辱谩骂
- 其他
详细说明
审核成功
发布时间设置
发布时间:
请选择发布时间设置
是否关联周任务-专栏模块
审核失败
失败原因
请选择失败原因
备注
请输入备注

微信扫码分享
QQ好友