56|0

192

帖子

0

TA的资源

一粒金砂(中级)

楼主
 

RK3562J开发笔记 | MCP2518FD外部CAN-FD控制器的调试方法 [复制链接]

“SPI转CAN-FD”是嵌入式开发领域的常用方法,它极大地促进了不同通信接口之间的无缝连接,并显著降低了系统设计的复杂性。飞凌嵌入式依托瑞芯微RK3562J处理器打造的OK3562J-C开发板因为内置了SPI转CAN-FD驱动,从而原生支持这一功能。该开发板特别设计了一组SPI引脚【P8】,专为SPI转CAN-FD应用而引出,为用户提供了极大的便利。

 

MCP2518FD是一款在各行业中都有着广泛应用的CAN-FD控制器芯片,本文就将为大家介绍如何在飞凌嵌入式RK3562J开发板上适配MCP2518FD芯片。

 

(建议您在手机、平板或电脑的浅色模式下阅读本文)

 

1
 
适配驱动

RK3562J的内核中已经具备MCP2518FD的驱动文件,要在配置文件中将驱动配置进内核,在kernel下打开图形化配置界面make menuconfig ARCH=arm64

 

(1) 按下 ‘/’ 键进入搜索界面,输入 mcp251 可搜索MCP2518驱动:

 

 

上图中的CAN_MCP251XFD就是适配MCP2518FD模块的驱动。

 

(2) 选择 2 将其打 * 编译进内核:

 

 

 

(3)选择 save 保存配置到defconfig文件,文件路径: 

/home/forlinx/3562/OK3562-linuxsource/kernel/arch/arm64/configs/OK3562_Linux_defconfig

 

2
 
适配设备树

(1) 飞凌嵌入式RK3562J开发板已引出一组SPI引脚:

 

 

 

(2) 驱动配置完成后要配置的是设备树文件:

OK3562-C-common.dtsi

 

(3) 具体的配置信息如下:

diff --git a/arch/arm64/boot/dts/rockchip/OK3562-C-common.dtsi b/arch/arm64/boot/dts/rockchip/OK3562-C-common.dtsi
index 158f03d70..671a491bf 100644
--- a/arch/arm64/boot/dts/rockchip/OK3562-C-common.dtsi
+++ b/arch/arm64/boot/dts/rockchip/OK3562-C-common.dtsi
@@ -19,6 +19,12 @@
model = "Forlinx OK3562 Board";
compatible = "forlinx,ok3562","rockchip,rk3562";
+     mcp2518_clk: mcp2518-clk {
+     compatible = "fixed-clock";
+     #clock-cells = <0>;
+     clock-frequency = <40000000>;
+     };
+
forlinx-control {
status = "disabled";
disp_type = "mipi"; //mipi or lvds
@@ -662,6 +668,13 @@
};
&pinctrl {
+
+ mcp2518 {
+ mcp2518_irq_pins:mcp2518_irq_pins {
+ rockchip,pins = <4 RK_PB0 RK_FUNC_GPIO &pcfg_pull_none>;
+ };
+ };
+
touch {
gt928_lvds_gpio:gt928-lvds-gpio {
rockchip,pins = <3 RK_PB0 RK_FUNC_GPIO &pcfg_pull_none>,
@@ -980,13 +993,24 @@
&spi2 {
+ pinctrl-names = "default";
+ pinctrl-0 = <&spi2m0_csn0 &spi2m0_csn1 &spi2m0_pins>;
status = "okay";
- spi_dev0: spi@0 {
+/* spi_dev0: spi@0 {
compatible = "rohm,dh2228fv";
2 / 5
pl022,com-mode = <1>;
spi-max-frequency = <10000000>;
reg = <0>;
status = "okay";
+ };*/
+     spi@0{
+     compatible = "microchip,mcp2518fd";
+     reg = <0>;
+     clocks = <&mcp2518_clk>;
+     pinctrl-names = "default";
+     pinctrl-0 = <&mcp2518_irq_pins>;
+     spi-max-frequency = <20000000>;
+     interrupts-extended= <&gpio4 RK_PB0 IRQ_TYPE_LEVEL_LOW>;
    };
};

 

mcp2518_clk 是时钟频率节点,要匹配模块实际的晶振频率;

② 模块上有的 INT 脚是模块的中断脚,在适配时需要连接一个可控的GPIO引脚作为终端脚;

③ 在 spi2 节点下添加匹配MCP2518驱动的设备树信息,compatible 信息不能出错,这是匹配驱动的重要属性。

 

3
 
编译烧写

将以上的驱动和设备树配置好后,编译内核烧写进开发板就可以测试了:

 

(1) 在源码目录下单独编译kernel:

forlinx@ubuntu:~/3562/OK3562-linux-source$ ./build.sh kernel

在源码目录下的kernel目录下会生成镜像文件 boot.img

 

(2) 将镜像文件烧录到开发板,需要用到工具 RKDevTool ,此工具在OK3562的资料包里可以找到:

① 打开烧写工具;

② 用Type-C数据线连接PC和开发板底部的Type-C0接口;

③ 按住开发板的Recovery键不要松开,重启开发板;

④ 注意工具会识别到开发板是否进入烧录状态。

 

 

⑤ 择之前编译好的 boot.img 镜像文件,在boot选项前面打勾,点击执行进行烧写,烧写完成会自动重启开发板

 

4
 
功能测试

在开发板内搜索can节点,使用 ifconfig -a 命令

 

 

可以看到生成的can0节点。接下来的功能测试,我们采用OK3562J-C和OK3568-C两块开发板的can0进行数据互发测试。

 

(1) OK3562J-C开发板接收数据:

① 设置can0的波特率

ip link set can0 type can bitrate 500000

 

② 打开can0设备,并把can0设置成服务端接收数据 

ifconfig can0 up //打开can0设备 
candump can0& //can0设备设置成服务端

 

 

 

③ 配置OK3568-C开发板的can0作为客户端,发送信息给OK3562J-C开发板的can0

ifconfig can0 down 
ip link set can0 up type can bitrate 500000 
ifconfig can0 up 
cansend can0 123#1122334aabbccd //发送信息

 

 

 

④ OK3562J-C开发板会收到OK3568发来的消息

 

 

(注:上图中出现的报错是MCP2518FD驱动的问题,测试不会影响通信。)

 

(2) OK3562J-C开发板发送数据:

① 设置波特率等操作同上,在配置功能时要使用 cansend 命令发送数据。

 

 

 

② OK3568-C依照OK3562-C的方法配置成接收数据的服务端。

ifconfig can0 down 
ip link set can0 up type can bitrate 500000 
ifconfig can0 up 
candump can0&

 

 

 

可以看到,两块开发板可以进行正常的数据互发。以上是飞凌嵌入式RK3562J开发板适配和测试MCP2518FD模块的全部过程,希望能够对大家的项目开发有所帮助。

此帖出自信息发布论坛
点赞 关注
 
 

回复
举报
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表