- 积分
- 297
贡献1423
飞刀567 FD
注册时间2015-12-21
在线时间50 小时

扫一扫,手机访问本帖 
|
飞凌嵌入式基于全志系列处理器设计的OKA40i-C开发板、OKT3-C开发板因其接口丰富、低功耗、系统集成度高等特点,深受广大用户赞誉。
8 R4 E& @% y. ^; u2 X& X2 N/ ^8 u7 B& O " r+ x3 |0 h3 l$ M" B( B# O
小编通过对飞凌技术服务部“A40i/T3客户群问题解决库”进行检索,梳理了部分共性问题及解决思路。本文主要对OKA40i-C开发板/OKT3-C开发板CAN功能使用过程中多次遇到的问题进行讲解。
# W3 {/ o% S# O6 I4 E3 t, n3 g) ?* h
由于全志 A40i/T3 CPU 中未包含CAN控制器,而在实际使用过程中,如果用到CAN功能,通常会采用SPI转CAN的方式。在此之前飞凌已经提供了OKA40i-C开发板/OKT3-C开发板对CAN的支持方法(参考链接: 研发干货丨A40i/T3对CAN的支持 点击查询),本文就不在做赘述,仅针对用户在实际操作过程中遇到的问题提供解决思路,请跟着小编来一起看看吧。
" K( j0 C) [0 s8 ~( A9 ?: Y/ t
; u, {3 H$ ^% S' \2 i 一、中断引脚怎么如何选择?
% d0 J$ s |- g" K 在选择复用引脚时,需要给SPI转CAN模块选择一个中断引脚,而FETA40i-C/FETT3-C核心板并非每个引脚都具有中断功能,需要在《引脚复用对照表》中进行筛选,选择带有中断功能的GPIO。 ) t4 L5 t5 q8 B2 s, p; f& ^
首先需要确定哪些引脚具有中断功能,表格中引脚可复用功能中具有EINT*的引脚是具有中断功能的。我们可以从这些引脚中选择一个作为SPI转CAN模块的中断引脚,选择时注意这些引脚原本是什么功能,选择一个不需要的功能引脚作为SPI转CAN模块的中断引脚, ~4 c* @0 _; W9 V5 v
比如下图是我们的方案中选用的PH6这个引脚。
, x5 ?; s; ]3 h' S
. i+ g0 A. P' g( k
/ c% k& ?) z! d: u: @0 Q o/ @ 1 B& ]. G6 I; y, g' [& T, c
4 p( `/ v. I2 O. e: V9 E' L 二、 哪些引脚可以用作SPI功能? ) _4 @4 u4 w" c, Y x% M+ R
1)开发板默认SPI功能的引脚在OKA40i-C开发板/OKT3-C开发板上,默认引出了SPI0和SPI2两组引脚,可以选择这两组引脚。需要注意的是这两组信号默认为1.8V,需要硬件上做电平转换为3.3V才能用于SPI转CAN的设置。 ; ^' R1 ?9 Z( ^. f+ M9 D3 r
6 d9 W* |/ b/ J; }6 m8 R* C! I' W; v" o* J7 j, c+ K' f* K
这两组引脚在fex文件里已经做了配置,只需要按照方法做其它修改即可。
- ^& O o f4 u' ?+ R
4 {/ z( T. t' N2 h) E2)将其它功能引脚复用为SPI功能在飞凌嵌入式《A40i/T3对CAN的支持》(点击查询)一文中详细讲解了如何将开发板上UART2功能相关的引脚复用为了SPI。 , e- Z# N" H4 I3 s6 S
假如不想使用UART2引脚复用又不知道如何选择的话,飞凌嵌入式全志A40、全志T3 用户资料中提供了《引脚复用对照表》,从中查询哪些引脚可以复用为SPI功能,然后根据实际需求去选择要复用的引脚。
' _' p1 |8 P4 ^8 `6 u" o" f6 W" { 查找时请先检索需要使用的功能“关键词”,比如需要SPI功能,请检索“SPI”,找到可复用成SPI功能的引脚,当前表格中默认功能列是引脚名称,功能选择列是默认配置的功能,
' U+ }! X: |& h0 x5 U 例如PI16、PI17、PI18、PI19四个引脚,可以复用成SPI1,默认是UART2功能。
0 m& c, s% k3 l L
- y& U/ x+ h- v- U/ `7 X 1 e, ~, _+ p6 ^" v h6 s
" O6 }4 Y! G- d/ a) l, ^
! G) s# g$ a+ o- k0 {8 O' n* G0 ], Y% ^
三、iproute配置繁琐
4 }2 [( F% d, l# z3 ~( \7 \iproute需要在Buildroot里配置,需要编译Buildroot重新生成文件系统,过程太麻烦?
# G5 z4 G- C$ ~+ u& z4 |8 ]! o- Q5 Fiproute是一个网络管理工具,在设置波特率时有用到。如果使用飞凌嵌入式2020.08.31及之后提供的全志A40i及全志T3开发板资料,Buildroot已经配置完成,可以忽略该步操作,不用重新编译Buildroot,只需按照方法做好其它配置就可以了!这样可以减少一些不必要的编译问题,更快速的完成相关配置! ! \1 @/ K* l! R: U& ?& X2 F1 o, O
" P! v) q1 d. d5 h+ O
当然,也可以单独下载源码编译,
# F4 u' ~4 K- a: Q( X* R% G 下载链接:https://mirrors.edge.kernel.org/pub/linux/utils/net/iproute2/
q; Y+ z i8 [9 f' G% n# C2 e3 X例:
5 @* e8 j; k4 s* Y; a( j4 L 下载iproute2-4.10.0.tar.gz
6 {* u$ Y6 y' ]" l% i0 d- w/ A解压源码,修改Makefile文件中的交叉编译器 9 `2 q( m/ x( L j
指定CC=arm-linux-gnueabihf-gcc-5.3.1 8 G3 m/ S V3 N) Z1 u6 B3 J% _, i
执行make编译,在ip文件夹中得到程序ip。
+ X4 ~6 j; \5 X- o; ]) e) `% u2 }' T: c8 s o2 q+ Y# l
四、数据丢帧问题A
8 C- ^( P2 W0 w: E. p通过SPI转CAN实现的CAN功能,相对于原生CAN的性能有一定的不足,在500K波特率下外部设备单次发送多帧数据,接收数据时可能出现丢帧现象,频繁收发数据可能出现丢帧现象,为解决这一问题,需要取消CPUIdle Driver for Sunxiprocessors选项,在飞凌嵌入式提供的最新全志A40i及T3的资料源码中已经做了重新配置!
4 k5 t# o5 F: `% a: F8 ` 如果您使用的不是最新资料, 8 V+ P: \9 s- h3 E6 Z. B1 H- o$ n: e9 ?/ C
可以在源码中linux-3.10目录下执行makemenuconfig ARCH=arm 1 R! T' k* ]* k* Y' \+ ~4 O) P
将[] CPU Idle Driver for Sunxi processors的编译去掉 % h* G2 O; ^2 n' |6 r+ c2 O7 w
CPU Power Management --->
: n% W3 _- A. i/ \* I9 C/ i [ ] CPU Idle Driver for Sunxi processors
( o2 G- Z+ S) [. |6 D & W# Z- ^. d( e$ B
5 Z5 {, m) Z, R6 v0 ^3 p6 H# I
7 _* P1 C$ e( t3 f5 {6 x* Z; l. K本次我们的解答问题梳理先到这里了,通过以上解答,希望能对大家的开发过程提供了帮助,减少问题,提高开发效率! 2 O. I/ Q- \; e$ D+ [8 ^' u
& g% j, G9 G# l4 i
Z; r; Z( d' z* E/ L+ c% ^
" z' |/ m8 w; i1 }) g相关产品: + J. N4 }, N+ e2 i7 Q( u& _
$ a! g( p' w5 c1 F
U4 ~" n! b# X; y" i- p
' o4 i" P4 S# T |
|