嵌入式爱好者

查看: 11256|回复: 1

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

[复制链接]

46

主题

53

帖子

296

积分

扫一扫,手机访问本帖
发表于 2021-12-10 17:13:01 | 显示全部楼层 |阅读模式
飞凌嵌入式基于全志系列处理器设计的OKA40i-C开发板、OKT3-C开发板因其接口丰富、低功耗、系统集成度高等特点,深受广大用户赞誉。
% g1 @; H) P" M4 h8 E* s5 Z, S
* C+ D" ]9 }' [& \        小编通过对飞凌技术服务部“A40i/T3客户群问题解决库”进行检索,梳理了部分共性问题及解决思路。本文主要对OKA40i-C开发板/OKT3-C开发板CAN功能使用过程中多次遇到的问题进行讲解。
% C* i* @+ h- }7 d/ o
- Y8 K& n& w' V& i5 y$ `0 S7 B        由于全志 A40i/T3 CPU 中未包含CAN控制器,而在实际使用过程中,如果用到CAN功能,通常会采用SPI转CAN的方式。在此之前飞凌已经提供了OKA40i-C开发板/OKT3-C开发板对CAN的支持方法(参考链接: 研发干货丨A40i/T3对CAN的支持 点击查询),本文就不在做赘述,仅针对用户在实际操作过程中遇到的问题提供解决思路,请跟着小编来一起看看吧。
  K; o& v: ?, m0 D) D0 [" C) B# K  f6 I" I- E9 G/ K6 B/ D# _% C
        一、中断引脚怎么如何选择? * s5 r8 l) E3 @! U. U
        在选择复用引脚时,需要给SPI转CAN模块选择一个中断引脚,而FETA40i-C/FETT3-C核心板并非每个引脚都具有中断功能,需要在《引脚复用对照表》中进行筛选,选择带有中断功能的GPIO
* n0 P4 |9 K+ \# b2 e        首先需要确定哪些引脚具有中断功能,表格中引脚可复用功能中具有EINT*的引脚是具有中断功能的。我们可以从这些引脚中选择一个作为SPI转CAN模块的中断引脚,选择时注意这些引脚原本是什么功能,选择一个不需要的功能引脚作为SPI转CAN模块的中断引脚, / b, s  q1 w5 I
        比如下图是我们的方案中选用的PH6这个引脚。
! v$ W$ u% D8 g# x. Q4 y) o! k' g: M0 i1 d0 Z0 _
) f1 p$ q' x/ B: e
: }1 J7 _) D- j
  o) J" Z9 b* P
        二、 哪些引脚可以用作SPI功能? 6 m! D- C3 H2 r# e7 s- ?% S
1)开发板默认SPI功能的引脚在OKA40i-C开发板/OKT3-C开发板上,默认引出了SPI0和SPI2两组引脚,可以选择这两组引脚。需要注意的是这两组信号默认为1.8V,需要硬件上做电平转换为3.3V才能用于SPI转CAN的设置。 5 v6 Z5 s; j& P; C3 E3 [. w

  @! {! I& V$ g8 u: A
7 u* G% z. k$ e6 C; I" q. B        这两组引脚在fex文件里已经做了配置,只需要按照方法做其它修改即可。
0 b, K+ P! W1 F) p6 x1 z  x/ f1 o1 P
2)将其它功能引脚复用为SPI功能在飞凌嵌入式《A40i/T3对CAN的支持》(点击查询)一文中详细讲解了如何将开发板上UART2功能相关的引脚复用为了SPI。 6 B4 ~* g9 ~9 g) f# a
        假如不想使用UART2引脚复用又不知道如何选择的话,飞凌嵌入式全志A40、全志T3 用户资料中提供了《引脚复用对照表》,从中查询哪些引脚可以复用为SPI功能,然后根据实际需求去选择要复用的引脚。 ; E' A: m1 }9 I+ l: ~5 D# p) F2 w
        查找时请先检索需要使用的功能“关键词”,比如需要SPI功能,请检索“SPI”,找到可复用成SPI功能的引脚,当前表格中默认功能列是引脚名称,功能选择列是默认配置的功能, 2 G" \# l* Z, [( @
        例如PI16、PI17、PI18、PI19四个引脚,可以复用成SPI1,默认是UART2功能。 2 b4 v! n6 }, M8 J

. i. V2 K+ D& r7 G, Y
' @4 R' h* B# m; ~ " q2 h* H% C& j( v+ v8 z' [
+ e4 e# M8 V; [. [
+ ?% H: _2 d- U8 ?0 X
        三、iproute配置繁琐
8 U. Q0 n1 Q8 p# S! q- l3 diproute需要在Buildroot里配置,需要编译Buildroot重新生成文件系统,过程太麻烦?
' e) ~3 ?3 Y. H# A5 `) Viproute是一个网络管理工具,在设置波特率时有用到。如果使用飞凌嵌入式2020.08.31及之后提供的全志A40i及全志T3开发板资料,Buildroot已经配置完成,可以忽略该步操作,不用重新编译Buildroot,只需按照方法做好其它配置就可以了!这样可以减少一些不必要的编译问题,更快速的完成相关配置!
4 u# @) \% w0 H
0 G& x- G- w" ~+ n        当然,也可以单独下载源码编译,
& }* d' D" @' A: F3 M        下载链接:https://mirrors.edge.kernel.org/pub/linux/utils/net/iproute2/ , Q; ~) v! t) j+ c
例: / V/ U) F. ^& u. b0 E# }
        下载iproute2-4.10.0.tar.gz
# x, J' v# O+ b解压源码,修改Makefile文件中的交叉编译器
# ^- d! e0 i/ S4 Y; M/ p% u# @        指定CC=arm-linux-gnueabihf-gcc-5.3.1 . l5 N  W. |, k- a# W0 Z
执行make编译,在ip文件夹中得到程序ip。 # d$ Z. {- k3 O& u  @2 Z
9 M) I7 w5 \* i* [) `9 p' `! f+ i
        四、数据丢帧问题A
2 P3 ^: }: U9 s" r0 e5 n, P8 T通过SPI转CAN实现的CAN功能,相对于原生CAN的性能有一定的不足,在500K波特率下外部设备单次发送多帧数据,接收数据时可能出现丢帧现象,频繁收发数据可能出现丢帧现象,为解决这一问题,需要取消CPUIdle Driver for Sunxiprocessors选项,在飞凌嵌入式提供的最新全志A40i及T3的资料源码中已经做了重新配置!
( }$ A4 u" Q3 E$ k/ r* R4 c        如果您使用的不是最新资料, / @8 ], p% t+ c( ?- S
        可以在源码中linux-3.10目录下执行makemenuconfig  ARCH=arm
4 X' T3 E8 o8 \7 D将[] CPU Idle Driver for Sunxi processors的编译去掉 9 ~2 z- \9 x; e  J4 `( C" G
CPU Power Management  --->% V( \$ |1 c6 e6 ~
        [ ] CPU Idle Driver for Sunxi processors
9 q# k% h3 a: ^
2 p  u' W  I" z6 l) F2 q7 ~* _6 q9 N$ v) A

* A0 j1 P( I' |8 x" X本次我们的解答问题梳理先到这里了,通过以上解答,希望能对大家的开发过程提供了帮助,减少问题,提高开发效率!
! X& l' z) u1 f( ^* y* f. U  h4 `; _7 L$ e# |
7 Q* O# o" }8 M) `* \! u

" S* u5 c) Z' X" j相关产品:                                                   - `" n0 t$ |1 v! y4 S8 V2 g3 I

2 L, Z) c5 |1 g
3 u7 R) @' S1 @+ K
; y$ D+ X0 o/ @; ?$ `: s
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-10-30 21:28

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc.

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