嵌入式爱好者

查看: 10966|回复: 1

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

[复制链接]

46

主题

53

帖子

295

积分

扫一扫,手机访问本帖
发表于 2021-12-10 17:13:01 | 显示全部楼层 |阅读模式
飞凌嵌入式基于全志系列处理器设计的OKA40i-C开发板、OKT3-C开发板因其接口丰富、低功耗、系统集成度高等特点,深受广大用户赞誉。
( d$ X0 Z2 ]' u% @
: n9 N" |" Q# |" Q        小编通过对飞凌技术服务部“A40i/T3客户群问题解决库”进行检索,梳理了部分共性问题及解决思路。本文主要对OKA40i-C开发板/OKT3-C开发板CAN功能使用过程中多次遇到的问题进行讲解。
' E  l: H+ q- }+ ^# ~6 f. ~
) Y  B! P0 i. I        由于全志 A40i/T3 CPU 中未包含CAN控制器,而在实际使用过程中,如果用到CAN功能,通常会采用SPI转CAN的方式。在此之前飞凌已经提供了OKA40i-C开发板/OKT3-C开发板对CAN的支持方法(参考链接: 研发干货丨A40i/T3对CAN的支持 点击查询),本文就不在做赘述,仅针对用户在实际操作过程中遇到的问题提供解决思路,请跟着小编来一起看看吧。
: V5 L5 w7 Z! Q; D" M
; r) [' J" j6 Z( v1 E: K        一、中断引脚怎么如何选择? : B% y  I+ f- i8 h& [
        在选择复用引脚时,需要给SPI转CAN模块选择一个中断引脚,而FETA40i-C/FETT3-C核心板并非每个引脚都具有中断功能,需要在《引脚复用对照表》中进行筛选,选择带有中断功能的GPIO, C4 B2 Z* \. x, e0 M2 e
        首先需要确定哪些引脚具有中断功能,表格中引脚可复用功能中具有EINT*的引脚是具有中断功能的。我们可以从这些引脚中选择一个作为SPI转CAN模块的中断引脚,选择时注意这些引脚原本是什么功能,选择一个不需要的功能引脚作为SPI转CAN模块的中断引脚,
( A, g; M& P- Y2 _, t2 X        比如下图是我们的方案中选用的PH6这个引脚。 1 r! I, Z3 R, x* w6 j+ O& \
5 J6 q$ d1 ~' i; F7 {; c$ s' i0 d
" @% g+ d5 t! D7 }  F
9 H* F' \. z0 ?; y

' Y( v* ]" G/ i& a6 x( V        二、 哪些引脚可以用作SPI功能? ( Z6 O2 `) m! [
1)开发板默认SPI功能的引脚在OKA40i-C开发板/OKT3-C开发板上,默认引出了SPI0和SPI2两组引脚,可以选择这两组引脚。需要注意的是这两组信号默认为1.8V,需要硬件上做电平转换为3.3V才能用于SPI转CAN的设置。
8 ^7 L9 p. U5 a4 u9 g) g
4 q2 \  X$ M. o1 H* h9 S3 y! h2 k" f: @% z# c, @1 J5 a0 \
        这两组引脚在fex文件里已经做了配置,只需要按照方法做其它修改即可。
) x. F/ u0 _' W2 n0 a: l
1 t$ Q) @% z7 I, c! ~5 f2)将其它功能引脚复用为SPI功能在飞凌嵌入式《A40i/T3对CAN的支持》(点击查询)一文中详细讲解了如何将开发板上UART2功能相关的引脚复用为了SPI。
$ G5 x7 d# H7 r; x1 w        假如不想使用UART2引脚复用又不知道如何选择的话,飞凌嵌入式全志A40、全志T3 用户资料中提供了《引脚复用对照表》,从中查询哪些引脚可以复用为SPI功能,然后根据实际需求去选择要复用的引脚。 ) E. J/ [1 @0 H1 @
        查找时请先检索需要使用的功能“关键词”,比如需要SPI功能,请检索“SPI”,找到可复用成SPI功能的引脚,当前表格中默认功能列是引脚名称,功能选择列是默认配置的功能,
2 Q/ R" Y! @0 M) G$ ^* D# ^# h        例如PI16、PI17、PI18、PI19四个引脚,可以复用成SPI1,默认是UART2功能。
& ]; Z9 m6 \( N6 z5 q! Y; w. Z5 x+ ~5 F5 J$ [, a& z4 ~% q
' T! n: A! }+ x

# }* I$ m/ C- d* y  M
2 Y- n, p/ U/ i# o: J% Z. x( o
( n- q6 X/ q& K( K. W, h9 z        三、iproute配置繁琐
; y0 j  h5 W) N, G6 g# ziproute需要在Buildroot里配置,需要编译Buildroot重新生成文件系统,过程太麻烦?
. n5 R. G& f2 Oiproute是一个网络管理工具,在设置波特率时有用到。如果使用飞凌嵌入式2020.08.31及之后提供的全志A40i及全志T3开发板资料,Buildroot已经配置完成,可以忽略该步操作,不用重新编译Buildroot,只需按照方法做好其它配置就可以了!这样可以减少一些不必要的编译问题,更快速的完成相关配置! ) N* N  A  V1 Q0 w# U

5 H" B1 i, n* b2 I. _        当然,也可以单独下载源码编译,
7 n. g! C! M4 S$ H9 Z" p, X        下载链接:https://mirrors.edge.kernel.org/pub/linux/utils/net/iproute2/
: J  o8 \8 I; @5 u8 K例:
& z8 M* ~+ L+ D2 o1 x- H        下载iproute2-4.10.0.tar.gz
0 {6 ^- y7 U+ D: W! B7 a; U解压源码,修改Makefile文件中的交叉编译器
& T' R5 Q0 R! F0 w. a0 j9 c        指定CC=arm-linux-gnueabihf-gcc-5.3.1 1 F0 a) W, h5 P4 Q( t
执行make编译,在ip文件夹中得到程序ip。 ! j1 N8 X0 r* Z7 h+ z

  f/ F: {& w/ c  c% k. F        四、数据丢帧问题A
- p- e5 O7 R8 p, U1 A& Z& U% L. B4 J通过SPI转CAN实现的CAN功能,相对于原生CAN的性能有一定的不足,在500K波特率下外部设备单次发送多帧数据,接收数据时可能出现丢帧现象,频繁收发数据可能出现丢帧现象,为解决这一问题,需要取消CPUIdle Driver for Sunxiprocessors选项,在飞凌嵌入式提供的最新全志A40i及T3的资料源码中已经做了重新配置!
* {# ]7 ?& L# U2 b& s        如果您使用的不是最新资料, 9 ?( h4 L$ ^1 v4 O) S+ H
        可以在源码中linux-3.10目录下执行makemenuconfig  ARCH=arm * Y  f7 H. f0 H5 d
将[] CPU Idle Driver for Sunxi processors的编译去掉
+ M6 D8 A5 A5 cCPU Power Management  --->
$ B$ ]% R. d8 l9 Y        [ ] CPU Idle Driver for Sunxi processors ; s: t4 e: n9 l& F

. F& s2 {& _- }% J. \/ q# _5 I9 s: v1 i3 b6 a3 ]

- z; ?: Y& ^6 W! u本次我们的解答问题梳理先到这里了,通过以上解答,希望能对大家的开发过程提供了帮助,减少问题,提高开发效率!
0 H4 s5 A* v' |) o; h- [9 ]6 t
, p' R2 Z% B  Q3 x% v+ J" S. z6 a+ j' d9 _- P& h
' m; O4 i9 x) Q3 u
相关产品:                                                   
# C+ @( W! D/ U& n5 X8 M* F0 V7 W+ e6 c$ J. W& Q+ x6 ~; A1 o
8 E, r% K' v' G8 q# O, N
/ h4 o2 T) i3 B) P
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-5-31 21:49

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc.

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