- 积分
- 295
贡献1408
飞刀561 FD
注册时间2015-12-21
在线时间50 小时
扫一扫,手机访问本帖
|
飞凌嵌入式基于全志系列处理器设计的OKA40i-C开发板、OKT3-C开发板因其接口丰富、低功耗、系统集成度高等特点,深受广大用户赞誉。
) F/ _, h/ o& R, v( N0 s 4 z0 ~, _6 `- x- g5 `$ l
小编通过对飞凌技术服务部“A40i/T3客户群问题解决库”进行检索,梳理了部分共性问题及解决思路。本文主要对OKA40i-C开发板/OKT3-C开发板CAN功能使用过程中多次遇到的问题进行讲解。
- g' [, n! u" i: Z( M7 v# F
. X2 A5 A8 b4 o* R. A( W, E G1 W 由于全志 A40i/T3 CPU 中未包含CAN控制器,而在实际使用过程中,如果用到CAN功能,通常会采用SPI转CAN的方式。在此之前飞凌已经提供了OKA40i-C开发板/OKT3-C开发板对CAN的支持方法(参考链接: 研发干货丨A40i/T3对CAN的支持 点击查询),本文就不在做赘述,仅针对用户在实际操作过程中遇到的问题提供解决思路,请跟着小编来一起看看吧。 1 ?9 N/ m; J; d3 |8 a
' D4 B. @$ x* E7 @5 ]& x- A 一、中断引脚怎么如何选择?
7 s2 Y; Z# I7 _" W! }. N' H 在选择复用引脚时,需要给SPI转CAN模块选择一个中断引脚,而FETA40i-C/FETT3-C核心板并非每个引脚都具有中断功能,需要在《引脚复用对照表》中进行筛选,选择带有中断功能的GPIO。
0 o ~, e. i0 w. G: E% E) g 首先需要确定哪些引脚具有中断功能,表格中引脚可复用功能中具有EINT*的引脚是具有中断功能的。我们可以从这些引脚中选择一个作为SPI转CAN模块的中断引脚,选择时注意这些引脚原本是什么功能,选择一个不需要的功能引脚作为SPI转CAN模块的中断引脚,
, W! R6 Z; o! F; O 比如下图是我们的方案中选用的PH6这个引脚。
4 {, h/ v, l- E7 l( e! d0 S; M2 l
. E" C. V3 u8 P' K1 M/ [( E 6 z- h9 b% {. x
2 N' Q2 f( y! n3 d- h# C3 `5 V
) d2 b3 W& \, n: I+ K
二、 哪些引脚可以用作SPI功能?
# O8 A: \% G5 m4 P$ x( w# a$ u( }8 }1)开发板默认SPI功能的引脚在OKA40i-C开发板/OKT3-C开发板上,默认引出了SPI0和SPI2两组引脚,可以选择这两组引脚。需要注意的是这两组信号默认为1.8V,需要硬件上做电平转换为3.3V才能用于SPI转CAN的设置。
2 ?' a6 `- z) X; m " S) G8 L0 n4 L% o* o& J
! r) `* N' J4 t# A 这两组引脚在fex文件里已经做了配置,只需要按照方法做其它修改即可。
2 p3 G6 V% c# q3 ]1 t' k
* D. l/ j- [4 Z; ]" g! d2)将其它功能引脚复用为SPI功能在飞凌嵌入式《A40i/T3对CAN的支持》(点击查询)一文中详细讲解了如何将开发板上UART2功能相关的引脚复用为了SPI。
$ C& U( w+ J: ^5 A% ] 假如不想使用UART2引脚复用又不知道如何选择的话,飞凌嵌入式全志A40、全志T3 用户资料中提供了《引脚复用对照表》,从中查询哪些引脚可以复用为SPI功能,然后根据实际需求去选择要复用的引脚。
) i7 B# m9 j ? 查找时请先检索需要使用的功能“关键词”,比如需要SPI功能,请检索“SPI”,找到可复用成SPI功能的引脚,当前表格中默认功能列是引脚名称,功能选择列是默认配置的功能, r+ t, b% @! H& v
例如PI16、PI17、PI18、PI19四个引脚,可以复用成SPI1,默认是UART2功能。 - S/ y" c9 K( x+ h! L' O$ e
% e2 o1 g! G9 z 2 M' t/ w- S1 d+ Z+ a( c# \
3 K; N5 M# g! I, \$ B. Q8 ?
R5 @& y" P8 E
9 }% J; H* d- k [/ \9 u; C, l. V5 j 三、iproute配置繁琐
* k* Y, H! G# N- F: N. V0 f& @iproute需要在Buildroot里配置,需要编译Buildroot重新生成文件系统,过程太麻烦?
9 R1 c) H l+ _8 _3 S9 f6 b+ Uiproute是一个网络管理工具,在设置波特率时有用到。如果使用飞凌嵌入式2020.08.31及之后提供的全志A40i及全志T3开发板资料,Buildroot已经配置完成,可以忽略该步操作,不用重新编译Buildroot,只需按照方法做好其它配置就可以了!这样可以减少一些不必要的编译问题,更快速的完成相关配置!
0 r# i4 N8 z8 D* G
- w2 ^- Y) h6 d8 S 当然,也可以单独下载源码编译,
+ e) u6 c s! y2 Z 下载链接:https://mirrors.edge.kernel.org/pub/linux/utils/net/iproute2/
, [5 D& G! L) O( u例: + g/ e* i1 u7 p1 h" h6 t* Y
下载iproute2-4.10.0.tar.gz " o( H1 l" ^2 f$ ^( p5 ], P
解压源码,修改Makefile文件中的交叉编译器
& R8 a: y6 q7 D6 R" O \ 指定CC=arm-linux-gnueabihf-gcc-5.3.1 $ U, f6 @, n# H, @2 c
执行make编译,在ip文件夹中得到程序ip。 * a% s% I6 n, p& S
+ b: Y, l8 s' H- l$ ~6 w
四、数据丢帧问题A # t* ^. G5 p3 g5 }/ G, f5 Y
通过SPI转CAN实现的CAN功能,相对于原生CAN的性能有一定的不足,在500K波特率下外部设备单次发送多帧数据,接收数据时可能出现丢帧现象,频繁收发数据可能出现丢帧现象,为解决这一问题,需要取消CPUIdle Driver for Sunxiprocessors选项,在飞凌嵌入式提供的最新全志A40i及T3的资料源码中已经做了重新配置!
$ ]' q9 F" Q% W* ?7 ^6 W 如果您使用的不是最新资料,
) p1 t5 U# q. ^ 可以在源码中linux-3.10目录下执行makemenuconfig ARCH=arm & D3 H( J+ w$ Y0 k8 V
将[] CPU Idle Driver for Sunxi processors的编译去掉 $ T$ \1 y. k$ E5 V
CPU Power Management --->& z+ t, f0 y& U! y
[ ] CPU Idle Driver for Sunxi processors $ y( d2 S" Q# k+ }' i0 ?
) _% h- V( Q) D9 j
) N* l7 g5 `+ R# }8 y5 d
% o- Y3 j* @) n5 _+ B7 W本次我们的解答问题梳理先到这里了,通过以上解答,希望能对大家的开发过程提供了帮助,减少问题,提高开发效率!
6 v5 k4 e( y- `! \+ ?& D$ J H9 q$ p( x, L" x9 O) {0 d( I( l
" ], P! i: @6 x }
2 y- P7 G- U; r% o, R相关产品: 7 K1 |6 r( y% O z' n2 f" a3 V
0 u* O+ {% W" [
" o7 T/ x% Z) j3 i7 S
% N: B4 [! M Q9 R* N |
|