- 积分
- 295
贡献1408
飞刀561 FD
注册时间2015-12-21
在线时间50 小时
扫一扫,手机访问本帖
|
全志A40i或者T3的CPU中无CAN控制器,而在实际使用过程中,会用到CAN,通常会采用SPI转CAN的方式。 * }+ b6 M9 W( r% y8 K
* Y _! N% L5 }, q8 r0 s7 |3 r* L
在OKA40i-C底板上,有一路SPI,但由于电压与mcp2515的电压不匹配,所以会采用串口2的这组复用为SPI外接mcp2515模块。
8 F% F" x# y' v 根据CPU手册第三章描述,可以将PI17-19复用为SPI1,采用PH08作为中断。 ) |5 q1 y7 x3 b" u
5 T, n) K8 m5 i* Y/ H* O2 L
A40i/T3采用sys_config.fex或者dts 配置引脚复用功能,下面我们采用dts 进行配置。 7 s; b6 ~8 Y, [3 d$ {' t1 X
8 P! r T6 s& D/ T" ~
01-打开SPI1 修改sys_config.fex,将uart2的配置去掉,打开SPI1的配置。 , H: L2 ^ i8 Y# x) l) \
3 B B- q' T$ ? ~$ w: c0 ~& }
5 w3 Q+ R3 b5 M 同时将PH08注释掉: $ G' P7 m: N/ w8 f/ v
. M6 G- j) u4 s4 F+ e
同时修改设备树: , D" H, Y4 I* i" B( C: R
Y" t2 U. h0 t. O% {* V/ ^$ H; N, W# }
2 ^, K# n( N1 r& D8 u1 {0 E( y3 p- z* V: S
02-修改defconfig 采用通过其他平台验证,且适配设备树的驱动mcp251x.c, 8 y# \4 p6 ?0 G/ `) i
修改defconfig 配置文件: ( K! z3 [5 s5 {/ q
Networking support ---> CAN bus subsystem support --->CAN Device Drivers --->Microchip MCP251x SPI CAN controllers选中。
6 b* S4 Q# ~1 F3 l* X2 b 同时选中SPI配置,默认已支持,此处不再说明。 ' q% |) Q3 D, Z" C$ x
) d, c1 H( z# X( O03-配置iproute 文件系统: 8 J' V: b! J; y {: u+ K* l ~
buildroot-201611/configs/sun8iw11p1_hf_defconfig
, b3 z% m9 W) ~) ~5 W* O3 J' L需要配置上BR2_PACKAGE_IPROUTE2=y.
) d u. D) q/ g+ S/ X5 \3 u重新编译,并打包镜像,烧录。
* Q9 Z5 Q; s1 Q' B( S
3 z, \' A8 B' N6 L3 X" E04-测试can0节点 启动之后,ifconfig 查看出现can0节点。使用以下命令进行测试:
( W# c8 S: c6 |% _1 F8 fifconfig can0 down
( y" |$ F" a" o% u ip link set can0 up type can bitrate 125000 triple-sampling on % w3 g! d, M4 D0 `( U# p
ifconfig can0 up
6 F, p6 |+ j" z" ~! F cansend can0 123#12345678 , d0 F: @6 K$ z: I( |& ^$ p0 V8 {
candump can0 ' R2 ~- N% A/ N+ o1 @
如果有必要请联系飞凌技术服务人员,提供patch文件。
' T8 D" }8 G8 T U% |
2 D. g: `% h% Q 注意事项 在设备树中,用作中断时,因A40i/T3只能使用PH组的引脚复用为中断,在设备树中设置中断时的如下: - n+ o! P0 {8 B2 ?
interrupt-parent = <&pio>; E( K; ^% m4 x( Y; |
interrupts = <8 0>; : L8 ^0 T \! v; _4 x
另外,需要注意驱动中的中断触发方式。 $ h* h) p! X, ^. g
5 b1 g2 u( }$ p5 b+ r
6 |, }8 O% S0 g, m相关产品: 9 }9 ]) Y1 _7 W5 p2 d
4 X9 G; H" d" N" P- T b# {) }% Y( V& z$ w0 i: ?% n- |- b$ w
|
|