- 积分
- 297
贡献1423
飞刀567 FD
注册时间2015-12-21
在线时间50 小时

扫一扫,手机访问本帖 
|
全志A40i或者T3的CPU中无CAN控制器,而在实际使用过程中,会用到CAN,通常会采用SPI转CAN的方式。
7 l6 O Y" }3 i4 e" o7 Q g0 X/ _0 |7 O7 O- V( _, X
在OKA40i-C底板上,有一路SPI,但由于电压与mcp2515的电压不匹配,所以会采用串口2的这组复用为SPI外接mcp2515模块。
# J$ l- b3 L( P1 O 根据CPU手册第三章描述,可以将PI17-19复用为SPI1,采用PH08作为中断。
+ v- f; |$ ?- Y5 V/ C' H 7 r: X7 q' O; T) {) |
A40i/T3采用sys_config.fex或者dts 配置引脚复用功能,下面我们采用dts 进行配置。
1 @( O; X# M- D+ A3 F# ]/ Z; m# S& p* E+ R3 p
01-打开SPI1 修改sys_config.fex,将uart2的配置去掉,打开SPI1的配置。
& m# D4 O1 v# D: U; L% ]% e; N2 M 5 Q, d8 ]& C2 d/ D' [: R
4 X- z3 a2 P* F/ G1 t8 i: b* w+ f
同时将PH08注释掉:
1 v" B" e4 x+ m$ Z% [. H 2 ~2 {+ g3 V! \4 p
同时修改设备树:
6 V0 z' C3 Z8 s* V7 E
8 h3 T- M0 k0 \# t, Y
, Z+ E& s8 _8 ?+ }! e/ K4 d" G% ~; I, P4 W \- l
02-修改defconfig 采用通过其他平台验证,且适配设备树的驱动mcp251x.c,
' S% j/ I7 s" W- z 修改defconfig 配置文件: 8 }/ ?- [, t: J
Networking support ---> CAN bus subsystem support --->CAN Device Drivers --->Microchip MCP251x SPI CAN controllers选中。
# \8 ~' c$ k$ k9 M 同时选中SPI配置,默认已支持,此处不再说明。
1 x) V1 u/ e) j6 x3 \3 {/ A" x2 E7 V8 p( { v
03-配置iproute 文件系统: + F+ {5 V- [4 d% [! S
buildroot-201611/configs/sun8iw11p1_hf_defconfig 4 m. I2 e0 z7 k: L2 Y, s
需要配置上BR2_PACKAGE_IPROUTE2=y. , T7 F6 s; ^; h6 p( D2 l
重新编译,并打包镜像,烧录。
" Y2 ]& T0 B* j0 y/ T0 N
" ^- l# {0 ?, J04-测试can0节点 启动之后,ifconfig 查看出现can0节点。使用以下命令进行测试:
% A- S: O1 v/ ]7 c$ G3 \ifconfig can0 down
) ?0 U; N+ ?8 A$ W ip link set can0 up type can bitrate 125000 triple-sampling on
1 c0 z6 [. n4 y. F8 S1 f5 K ifconfig can0 up 3 N+ a% S) v- ~
cansend can0 123#12345678
5 c) g, i; \% K2 K: t" u! f4 m candump can0
^ r9 g9 J( q如果有必要请联系飞凌技术服务人员,提供patch文件。 7 n9 [: A- m. t2 ~7 f/ i& J
4 B) T$ l4 W2 y% y3 m3 y9 D
注意事项 在设备树中,用作中断时,因A40i/T3只能使用PH组的引脚复用为中断,在设备树中设置中断时的如下: % g8 A( B+ c5 V+ V- I
interrupt-parent = <&pio>;
# ~& X9 o) j7 T interrupts = <8 0>; . `- D% K8 D4 _# w I4 t
另外,需要注意驱动中的中断触发方式。
; _' ~% k6 U; x/ _7 V
7 p7 D$ l! {+ j- r2 [6 V, X3 {* Q y9 p1 [6 `
相关产品:
# \2 p6 J& L- F) c7 V
% Q/ R5 H6 g! m
5 H& L2 {( Z) z: ]" ]( _, S |
|