嵌入式爱好者

查看: 11889|回复: 1

[帮助] 新资料丨全志A40i及全志T3开发板 对CAN的支持补充

[复制链接]

47

主题

54

帖子

300

积分

扫一扫,手机访问本帖
发表于 2021-12-10 17:13:01 | 显示全部楼层 |阅读模式
飞凌嵌入式基于全志系列处理器设计的OKA40i-C开发板、OKT3-C开发板因其接口丰富、低功耗、系统集成度高等特点,深受广大用户赞誉。 3 T& k% F: k9 ~

3 L2 _" i# w# _0 q+ B: r        小编通过对飞凌技术服务部“A40i/T3客户群问题解决库”进行检索,梳理了部分共性问题及解决思路。本文主要对OKA40i-C开发板/OKT3-C开发板CAN功能使用过程中多次遇到的问题进行讲解。 4 E8 h, c+ m/ [+ x# v; H+ a" y

* I0 d0 t" @" B4 A, L        由于全志 A40i/T3 CPU 中未包含CAN控制器,而在实际使用过程中,如果用到CAN功能,通常会采用SPI转CAN的方式。在此之前飞凌已经提供了OKA40i-C开发板/OKT3-C开发板对CAN的支持方法(参考链接: 研发干货丨A40i/T3对CAN的支持 点击查询),本文就不在做赘述,仅针对用户在实际操作过程中遇到的问题提供解决思路,请跟着小编来一起看看吧。
; U+ z6 z9 x2 }( M
" D" _" G* G3 H6 m0 A        一、中断引脚怎么如何选择? 8 V- k% K  T, Y
        在选择复用引脚时,需要给SPI转CAN模块选择一个中断引脚,而FETA40i-C/FETT3-C核心板并非每个引脚都具有中断功能,需要在《引脚复用对照表》中进行筛选,选择带有中断功能的GPIO
9 t1 f, b! \" K1 g        首先需要确定哪些引脚具有中断功能,表格中引脚可复用功能中具有EINT*的引脚是具有中断功能的。我们可以从这些引脚中选择一个作为SPI转CAN模块的中断引脚,选择时注意这些引脚原本是什么功能,选择一个不需要的功能引脚作为SPI转CAN模块的中断引脚,
* K# b' x. H) V$ t4 ?/ G8 z        比如下图是我们的方案中选用的PH6这个引脚。
; |; K5 m1 [+ e7 k" r- x
# y( e" F7 d# \7 l6 C: l" } 8 f6 e! m! k) Q) |7 j$ r/ d
' t. Q8 g* V$ L$ R
0 T; p$ w0 T% v) S" I- U
        二、 哪些引脚可以用作SPI功能? 5 ]; m, Q6 N+ V4 P
1)开发板默认SPI功能的引脚在OKA40i-C开发板/OKT3-C开发板上,默认引出了SPI0和SPI2两组引脚,可以选择这两组引脚。需要注意的是这两组信号默认为1.8V,需要硬件上做电平转换为3.3V才能用于SPI转CAN的设置。
* i, F% w- x5 @8 |& T3 H& |; a 6 G) N- ^' ]- _
. n# g) }! l2 a- w: M5 \
        这两组引脚在fex文件里已经做了配置,只需要按照方法做其它修改即可。 ! x7 M% N5 i7 }* F- V
: _) u- }- \% z6 a
2)将其它功能引脚复用为SPI功能在飞凌嵌入式《A40i/T3对CAN的支持》(点击查询)一文中详细讲解了如何将开发板上UART2功能相关的引脚复用为了SPI。   ]8 H9 L  l8 u9 \5 O
        假如不想使用UART2引脚复用又不知道如何选择的话,飞凌嵌入式全志A40、全志T3 用户资料中提供了《引脚复用对照表》,从中查询哪些引脚可以复用为SPI功能,然后根据实际需求去选择要复用的引脚。 2 b2 z4 q# \& Q2 a
        查找时请先检索需要使用的功能“关键词”,比如需要SPI功能,请检索“SPI”,找到可复用成SPI功能的引脚,当前表格中默认功能列是引脚名称,功能选择列是默认配置的功能, / k+ Y& W6 G5 N" N! H
        例如PI16、PI17、PI18、PI19四个引脚,可以复用成SPI1,默认是UART2功能。
  y- M- P% u" U( L6 ]% `
. g8 x! q0 X, e# S9 Q% A0 o8 Z2 E ' @* _" h) z# f. V& _

  ], l2 ^% r# D/ O4 R2 S * _/ a* V, C' B

3 @" F* k% k" |2 C' b        三、iproute配置繁琐
% p& R* c: m6 _# ?& j, ?iproute需要在Buildroot里配置,需要编译Buildroot重新生成文件系统,过程太麻烦?
) e/ U9 t8 k  c: o9 f  V! `; |iproute是一个网络管理工具,在设置波特率时有用到。如果使用飞凌嵌入式2020.08.31及之后提供的全志A40i及全志T3开发板资料,Buildroot已经配置完成,可以忽略该步操作,不用重新编译Buildroot,只需按照方法做好其它配置就可以了!这样可以减少一些不必要的编译问题,更快速的完成相关配置!
) M1 U5 r0 Y  |8 q. n! Z' a) O
8 f: R" |8 K$ s        当然,也可以单独下载源码编译,
& _  n) H, N6 n/ B4 ~, s        下载链接:https://mirrors.edge.kernel.org/pub/linux/utils/net/iproute2/ ( E: d& C: l( x- ^! U" ?6 o# t* y
例: * H* Z6 ?+ m  c$ W. v! Q5 g
        下载iproute2-4.10.0.tar.gz
3 n; U9 _8 z# P4 u' M4 f: K解压源码,修改Makefile文件中的交叉编译器 9 i* W' }5 L+ H2 @, O* P
        指定CC=arm-linux-gnueabihf-gcc-5.3.1 , n/ R8 U3 B. [" N* m
执行make编译,在ip文件夹中得到程序ip。 8 C4 m0 b8 `- h: |- S$ l( E1 @

4 I; g0 U: Q9 J0 Q  W$ y        四、数据丢帧问题A
0 O9 Z  [) M& }* |+ U: }3 H通过SPI转CAN实现的CAN功能,相对于原生CAN的性能有一定的不足,在500K波特率下外部设备单次发送多帧数据,接收数据时可能出现丢帧现象,频繁收发数据可能出现丢帧现象,为解决这一问题,需要取消CPUIdle Driver for Sunxiprocessors选项,在飞凌嵌入式提供的最新全志A40i及T3的资料源码中已经做了重新配置!
1 N/ H9 R% i" v9 c9 R        如果您使用的不是最新资料, " ]* d; V) a* h% i) ~9 N! m- Q& D7 R
        可以在源码中linux-3.10目录下执行makemenuconfig  ARCH=arm
3 l8 t. S4 n2 s6 O( a将[] CPU Idle Driver for Sunxi processors的编译去掉
4 D5 P7 [1 G& J2 K' n5 QCPU Power Management  --->- Q+ p' F( g9 c; ~9 R+ \
        [ ] CPU Idle Driver for Sunxi processors
9 j: ^9 p. z5 L0 ^1 K& S* n+ ?
! X: u1 G# }7 O- n, P2 c7 T$ M% g) d
3 `9 E9 b, Z- N- Z: u, S
本次我们的解答问题梳理先到这里了,通过以上解答,希望能对大家的开发过程提供了帮助,减少问题,提高开发效率! * e; Q8 B* B/ G& V  V
0 r4 K. U/ m6 _  G% J% X, I

1 y+ J8 W! I4 h" ~4 Z; N" k, w# O* C" }+ E' p
相关产品:                                                   
9 b" D( k) S6 `/ y( y
5 O. b2 y% I" r) h7 U8 r9 c1 p; ?$ i4 Q& D
4 `( A; c) q2 r
回复

使用道具 举报

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

本版积分规则

QQ|小黑屋| 飞凌嵌入式 ( 冀ICP备12004394号-1 )

GMT+8, 2026-3-4 03:47

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表