查看: 12769|回复: 1

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

48

主题

6

回帖

282

积分

飞凌-marketing 发表于 2021-12-10 17:13:01 | 显示全部楼层 |阅读模式
飞凌嵌入式基于全志系列处理器设计的OKA40i-C开发板、OKT3-C开发板因其接口丰富、低功耗、系统集成度高等特点,深受广大用户赞誉。 7 p3 j' N/ @$ S* U$ J

7 B1 t$ K3 E- G1 i/ c        小编通过对飞凌技术服务部“A40i/T3客户群问题解决库”进行检索,梳理了部分共性问题及解决思路。本文主要对OKA40i-C开发板/OKT3-C开发板CAN功能使用过程中多次遇到的问题进行讲解。 ! r1 `6 |2 D+ f
$ Z- u( O2 F' m* e
        由于全志 A40i/T3 CPU 中未包含CAN控制器,而在实际使用过程中,如果用到CAN功能,通常会采用SPI转CAN的方式。在此之前飞凌已经提供了OKA40i-C开发板/OKT3-C开发板对CAN的支持方法(参考链接: 研发干货丨A40i/T3对CAN的支持 点击查询),本文就不在做赘述,仅针对用户在实际操作过程中遇到的问题提供解决思路,请跟着小编来一起看看吧。
' H( @" C. o7 M7 O  X0 h" p. m6 p2 t  `4 U+ N" C% R! u
        一、中断引脚怎么如何选择?
/ I9 C+ U, a# C        在选择复用引脚时,需要给SPI转CAN模块选择一个中断引脚,而FETA40i-C/FETT3-C核心板并非每个引脚都具有中断功能,需要在《引脚复用对照表》中进行筛选,选择带有中断功能的GPIO。
5 _0 w! s$ k5 ]/ P8 \* n' A. p# N        首先需要确定哪些引脚具有中断功能,表格中引脚可复用功能中具有EINT*的引脚是具有中断功能的。我们可以从这些引脚中选择一个作为SPI转CAN模块的中断引脚,选择时注意这些引脚原本是什么功能,选择一个不需要的功能引脚作为SPI转CAN模块的中断引脚, 5 |, X7 v* R) F# t2 z( O' ?1 N
        比如下图是我们的方案中选用的PH6这个引脚。
. `' j4 |% J0 v. E! w: ^. G  L5 v. L. k

; i+ F2 D; A. Q( e" P0 ?% X
* w* b/ U0 e' f  g' f/ ~5 v
/ e0 ^. Y  f7 O# Q        二、 哪些引脚可以用作SPI功能?
/ {" L4 f- `& \1)开发板默认SPI功能的引脚在OKA40i-C开发板/OKT3-C开发板上,默认引出了SPI0和SPI2两组引脚,可以选择这两组引脚。需要注意的是这两组信号默认为1.8V,需要硬件上做电平转换为3.3V才能用于SPI转CAN的设置。 ! f& L. G2 a2 j0 [

' g3 W% c) Z# ]) C& y7 X* l( d; Z& i- T
        这两组引脚在fex文件里已经做了配置,只需要按照方法做其它修改即可。
( m( E% j% `# k0 t  `
- A: s/ l' W. A; e) t, ?2)将其它功能引脚复用为SPI功能在飞凌嵌入式《A40i/T3对CAN的支持》(点击查询)一文中详细讲解了如何将开发板上UART2功能相关的引脚复用为了SPI。 0 l% ?7 G/ {  H/ P
        假如不想使用UART2引脚复用又不知道如何选择的话,飞凌嵌入式全志A40、全志T3 用户资料中提供了《引脚复用对照表》,从中查询哪些引脚可以复用为SPI功能,然后根据实际需求去选择要复用的引脚。
1 R$ R. b, z# \% L4 H        查找时请先检索需要使用的功能“关键词”,比如需要SPI功能,请检索“SPI”,找到可复用成SPI功能的引脚,当前表格中默认功能列是引脚名称,功能选择列是默认配置的功能, 4 t5 u5 C4 r+ L& N0 }  y6 T" R
        例如PI16、PI17、PI18、PI19四个引脚,可以复用成SPI1,默认是UART2功能。
% p  o3 |) U8 ~5 L6 z4 w# f
5 p# o( _6 K" X/ _7 v % g$ J- z; c" d" L1 o- T! \
6 R) _: }: H% K8 w" q

1 j! s* i) f( b* [6 H$ V  X, ~2 I
5 z) C# ^* }, e1 j! s0 z8 }, u        三、iproute配置繁琐
+ D! c  \2 B& biproute需要在Buildroot里配置,需要编译Buildroot重新生成文件系统,过程太麻烦? ' H- ]5 r% g- o5 \8 Y2 W
iproute是一个网络管理工具,在设置波特率时有用到。如果使用飞凌嵌入式2020.08.31及之后提供的全志A40i及全志T3开发板资料,Buildroot已经配置完成,可以忽略该步操作,不用重新编译Buildroot,只需按照方法做好其它配置就可以了!这样可以减少一些不必要的编译问题,更快速的完成相关配置!
+ C, h: d9 ?9 {! v/ T  F7 }! p2 m/ A! n
        当然,也可以单独下载源码编译, 0 `, t, \. o" B! ?5 c* u3 F8 O  L
        下载链接:https://mirrors.edge.kernel.org/pub/linux/utils/net/iproute2/ + w% w9 p/ v6 o1 J' ]& s! x0 C
例:
3 y% Q" a8 ^: Z& J        下载iproute2-4.10.0.tar.gz ; {: M( R0 E3 \/ H
解压源码,修改Makefile文件中的交叉编译器 4 m' W# K  C  J" X* g( v) \
        指定CC=arm-linux-gnueabihf-gcc-5.3.1
3 q- t7 B5 l6 S2 `$ v! Q执行make编译,在ip文件夹中得到程序ip。
" P. D" z% R: R5 A9 t
( h6 J! i8 A8 V" {, R8 }) Z4 K( _6 |        四、数据丢帧问题A ( p8 f2 }% b0 M+ d+ Q- ~( s
通过SPI转CAN实现的CAN功能,相对于原生CAN的性能有一定的不足,在500K波特率下外部设备单次发送多帧数据,接收数据时可能出现丢帧现象,频繁收发数据可能出现丢帧现象,为解决这一问题,需要取消CPUIdle Driver for Sunxiprocessors选项,在飞凌嵌入式提供的最新全志A40i及T3的资料源码中已经做了重新配置!
3 P: _5 @4 @, u$ P, J: A. o- `        如果您使用的不是最新资料,
1 G1 E) M0 b: a1 H8 y        可以在源码中linux-3.10目录下执行makemenuconfig  ARCH=arm
) h1 B4 I! Z0 v8 r6 l. m- j将[] CPU Idle Driver for Sunxi processors的编译去掉 * ^2 V: ?/ |" Y, {0 I
CPU Power Management  --->( z" `* o3 K: `% j7 u: f& I
        [ ] CPU Idle Driver for Sunxi processors
2 E* _) B" N& h" C' `) \
7 P, x1 \' }+ s: [4 |: j) U9 E4 ~

% x& l( F/ L# O本次我们的解答问题梳理先到这里了,通过以上解答,希望能对大家的开发过程提供了帮助,减少问题,提高开发效率! / L9 n0 F1 Y; R3 `" S/ L7 o

- q! q/ L3 U  q! _# |& x
6 u/ Y$ E2 C* x/ r- Z7 i+ @% a, U
/ i5 E# U3 z6 J3 ^4 f相关产品:                                                   & I, @4 J8 p% `6 ^5 s0 @  V! m
7 t1 ^3 I0 Q1 h, q, C

% S. y6 m$ m! \9 H% U! B1 s6 O8 o, E8 Q
回复

使用道具 举报

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

本版积分规则