嵌入式爱好者

查看: 11119|回复: 1

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

[复制链接]

46

主题

53

帖子

295

积分

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

5 Q; D; [, b, m3 j; |        小编通过对飞凌技术服务部“A40i/T3客户群问题解决库”进行检索,梳理了部分共性问题及解决思路。本文主要对OKA40i-C开发板/OKT3-C开发板CAN功能使用过程中多次遇到的问题进行讲解。
2 p- \( f4 H- i& G  j9 e/ S, D$ ^& e$ W+ {3 ?6 A
        由于全志 A40i/T3 CPU 中未包含CAN控制器,而在实际使用过程中,如果用到CAN功能,通常会采用SPI转CAN的方式。在此之前飞凌已经提供了OKA40i-C开发板/OKT3-C开发板对CAN的支持方法(参考链接: 研发干货丨A40i/T3对CAN的支持 点击查询),本文就不在做赘述,仅针对用户在实际操作过程中遇到的问题提供解决思路,请跟着小编来一起看看吧。 / _8 }! c- `8 R+ ~$ F. R, s3 y2 F% p
9 U7 n$ t/ L2 W
        一、中断引脚怎么如何选择? & p$ i2 R' f$ `2 T+ y
        在选择复用引脚时,需要给SPI转CAN模块选择一个中断引脚,而FETA40i-C/FETT3-C核心板并非每个引脚都具有中断功能,需要在《引脚复用对照表》中进行筛选,选择带有中断功能的GPIO
9 O1 d% Y1 G* o0 C5 q9 x# e        首先需要确定哪些引脚具有中断功能,表格中引脚可复用功能中具有EINT*的引脚是具有中断功能的。我们可以从这些引脚中选择一个作为SPI转CAN模块的中断引脚,选择时注意这些引脚原本是什么功能,选择一个不需要的功能引脚作为SPI转CAN模块的中断引脚, ' G4 c9 e% t6 C6 }3 s$ c( g
        比如下图是我们的方案中选用的PH6这个引脚。 8 J! e1 I# r' c- y1 Z( n
* O. W/ I! Z0 ~+ S
6 K7 f  b' v, e; `% |4 l
. R. l: N1 {$ f2 j1 @+ v3 H$ |
6 {  ^' |8 u) t5 m9 \. c  X
        二、 哪些引脚可以用作SPI功能?
" T$ }' |, |* F) ~6 t1 b1)开发板默认SPI功能的引脚在OKA40i-C开发板/OKT3-C开发板上,默认引出了SPI0和SPI2两组引脚,可以选择这两组引脚。需要注意的是这两组信号默认为1.8V,需要硬件上做电平转换为3.3V才能用于SPI转CAN的设置。 3 Z5 h4 o) R* v

: e( }. O+ |7 v+ H7 n+ S6 [* D  |. I7 P  P) v
        这两组引脚在fex文件里已经做了配置,只需要按照方法做其它修改即可。
" ]9 x# E: L* d8 f7 Z  S8 h2 }. B9 e0 z. F9 o
2)将其它功能引脚复用为SPI功能在飞凌嵌入式《A40i/T3对CAN的支持》(点击查询)一文中详细讲解了如何将开发板上UART2功能相关的引脚复用为了SPI。
$ a( F2 Q- r2 V! y7 F7 V        假如不想使用UART2引脚复用又不知道如何选择的话,飞凌嵌入式全志A40、全志T3 用户资料中提供了《引脚复用对照表》,从中查询哪些引脚可以复用为SPI功能,然后根据实际需求去选择要复用的引脚。
: r1 m1 x: ?& C, Q; P4 x2 t        查找时请先检索需要使用的功能“关键词”,比如需要SPI功能,请检索“SPI”,找到可复用成SPI功能的引脚,当前表格中默认功能列是引脚名称,功能选择列是默认配置的功能,
! ~+ \: ~9 s5 h% @8 o        例如PI16、PI17、PI18、PI19四个引脚,可以复用成SPI1,默认是UART2功能。 3 K* i0 b+ ?6 J
- W$ E* C8 H: ]) H$ r5 @
3 y* m  y) I0 _, x
, d: D- Z) @1 Y3 s
' ^9 @# U5 h' X6 \! W
" }* U! e" q' ^* N
        三、iproute配置繁琐 # m7 [$ z' m6 ]
iproute需要在Buildroot里配置,需要编译Buildroot重新生成文件系统,过程太麻烦? + f0 e, b8 o  D  k' a8 o) A3 Y
iproute是一个网络管理工具,在设置波特率时有用到。如果使用飞凌嵌入式2020.08.31及之后提供的全志A40i及全志T3开发板资料,Buildroot已经配置完成,可以忽略该步操作,不用重新编译Buildroot,只需按照方法做好其它配置就可以了!这样可以减少一些不必要的编译问题,更快速的完成相关配置! + N6 |# a- l  q# S$ k

8 }2 O3 c- o  r9 E+ @, }        当然,也可以单独下载源码编译,
6 a# }# J! b; A* Z3 C        下载链接:https://mirrors.edge.kernel.org/pub/linux/utils/net/iproute2/ , n: R' U9 {# D+ r7 t
例:
6 Z  H# w1 y+ A" w! z# }' x        下载iproute2-4.10.0.tar.gz ; r+ ]& q# D  l' `  @3 c$ A
解压源码,修改Makefile文件中的交叉编译器 9 x6 D5 r- C0 `
        指定CC=arm-linux-gnueabihf-gcc-5.3.1
' G8 B7 |$ r0 f执行make编译,在ip文件夹中得到程序ip。 4 T. \( P! P8 _+ b

) E# }/ {  \4 z; T6 k+ I        四、数据丢帧问题A
' D4 s6 [6 j: O通过SPI转CAN实现的CAN功能,相对于原生CAN的性能有一定的不足,在500K波特率下外部设备单次发送多帧数据,接收数据时可能出现丢帧现象,频繁收发数据可能出现丢帧现象,为解决这一问题,需要取消CPUIdle Driver for Sunxiprocessors选项,在飞凌嵌入式提供的最新全志A40i及T3的资料源码中已经做了重新配置!   B4 W, m, h3 b7 k$ s% n2 G& m
        如果您使用的不是最新资料, 4 [2 Z) z5 P" I5 @0 W# y7 ?7 E
        可以在源码中linux-3.10目录下执行makemenuconfig  ARCH=arm
6 @, s- M2 @; A2 o+ o7 ~/ G: I将[] CPU Idle Driver for Sunxi processors的编译去掉
+ h! H" m  U+ R: [CPU Power Management  --->
* r% J+ [* J  d2 i) T2 K9 d        [ ] CPU Idle Driver for Sunxi processors
( O: {% g( T+ s( O0 F2 f
1 N( b- u8 }. }! N4 B5 Y; ^3 V

. r4 a9 F4 Y8 I, |本次我们的解答问题梳理先到这里了,通过以上解答,希望能对大家的开发过程提供了帮助,减少问题,提高开发效率!   k. X; f) B- j) J4 K' ?

  E# d+ y/ @6 B4 {
4 w* B+ F/ R0 E/ t5 J+ @8 F9 j2 ^/ ]9 C6 f3 j$ C8 J5 N
相关产品:                                                   7 j6 _3 ^. y) B3 {0 Q/ [: u0 o

4 q8 q2 I) m5 ^) E3 l: P: F2 A) P( [. @
( j. M- t" Q. S* D
- K: q' ?$ x* z3 S/ Z
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-9-13 21:19

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc.

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