- 积分
- 305
贡献1469
飞刀577 FD
注册时间2015-12-21
在线时间51 小时

扫一扫,手机访问本帖 
|
全志A40i或者T3的CPU中无CAN控制器,而在实际使用过程中,会用到CAN,通常会采用SPI转CAN的方式。
* P) [6 E, W% _# t9 |3 }
5 O* `0 Q* b, X) f 在OKA40i-C底板上,有一路SPI,但由于电压与mcp2515的电压不匹配,所以会采用串口2的这组复用为SPI外接mcp2515模块。 2 F$ M" k# L5 i# F: X
根据CPU手册第三章描述,可以将PI17-19复用为SPI1,采用PH08作为中断。
% n4 O! U$ k% ?" L- W " n4 y% x0 X- \
A40i/T3采用sys_config.fex或者dts 配置引脚复用功能,下面我们采用dts 进行配置。
& n n( B, b/ `6 D7 z6 N1 N0 o9 E* V0 Y0 w
01-打开SPI1 修改sys_config.fex,将uart2的配置去掉,打开SPI1的配置。
# B& D. k- J! a q1 |- u6 D 9 m4 T3 o1 R4 t7 v# x
3 ^; ^$ w/ ]6 n+ u; ]
同时将PH08注释掉: , t3 a4 h2 M. c) h! P V
T7 f1 W6 X b. g 同时修改设备树:
( D, g) _7 @, c: a* J' l4 [
4 _( S+ n% \7 v: E7 ~6 E% _
; L& r/ A4 T6 M D/ i
" q" b( Y+ M p02-修改defconfig 采用通过其他平台验证,且适配设备树的驱动mcp251x.c, 5 X5 V8 R$ |5 |0 m
修改defconfig 配置文件:
x7 \; p7 E! H$ j. |3 JNetworking support ---> CAN bus subsystem support --->CAN Device Drivers --->Microchip MCP251x SPI CAN controllers选中。
; e6 N) f& o3 b5 C; w1 m 同时选中SPI配置,默认已支持,此处不再说明。
1 e; c1 U2 |7 r0 y& e6 O' U
r$ b* G" l) A03-配置iproute 文件系统:
/ M4 |/ D8 v3 ~% U* Hbuildroot-201611/configs/sun8iw11p1_hf_defconfig S# {! ~( ^* }6 C8 K% v1 V
需要配置上BR2_PACKAGE_IPROUTE2=y. 5 q2 L5 j5 Q! H5 _) z, e3 Z, H
重新编译,并打包镜像,烧录。 # S5 z5 Q2 R8 w" o
. G4 B+ A1 f8 J; p% C# {04-测试can0节点 启动之后,ifconfig 查看出现can0节点。使用以下命令进行测试:
% ]' z0 z( |/ I4 ?ifconfig can0 down 6 f3 }# ]4 } q" D7 ~# Z
ip link set can0 up type can bitrate 125000 triple-sampling on
# k, H! j) j- T, b ifconfig can0 up
: |" r. S! N. i c6 y cansend can0 123#12345678
2 L) B6 j* l! I2 k( S- \0 R candump can0
, f! n* a1 @6 ~如果有必要请联系飞凌技术服务人员,提供patch文件。
: D/ ^5 \: ]& e3 C# `" ?: ^- S9 {" s O
注意事项 在设备树中,用作中断时,因A40i/T3只能使用PH组的引脚复用为中断,在设备树中设置中断时的如下: ' ]" o" E N; H8 ]6 ]' n+ h1 g
interrupt-parent = <&pio>;
1 d( G3 l: F% t! S3 a0 G interrupts = <8 0>;
9 G [5 O$ u* _0 C5 h另外,需要注意驱动中的中断触发方式。
7 x& x9 p' G1 Q$ V9 `3 s- t
# [( O( x/ P& r' j; j j+ S+ ^6 B+ P& v9 S- b O
相关产品: 0 U3 Z7 @1 v5 J, N! [1 J9 U& `
. f4 @- B6 {7 i0 f6 @$ ~+ c) @3 b3 t+ n; n% k$ D% Y
|
|