嵌入式爱好者

查看: 10971|回复: 1

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

[复制链接]

46

主题

53

帖子

295

积分

扫一扫,手机访问本帖
发表于 2021-12-10 17:13:01 | 显示全部楼层 |阅读模式
飞凌嵌入式基于全志系列处理器设计的OKA40i-C开发板、OKT3-C开发板因其接口丰富、低功耗、系统集成度高等特点,深受广大用户赞誉。
# v7 N9 w2 e# S" X$ f* ]$ q
4 q+ `: t/ ~! O        小编通过对飞凌技术服务部“A40i/T3客户群问题解决库”进行检索,梳理了部分共性问题及解决思路。本文主要对OKA40i-C开发板/OKT3-C开发板CAN功能使用过程中多次遇到的问题进行讲解。   T. p) z- f# j( Z- O2 B

: q0 w0 l: m" G% x5 G        由于全志 A40i/T3 CPU 中未包含CAN控制器,而在实际使用过程中,如果用到CAN功能,通常会采用SPI转CAN的方式。在此之前飞凌已经提供了OKA40i-C开发板/OKT3-C开发板对CAN的支持方法(参考链接: 研发干货丨A40i/T3对CAN的支持 点击查询),本文就不在做赘述,仅针对用户在实际操作过程中遇到的问题提供解决思路,请跟着小编来一起看看吧。 % o+ p0 m. I& t) i: E! H

6 q- [  u9 H: a9 ^- @; t  c8 |        一、中断引脚怎么如何选择?
" ?9 ~: O. d: C# U- h, f. z        在选择复用引脚时,需要给SPI转CAN模块选择一个中断引脚,而FETA40i-C/FETT3-C核心板并非每个引脚都具有中断功能,需要在《引脚复用对照表》中进行筛选,选择带有中断功能的GPIO' w9 Y: v" |6 e" l" W
        首先需要确定哪些引脚具有中断功能,表格中引脚可复用功能中具有EINT*的引脚是具有中断功能的。我们可以从这些引脚中选择一个作为SPI转CAN模块的中断引脚,选择时注意这些引脚原本是什么功能,选择一个不需要的功能引脚作为SPI转CAN模块的中断引脚, ' |' q6 y0 B# u* v, ]3 b$ z
        比如下图是我们的方案中选用的PH6这个引脚。
1 s5 `6 S5 q$ J& _/ a9 t
1 r4 ]) ?4 ^( g2 b' W
- q7 G5 X; M2 h, j5 d ( Z& }7 d2 g* p& C% h

4 t/ R3 ?+ U: |9 p/ A. T% y        二、 哪些引脚可以用作SPI功能? 4 d0 d; T; @, _5 G5 p3 ~
1)开发板默认SPI功能的引脚在OKA40i-C开发板/OKT3-C开发板上,默认引出了SPI0和SPI2两组引脚,可以选择这两组引脚。需要注意的是这两组信号默认为1.8V,需要硬件上做电平转换为3.3V才能用于SPI转CAN的设置。
$ ~/ k7 r  t7 H1 f+ f
: U$ n3 P, k) ^5 F1 O/ E7 ?
. n4 |" W. Z+ {7 e; l; a        这两组引脚在fex文件里已经做了配置,只需要按照方法做其它修改即可。
% L$ _4 T- S$ T, z
* l  A  U+ B8 w7 U6 e2)将其它功能引脚复用为SPI功能在飞凌嵌入式《A40i/T3对CAN的支持》(点击查询)一文中详细讲解了如何将开发板上UART2功能相关的引脚复用为了SPI。 * V2 y! J+ ]; w* L) ^6 p  L
        假如不想使用UART2引脚复用又不知道如何选择的话,飞凌嵌入式全志A40、全志T3 用户资料中提供了《引脚复用对照表》,从中查询哪些引脚可以复用为SPI功能,然后根据实际需求去选择要复用的引脚。 ' @( |& l7 o9 e) [: E$ Z
        查找时请先检索需要使用的功能“关键词”,比如需要SPI功能,请检索“SPI”,找到可复用成SPI功能的引脚,当前表格中默认功能列是引脚名称,功能选择列是默认配置的功能,
% ~& n, n1 I9 K1 X        例如PI16、PI17、PI18、PI19四个引脚,可以复用成SPI1,默认是UART2功能。
: S  e7 d$ ^1 K  b" F; U* |% K6 I/ |

5 i* b9 S5 A2 W: t7 r' @1 M 6 J! Y9 n: Q; W( f
- [9 y3 o. q6 B, c0 N

8 |, g+ @7 h  |$ k! m8 Q4 O) j7 @0 X        三、iproute配置繁琐
7 }9 Q0 i$ z& @iproute需要在Buildroot里配置,需要编译Buildroot重新生成文件系统,过程太麻烦? + R( ~# ~3 P& _) ^3 l* |
iproute是一个网络管理工具,在设置波特率时有用到。如果使用飞凌嵌入式2020.08.31及之后提供的全志A40i及全志T3开发板资料,Buildroot已经配置完成,可以忽略该步操作,不用重新编译Buildroot,只需按照方法做好其它配置就可以了!这样可以减少一些不必要的编译问题,更快速的完成相关配置! ) w- |+ w" K3 O' c

8 ^) j- J. p% B6 N2 Z9 \- e        当然,也可以单独下载源码编译,
" H4 I1 H, l( q        下载链接:https://mirrors.edge.kernel.org/pub/linux/utils/net/iproute2/ & L5 Z3 i/ P5 F: l1 ^4 ~  J
例: . {* x; g7 H9 r; W
        下载iproute2-4.10.0.tar.gz . u' g, ?( G) e% O
解压源码,修改Makefile文件中的交叉编译器   a; T# I1 w& @% M! ]: L
        指定CC=arm-linux-gnueabihf-gcc-5.3.1
+ t& [9 y. @4 c& d- d执行make编译,在ip文件夹中得到程序ip。
6 ~0 N9 E  J# @3 _& k& ~8 }. w& S$ X- q5 Z+ C7 a. i
        四、数据丢帧问题A
5 Y- n3 ~/ P7 K- {3 p* m通过SPI转CAN实现的CAN功能,相对于原生CAN的性能有一定的不足,在500K波特率下外部设备单次发送多帧数据,接收数据时可能出现丢帧现象,频繁收发数据可能出现丢帧现象,为解决这一问题,需要取消CPUIdle Driver for Sunxiprocessors选项,在飞凌嵌入式提供的最新全志A40i及T3的资料源码中已经做了重新配置! ) k: @% O) H1 Y7 O
        如果您使用的不是最新资料, ( _6 U9 T9 r3 d1 A, \* E
        可以在源码中linux-3.10目录下执行makemenuconfig  ARCH=arm
' v8 c9 e* |6 f+ c0 G7 M- v将[] CPU Idle Driver for Sunxi processors的编译去掉 , }9 g* v& m7 L/ d
CPU Power Management  --->
( W4 U1 i7 t; t! L, o        [ ] CPU Idle Driver for Sunxi processors
1 ]. @1 {; }5 M! K) o( C* ^ 4 n5 n  j" w7 f- u( [4 l- X' {- l
, d' q1 ~: f* u, [% ~
( k" B1 U# \* m9 J, _! W, N
本次我们的解答问题梳理先到这里了,通过以上解答,希望能对大家的开发过程提供了帮助,减少问题,提高开发效率! ) ]/ _) f  z. `( f4 z$ f; y
7 Z: z* `% ^$ d3 X
& w3 ^* Y  X  b& R

5 q: w9 T8 a8 j# S相关产品:                                                   
0 _5 ~9 y, q' e8 M! i5 R
- f; p8 k7 {' z) j5 E+ d, P  e, u% _8 P

! O! \: T( F& w, m. p+ P1 w+ U
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-6-5 22:19

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc.

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