嵌入式爱好者

查看: 11034|回复: 1

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

[复制链接]

46

主题

53

帖子

295

积分

扫一扫,手机访问本帖
发表于 2021-12-10 17:13:01 | 显示全部楼层 |阅读模式
飞凌嵌入式基于全志系列处理器设计的OKA40i-C开发板、OKT3-C开发板因其接口丰富、低功耗、系统集成度高等特点,深受广大用户赞誉。 9 t* |; Y/ r! @* D# H$ K3 m  h$ ~

4 T9 f9 H3 J; {; ~2 T, |' X        小编通过对飞凌技术服务部“A40i/T3客户群问题解决库”进行检索,梳理了部分共性问题及解决思路。本文主要对OKA40i-C开发板/OKT3-C开发板CAN功能使用过程中多次遇到的问题进行讲解。 # P; g6 b2 u4 r" W
. b; _  J9 e+ M  `" O7 ]# \- v
        由于全志 A40i/T3 CPU 中未包含CAN控制器,而在实际使用过程中,如果用到CAN功能,通常会采用SPI转CAN的方式。在此之前飞凌已经提供了OKA40i-C开发板/OKT3-C开发板对CAN的支持方法(参考链接: 研发干货丨A40i/T3对CAN的支持 点击查询),本文就不在做赘述,仅针对用户在实际操作过程中遇到的问题提供解决思路,请跟着小编来一起看看吧。
% ~9 c3 `3 l9 ~4 m
- }7 \- g% L" C7 y8 M        一、中断引脚怎么如何选择? , S3 R) O" M1 K6 w: q
        在选择复用引脚时,需要给SPI转CAN模块选择一个中断引脚,而FETA40i-C/FETT3-C核心板并非每个引脚都具有中断功能,需要在《引脚复用对照表》中进行筛选,选择带有中断功能的GPIO
6 x9 [" a4 a" u3 R! g% O        首先需要确定哪些引脚具有中断功能,表格中引脚可复用功能中具有EINT*的引脚是具有中断功能的。我们可以从这些引脚中选择一个作为SPI转CAN模块的中断引脚,选择时注意这些引脚原本是什么功能,选择一个不需要的功能引脚作为SPI转CAN模块的中断引脚,
5 _, Y9 m. q7 j( @  U        比如下图是我们的方案中选用的PH6这个引脚。
0 u3 Z0 x$ e1 v) L6 V
# {' J: [9 f4 }$ H3 E' I9 j6 t
4 s/ F6 @0 w2 K
" x) `# ]' a* A/ K& a8 C, z$ O. U! I+ ~; N0 h
        二、 哪些引脚可以用作SPI功能?
5 u/ E: l8 m; p8 o( j1)开发板默认SPI功能的引脚在OKA40i-C开发板/OKT3-C开发板上,默认引出了SPI0和SPI2两组引脚,可以选择这两组引脚。需要注意的是这两组信号默认为1.8V,需要硬件上做电平转换为3.3V才能用于SPI转CAN的设置。 # g) k; K& a' Y! b& p. L1 W+ b

- U  A- z  l- A! ~! Z8 J0 T  _( I6 n7 K5 R) b  f$ ?: o
        这两组引脚在fex文件里已经做了配置,只需要按照方法做其它修改即可。 ' |) E9 F: b8 F5 Z3 w! H( w

: ^5 a$ ?- z5 j6 F- \2)将其它功能引脚复用为SPI功能在飞凌嵌入式《A40i/T3对CAN的支持》(点击查询)一文中详细讲解了如何将开发板上UART2功能相关的引脚复用为了SPI。 $ Q% i  a! Q. o/ M* S+ X
        假如不想使用UART2引脚复用又不知道如何选择的话,飞凌嵌入式全志A40、全志T3 用户资料中提供了《引脚复用对照表》,从中查询哪些引脚可以复用为SPI功能,然后根据实际需求去选择要复用的引脚。
& e5 }9 U7 T* K! e3 `        查找时请先检索需要使用的功能“关键词”,比如需要SPI功能,请检索“SPI”,找到可复用成SPI功能的引脚,当前表格中默认功能列是引脚名称,功能选择列是默认配置的功能, 5 c4 H3 t! s0 K0 w7 [
        例如PI16、PI17、PI18、PI19四个引脚,可以复用成SPI1,默认是UART2功能。 : s$ E' k) Z% _
1 W- ?6 I  o/ s- E$ y4 ^; w
1 ]% F; Y7 i% I* @+ J5 d. Z, V

5 K5 e3 J- D* {; h ) `& X* O. U7 ]* S  h# D0 H0 t
. z. ~& `' z3 l$ ]) l
        三、iproute配置繁琐
- w* z& }: O: t1 y3 o: Biproute需要在Buildroot里配置,需要编译Buildroot重新生成文件系统,过程太麻烦? ! ]6 r& R& @  S0 M0 p% D+ z5 I
iproute是一个网络管理工具,在设置波特率时有用到。如果使用飞凌嵌入式2020.08.31及之后提供的全志A40i及全志T3开发板资料,Buildroot已经配置完成,可以忽略该步操作,不用重新编译Buildroot,只需按照方法做好其它配置就可以了!这样可以减少一些不必要的编译问题,更快速的完成相关配置!
5 f6 C# z0 }6 x2 g. ~- w
* n4 `" k+ T. m1 o5 X* \! i        当然,也可以单独下载源码编译, " n# E! d$ u+ Y5 S; U
        下载链接:https://mirrors.edge.kernel.org/pub/linux/utils/net/iproute2/
7 _  O0 j$ Q2 N: y, x$ Y例:
, \  G% y4 ~# H- _) _        下载iproute2-4.10.0.tar.gz # k( W, b! U- @$ n: c5 E
解压源码,修改Makefile文件中的交叉编译器
% e# E- }2 J, `: L* I3 V' _) O# x        指定CC=arm-linux-gnueabihf-gcc-5.3.1
$ W. ~* A$ t& K% ^1 g执行make编译,在ip文件夹中得到程序ip。 ! F! }8 R; F2 @' P
( `7 C( ~" H9 K& x4 `
        四、数据丢帧问题A
0 p, D% [' N5 ]1 e通过SPI转CAN实现的CAN功能,相对于原生CAN的性能有一定的不足,在500K波特率下外部设备单次发送多帧数据,接收数据时可能出现丢帧现象,频繁收发数据可能出现丢帧现象,为解决这一问题,需要取消CPUIdle Driver for Sunxiprocessors选项,在飞凌嵌入式提供的最新全志A40i及T3的资料源码中已经做了重新配置!
, O/ Q' O# a3 D7 M9 R2 n5 y        如果您使用的不是最新资料,
. P/ d, E# g; g2 p$ `# \        可以在源码中linux-3.10目录下执行makemenuconfig  ARCH=arm
# J: |6 V3 H  N) ~, _& q) E将[] CPU Idle Driver for Sunxi processors的编译去掉 5 S7 q" W* B- Y: u) d9 H% ]
CPU Power Management  --->& g0 `2 ^. T6 x. v
        [ ] CPU Idle Driver for Sunxi processors ( Z% o" |' i. ?( e; O. I5 T* Y3 d
5 x( n& i- E" S; M" }- Z
+ g* H; }& S& _9 K5 u0 r/ m4 a' \- ?

, Y1 M7 D3 K! p: S" d4 G2 l本次我们的解答问题梳理先到这里了,通过以上解答,希望能对大家的开发过程提供了帮助,减少问题,提高开发效率! 0 G1 Q; Y  H$ `6 I
. i0 Z- @4 G! P3 n

( T' s' t3 a8 {
1 F/ r* o! i/ T相关产品:                                                   
& D) ~% k! r+ X4 M, f1 g0 w* J5 a& R. L6 L4 J: L

3 L3 X9 }9 z% P  `8 T1 w
) A3 @8 E( J3 @+ e
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-7-19 14:19

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc.

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