- 积分
- 306
贡献1479
飞刀581 FD
注册时间2015-12-21
在线时间51 小时

扫一扫,手机访问本帖 
|
飞凌嵌入式基于全志系列处理器设计的OKA40i-C开发板、OKT3-C开发板因其接口丰富、低功耗、系统集成度高等特点,深受广大用户赞誉。
* W V$ i- t% |* {* ^: c $ m( L! [& A' N" {2 Q) h
小编通过对飞凌技术服务部“A40i/T3客户群问题解决库”进行检索,梳理了部分共性问题及解决思路。本文主要对OKA40i-C开发板/OKT3-C开发板CAN功能使用过程中多次遇到的问题进行讲解。 - h$ s' B: a0 {9 i
4 F" A$ n$ W, {3 K- X! t( |4 W
由于全志 A40i/T3 CPU 中未包含CAN控制器,而在实际使用过程中,如果用到CAN功能,通常会采用SPI转CAN的方式。在此之前飞凌已经提供了OKA40i-C开发板/OKT3-C开发板对CAN的支持方法(参考链接: 研发干货丨A40i/T3对CAN的支持 点击查询),本文就不在做赘述,仅针对用户在实际操作过程中遇到的问题提供解决思路,请跟着小编来一起看看吧。
5 q: G; w+ |* J# L6 p- I+ m3 _2 s% j) Y3 D6 @
一、中断引脚怎么如何选择?
2 K9 d/ v& J E) G- j- d 在选择复用引脚时,需要给SPI转CAN模块选择一个中断引脚,而FETA40i-C/FETT3-C核心板并非每个引脚都具有中断功能,需要在《引脚复用对照表》中进行筛选,选择带有中断功能的GPIO。
5 H2 P! X1 U# {5 V& Z 首先需要确定哪些引脚具有中断功能,表格中引脚可复用功能中具有EINT*的引脚是具有中断功能的。我们可以从这些引脚中选择一个作为SPI转CAN模块的中断引脚,选择时注意这些引脚原本是什么功能,选择一个不需要的功能引脚作为SPI转CAN模块的中断引脚,
0 P8 Z: ]3 U! B! n 比如下图是我们的方案中选用的PH6这个引脚。 - e7 B. Y* d* M) S3 S
Q, q* ?9 |' F$ y2 H1 G
! L# A3 q. y0 x& j3 }6 R6 M, w t B
2 Z, x1 k! S0 M, r c+ {& a t S1 z& b! p
二、 哪些引脚可以用作SPI功能?
$ x; I3 ?8 @& T; L1)开发板默认SPI功能的引脚在OKA40i-C开发板/OKT3-C开发板上,默认引出了SPI0和SPI2两组引脚,可以选择这两组引脚。需要注意的是这两组信号默认为1.8V,需要硬件上做电平转换为3.3V才能用于SPI转CAN的设置。 * X6 ~7 K+ C- M) a# `& I3 C
4 H7 z/ K2 C) Y& P; T3 m. C
$ D- L3 J4 e8 i: p5 I, Y: G7 B4 t, t 这两组引脚在fex文件里已经做了配置,只需要按照方法做其它修改即可。 1 i: X8 c5 A- R- p- P/ f- z
/ m7 x" f: a( t) y! W- L0 z7 H& B
2)将其它功能引脚复用为SPI功能在飞凌嵌入式《A40i/T3对CAN的支持》(点击查询)一文中详细讲解了如何将开发板上UART2功能相关的引脚复用为了SPI。 ! r7 L" W/ w% n* G2 e6 s+ R
假如不想使用UART2引脚复用又不知道如何选择的话,飞凌嵌入式全志A40、全志T3 用户资料中提供了《引脚复用对照表》,从中查询哪些引脚可以复用为SPI功能,然后根据实际需求去选择要复用的引脚。
1 r" W8 Y7 v4 p% B) n& N 查找时请先检索需要使用的功能“关键词”,比如需要SPI功能,请检索“SPI”,找到可复用成SPI功能的引脚,当前表格中默认功能列是引脚名称,功能选择列是默认配置的功能,
) @( R+ J/ ]* s7 J 例如PI16、PI17、PI18、PI19四个引脚,可以复用成SPI1,默认是UART2功能。 + k, M: r( i! q
% j6 {& j2 s+ F0 o
/ o8 A' l; ~7 g0 }2 j " y# Q, |- B9 m" B
4 q! l' V, H3 J5 ~* \$ ]3 v
+ K2 q8 M. [! N 三、iproute配置繁琐 8 v* k# Z7 n0 x
iproute需要在Buildroot里配置,需要编译Buildroot重新生成文件系统,过程太麻烦?
! ^. m& x) T1 V0 V2 n3 M7 T3 Kiproute是一个网络管理工具,在设置波特率时有用到。如果使用飞凌嵌入式2020.08.31及之后提供的全志A40i及全志T3开发板资料,Buildroot已经配置完成,可以忽略该步操作,不用重新编译Buildroot,只需按照方法做好其它配置就可以了!这样可以减少一些不必要的编译问题,更快速的完成相关配置! 3 F$ H1 r% a( S9 m5 j
8 |9 Q5 D" O9 [: e! t5 }. m( D 当然,也可以单独下载源码编译, 5 t! K$ q0 V# J. w
下载链接:https://mirrors.edge.kernel.org/pub/linux/utils/net/iproute2/
2 x, {+ s: S& H: v O9 z$ ^! m例: + c9 u7 f' N8 J1 t5 C* ^! R2 _( g
下载iproute2-4.10.0.tar.gz
8 W! _! l% L: }9 [# S解压源码,修改Makefile文件中的交叉编译器 0 y3 c G& t4 \" {, [
指定CC=arm-linux-gnueabihf-gcc-5.3.1
* y' C. o( H$ D0 j3 {) n4 J执行make编译,在ip文件夹中得到程序ip。 2 q1 x. l/ Q5 R7 y) w
8 l+ V! z& ?) y+ R 四、数据丢帧问题A 8 B7 q& f7 R0 u, V
通过SPI转CAN实现的CAN功能,相对于原生CAN的性能有一定的不足,在500K波特率下外部设备单次发送多帧数据,接收数据时可能出现丢帧现象,频繁收发数据可能出现丢帧现象,为解决这一问题,需要取消CPUIdle Driver for Sunxiprocessors选项,在飞凌嵌入式提供的最新全志A40i及T3的资料源码中已经做了重新配置!
% E$ [ c6 b& z1 L* j 如果您使用的不是最新资料, T" D, X% l3 a% M2 O% i: D
可以在源码中linux-3.10目录下执行makemenuconfig ARCH=arm
% e% ]5 X" h8 o2 V4 c. i将[] CPU Idle Driver for Sunxi processors的编译去掉
# y$ X6 T2 [1 B3 c1 lCPU Power Management --->
+ U2 M, U# o/ I! N9 h/ I [ ] CPU Idle Driver for Sunxi processors
1 L- ]* { J/ N4 q$ P* J* {
0 f, E) G4 m2 n0 T# |: [7 w$ I) w+ y. [
6 S6 D! j' b7 i2 V5 `* a$ t7 C. }
本次我们的解答问题梳理先到这里了,通过以上解答,希望能对大家的开发过程提供了帮助,减少问题,提高开发效率! 5 R& M8 D- m/ R' _1 |" A& E9 P
+ [0 n5 v& O B- M, c5 G+ s
: p6 k- S- X7 a" l" t
7 I7 ]+ S$ V/ D相关产品: ) o& @& n& e9 I' [ Q4 d: p6 C5 M1 E8 f
. W; W: G8 k: s& K1 y( q ~/ O) O2 ]
- Y5 M- E9 G3 i. B, i0 O
|
|