查看: 13039|回复: 2

[帮助] 飞凌嵌入式分享丨全志 A40i / T3对CAN的支持

48

主题

6

回帖

282

积分

飞凌-marketing 发表于 2021-12-10 17:13:44 | 显示全部楼层 |阅读模式
全志A40i或者T3的CPU中无CAN控制器,而在实际使用过程中,会用到CAN,通常会采用SPI转CAN的方式。
: O7 V1 @; \( b5 r8 P" T6 {, j$ ^: B% ?% g+ d. |
        在OKA40i-C底板上,有一路SPI,但由于电压与mcp2515的电压不匹配,所以会采用串口2的这组复用为SPI外接mcp2515模块。 / P2 I, S1 E2 q1 G* F3 D5 k
        根据CPU手册第三章描述,可以将PI17-19复用为SPI1,采用PH08作为中断。 9 D9 y: p: q* B( v
+ ~/ [: I3 r" F: {7 H$ Z$ Z7 J& c
A40i/T3采用sys_config.fex或者dts 配置引脚复用功能,下面我们采用dts 进行配置。 " n  U+ ~$ R! M0 q8 x
' T% Q: \' B1 r" y
01-打开SPI1 修改sys_config.fex,将uart2的配置去掉,打开SPI1的配置。 ! t1 n6 [& O7 u* G8 X% S: V

7 d7 ], ~/ n8 J: } ! w  Y6 Z' C- H) V
        同时将PH08注释掉:
0 l4 h. b9 U" I0 P
+ @( J# `9 n5 a8 q        同时修改设备树: * ^/ o! g2 ~! J0 Q5 }. n
8 Y; k2 ^* R1 C5 \1 }$ x1 e
$ G+ F5 u* f( T3 J
. U$ W# D7 T7 F9 E+ M! p  P/ i
02-修改defconfig 采用通过其他平台验证,且适配设备树的驱动mcp251x.c, $ W& L$ B" K1 U7 Q5 `6 L
        修改defconfig 配置文件:
- b" \% J" d: x) \% V, vNetworking support ---> CAN bus subsystem support --->CAN Device Drivers --->Microchip MCP251x SPI CAN controllers选中。
, G; F) ]+ R1 M4 i$ x/ v        同时选中SPI配置,默认已支持,此处不再说明。 $ @/ K* m* U. {  [7 f

) [1 K+ Q, C9 d6 E6 g/ H7 g. |03-配置iproute 文件系统: / S; ~; w9 `1 C( o+ p0 k: {% r
buildroot-201611/configs/sun8iw11p1_hf_defconfig
5 {8 C% I$ y6 h, p! h/ F需要配置上BR2_PACKAGE_IPROUTE2=y. ) }3 `. g) Z2 Y/ G
重新编译,并打包镜像,烧录。
" _4 \! q2 k9 T7 L' z& o6 q. ]) ^
) J  K! Q; h' D0 \! N/ E8 ^04-测试can0节点         启动之后,ifconfig 查看出现can0节点。使用以下命令进行测试: $ p. p, Z- M3 O. P$ ?
ifconfig can0 down
" j! M+ I0 U2 ^5 K  H! Q3 N8 F: w        ip link set can0 up type can bitrate 125000 triple-sampling on - A* [/ U2 {9 L: ?' b6 X, S# ^6 Z
        ifconfig can0 up
* g7 @$ O6 |' y  w& C        cansend can0 123#12345678 $ {, {' {+ P9 D% o" a' W
        candump can0
4 O. P  E( i2 f2 a' w; {1 w如果有必要请联系飞凌技术服务人员,提供patch文件。 ) Q' Y  ^) ]9 b; ^% X3 u

" m. l8 N! y0 n, N        注意事项         在设备树中,用作中断时,因A40i/T3只能使用PH组的引脚复用为中断,在设备树中设置中断时的如下:
  B5 |! @0 r1 ]) }" x8 T$ d2 w. p4 ]$ yinterrupt-parent = <&pio>; 7 C. h7 C0 D7 B% R
        interrupts = <8 0>; + a$ B0 Y3 K$ F) _- q! O: q
另外,需要注意驱动中的中断触发方式。
9 y# Y5 a  l( T9 s" ]3 ^2 T6 E$ G& I

3 H% B  I/ ]: Q; x相关产品:                                                   + u) [: k$ f& W5 b2 z* ^$ D

% j9 A1 A8 {) U6 x; y
: ]& x6 V9 h+ O, j5 _) \
回复

使用道具 举报

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

本版积分规则