嵌入式爱好者

查看: 11458|回复: 1

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

[复制链接]

46

主题

53

帖子

296

积分

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

* I7 H  \7 g3 M  E7 F; r% l        小编通过对飞凌技术服务部“A40i/T3客户群问题解决库”进行检索,梳理了部分共性问题及解决思路。本文主要对OKA40i-C开发板/OKT3-C开发板CAN功能使用过程中多次遇到的问题进行讲解。 2 b0 G1 p: b- U
* _, ]; Z2 K5 \/ X9 x
        由于全志 A40i/T3 CPU 中未包含CAN控制器,而在实际使用过程中,如果用到CAN功能,通常会采用SPI转CAN的方式。在此之前飞凌已经提供了OKA40i-C开发板/OKT3-C开发板对CAN的支持方法(参考链接: 研发干货丨A40i/T3对CAN的支持 点击查询),本文就不在做赘述,仅针对用户在实际操作过程中遇到的问题提供解决思路,请跟着小编来一起看看吧。 1 ?7 \3 x* q" W; u; Z3 s, ?
% I* J1 n* Z: W3 Y; v" A
        一、中断引脚怎么如何选择? 2 H1 j( V: a# m! L1 T! A
        在选择复用引脚时,需要给SPI转CAN模块选择一个中断引脚,而FETA40i-C/FETT3-C核心板并非每个引脚都具有中断功能,需要在《引脚复用对照表》中进行筛选,选择带有中断功能的GPIO
) I0 R, B* L1 [/ C" e  G3 w  X: K        首先需要确定哪些引脚具有中断功能,表格中引脚可复用功能中具有EINT*的引脚是具有中断功能的。我们可以从这些引脚中选择一个作为SPI转CAN模块的中断引脚,选择时注意这些引脚原本是什么功能,选择一个不需要的功能引脚作为SPI转CAN模块的中断引脚,
+ @3 @0 @8 f& ]! C& Z9 Q        比如下图是我们的方案中选用的PH6这个引脚。
, D# A; N9 z7 r# s7 ~" G/ ~0 K
$ k3 _. d4 E& E' N. M
4 }0 I7 h* f) ]: U: I7 `5 |
3 W7 C& V1 J1 u0 g2 Z/ {) V# m' t
$ W% F- h- J; k        二、 哪些引脚可以用作SPI功能?   \" b- }0 @9 D8 B$ K2 _
1)开发板默认SPI功能的引脚在OKA40i-C开发板/OKT3-C开发板上,默认引出了SPI0和SPI2两组引脚,可以选择这两组引脚。需要注意的是这两组信号默认为1.8V,需要硬件上做电平转换为3.3V才能用于SPI转CAN的设置。
( u+ K& g6 \# Y + n$ W' f+ A$ J1 e

. S" ?2 n+ M+ F7 |  h& C        这两组引脚在fex文件里已经做了配置,只需要按照方法做其它修改即可。 9 x4 }5 ~) L$ S- f' s

1 \( \: ]5 k0 p9 A2)将其它功能引脚复用为SPI功能在飞凌嵌入式《A40i/T3对CAN的支持》(点击查询)一文中详细讲解了如何将开发板上UART2功能相关的引脚复用为了SPI。
+ A/ `7 b  s, m6 v/ i        假如不想使用UART2引脚复用又不知道如何选择的话,飞凌嵌入式全志A40、全志T3 用户资料中提供了《引脚复用对照表》,从中查询哪些引脚可以复用为SPI功能,然后根据实际需求去选择要复用的引脚。 0 d3 A) {% s) E2 X
        查找时请先检索需要使用的功能“关键词”,比如需要SPI功能,请检索“SPI”,找到可复用成SPI功能的引脚,当前表格中默认功能列是引脚名称,功能选择列是默认配置的功能, / w  r( m& Y* m2 d
        例如PI16、PI17、PI18、PI19四个引脚,可以复用成SPI1,默认是UART2功能。
7 H" m6 G1 D# }, M0 r+ b) I, ?7 {3 M6 ]

! r) w3 S3 Q9 t2 Q$ L
0 Q3 Z7 u# n& g2 w 0 l7 T/ d7 k7 Q8 n% g( G% D, E

! f" F9 j' H. S, j6 H/ {5 ?        三、iproute配置繁琐 ' }( S# j- @+ E
iproute需要在Buildroot里配置,需要编译Buildroot重新生成文件系统,过程太麻烦? 2 {) y, w, J+ ]4 A: c
iproute是一个网络管理工具,在设置波特率时有用到。如果使用飞凌嵌入式2020.08.31及之后提供的全志A40i及全志T3开发板资料,Buildroot已经配置完成,可以忽略该步操作,不用重新编译Buildroot,只需按照方法做好其它配置就可以了!这样可以减少一些不必要的编译问题,更快速的完成相关配置!
! ]4 B. Z4 Q/ K# v- ?; k5 g. f+ e- ^! b
        当然,也可以单独下载源码编译,
( n/ S, @9 b7 B. t        下载链接:https://mirrors.edge.kernel.org/pub/linux/utils/net/iproute2/
: {( a' Z" b3 x: {& p例:
/ F. N4 o8 I! e% u8 W" V# {        下载iproute2-4.10.0.tar.gz $ }0 Q; M- O9 n, k* T
解压源码,修改Makefile文件中的交叉编译器
+ H8 s) v* n7 I1 U7 `9 G        指定CC=arm-linux-gnueabihf-gcc-5.3.1
* H9 b6 N' u% N$ E执行make编译,在ip文件夹中得到程序ip。
' q5 ~- r* L* G2 t/ O! b' q
. J; i4 c  _# D* |3 |( D- C        四、数据丢帧问题A
7 X1 w5 f4 V$ l0 }  G通过SPI转CAN实现的CAN功能,相对于原生CAN的性能有一定的不足,在500K波特率下外部设备单次发送多帧数据,接收数据时可能出现丢帧现象,频繁收发数据可能出现丢帧现象,为解决这一问题,需要取消CPUIdle Driver for Sunxiprocessors选项,在飞凌嵌入式提供的最新全志A40i及T3的资料源码中已经做了重新配置!
+ Y5 }2 ~1 r2 z' j6 g        如果您使用的不是最新资料, ( W0 r' V4 r2 X9 j# S
        可以在源码中linux-3.10目录下执行makemenuconfig  ARCH=arm " F" x3 g. ^+ `* d: p
将[] CPU Idle Driver for Sunxi processors的编译去掉   R, W0 e: _) D  r" z* A  C
CPU Power Management  --->
0 J) E5 ^( @7 }" ~0 Z$ y3 H  A        [ ] CPU Idle Driver for Sunxi processors , F9 q5 h- D" D4 }
9 I* ^; ^/ U% `3 D# m( g( P

+ L( ^: E1 ]% x- f! p
4 ~$ P1 y* c1 q8 e本次我们的解答问题梳理先到这里了,通过以上解答,希望能对大家的开发过程提供了帮助,减少问题,提高开发效率!
: ~) [; w" R6 i9 \1 z& n, W; N4 Z, d# C! ^# a+ Q

) I  q0 \' L8 `4 ~7 Z
, z, F3 p2 G/ k" m* M4 R% y5 n7 r6 P相关产品:                                                   3 N3 r& V+ L/ m+ j

6 q7 t& A! @, ^9 \8 b+ K# c3 F- @: v6 [8 A+ l0 R% m

0 i) Q+ N* J/ r
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-12-10 12:37

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc.

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