- 积分
- 305
贡献1464
飞刀575 FD
注册时间2015-12-21
在线时间51 小时

扫一扫,手机访问本帖 
|
飞凌嵌入式基于全志系列处理器设计的OKA40i-C开发板、OKT3-C开发板因其接口丰富、低功耗、系统集成度高等特点,深受广大用户赞誉。 ' z& B; w, A! V9 o8 X
0 ~4 d( f B' q( w; B 小编通过对飞凌技术服务部“A40i/T3客户群问题解决库”进行检索,梳理了部分共性问题及解决思路。本文主要对OKA40i-C开发板/OKT3-C开发板CAN功能使用过程中多次遇到的问题进行讲解。
! n5 L) {# ]! A. x' o9 [2 v9 P% ?! I- Z9 d5 q" [& s* p
由于全志 A40i/T3 CPU 中未包含CAN控制器,而在实际使用过程中,如果用到CAN功能,通常会采用SPI转CAN的方式。在此之前飞凌已经提供了OKA40i-C开发板/OKT3-C开发板对CAN的支持方法(参考链接: 研发干货丨A40i/T3对CAN的支持 点击查询),本文就不在做赘述,仅针对用户在实际操作过程中遇到的问题提供解决思路,请跟着小编来一起看看吧。 - k: I# O% R5 {9 J
7 E) Q8 N' G5 Q. v$ q* G+ z 一、中断引脚怎么如何选择? 9 Z9 C& | v. w
在选择复用引脚时,需要给SPI转CAN模块选择一个中断引脚,而FETA40i-C/FETT3-C核心板并非每个引脚都具有中断功能,需要在《引脚复用对照表》中进行筛选,选择带有中断功能的GPIO。
, l6 B* ^0 |5 H7 D 首先需要确定哪些引脚具有中断功能,表格中引脚可复用功能中具有EINT*的引脚是具有中断功能的。我们可以从这些引脚中选择一个作为SPI转CAN模块的中断引脚,选择时注意这些引脚原本是什么功能,选择一个不需要的功能引脚作为SPI转CAN模块的中断引脚, 5 G8 @# g* c/ q1 d
比如下图是我们的方案中选用的PH6这个引脚。
$ a' H! V' l+ Q2 K" s# ?, g. _1 @6 b+ U
, M" d9 i( m2 F/ h) x8 J8 C2 U6 [ $ D: T; M- G. z; O9 k
9 T# V+ F7 X, Y0 G
二、 哪些引脚可以用作SPI功能?
+ [% G3 _6 F; g! m) ^( C1)开发板默认SPI功能的引脚在OKA40i-C开发板/OKT3-C开发板上,默认引出了SPI0和SPI2两组引脚,可以选择这两组引脚。需要注意的是这两组信号默认为1.8V,需要硬件上做电平转换为3.3V才能用于SPI转CAN的设置。 , I% q/ ]* I6 K3 W1 {) N
. y* N' k+ D, y5 [- m) H+ ~9 [2 J$ K3 Y
这两组引脚在fex文件里已经做了配置,只需要按照方法做其它修改即可。 # l: G- f7 c; M& H, B5 @, @
5 x. V. R( D! e3 |, b. i2)将其它功能引脚复用为SPI功能在飞凌嵌入式《A40i/T3对CAN的支持》(点击查询)一文中详细讲解了如何将开发板上UART2功能相关的引脚复用为了SPI。 - z' L. {) q8 |+ X; {% |
假如不想使用UART2引脚复用又不知道如何选择的话,飞凌嵌入式全志A40、全志T3 用户资料中提供了《引脚复用对照表》,从中查询哪些引脚可以复用为SPI功能,然后根据实际需求去选择要复用的引脚。 - }4 k* G" Z- b" w/ V
查找时请先检索需要使用的功能“关键词”,比如需要SPI功能,请检索“SPI”,找到可复用成SPI功能的引脚,当前表格中默认功能列是引脚名称,功能选择列是默认配置的功能, ! d! Q; {/ }1 _* ^$ |7 _
例如PI16、PI17、PI18、PI19四个引脚,可以复用成SPI1,默认是UART2功能。
" Z4 p) v: x* A# e) S" S5 {2 p& Z6 z; u. E. V
3 V3 ~4 J7 {. m: a & m1 n/ R' c: m! Z
$ g& e# C3 y3 @0 `. `: r3 q/ h7 N$ {4 x. q9 J/ N) ] E3 u
三、iproute配置繁琐 1 p( H( m4 a( ] Q, ~3 L% ]; K
iproute需要在Buildroot里配置,需要编译Buildroot重新生成文件系统,过程太麻烦?
" e+ I0 H% Z4 w ?iproute是一个网络管理工具,在设置波特率时有用到。如果使用飞凌嵌入式2020.08.31及之后提供的全志A40i及全志T3开发板资料,Buildroot已经配置完成,可以忽略该步操作,不用重新编译Buildroot,只需按照方法做好其它配置就可以了!这样可以减少一些不必要的编译问题,更快速的完成相关配置!
s6 M2 c2 y& Z" Y; s! m/ L* u
" o. ?' ]2 g8 Z. N( L& ^ 当然,也可以单独下载源码编译,
8 K- ? n6 [) o1 r7 _2 R 下载链接:https://mirrors.edge.kernel.org/pub/linux/utils/net/iproute2/
6 R; [1 \& \& v1 c6 L' |3 e* S例:
/ g3 B- d4 O) \ A1 C: \1 n, C 下载iproute2-4.10.0.tar.gz u" x y" Z$ L+ `
解压源码,修改Makefile文件中的交叉编译器
+ O0 z0 W O3 Q9 v- M! j2 ~! V ? 指定CC=arm-linux-gnueabihf-gcc-5.3.1 & G( T: Q0 p7 c9 z0 e9 ]5 G
执行make编译,在ip文件夹中得到程序ip。 1 ^+ E$ Q$ O8 C, p* \
, B: h1 f& o5 M" m' Y5 S$ u
四、数据丢帧问题A
/ n! I6 ?- c' b4 C2 K! t. v通过SPI转CAN实现的CAN功能,相对于原生CAN的性能有一定的不足,在500K波特率下外部设备单次发送多帧数据,接收数据时可能出现丢帧现象,频繁收发数据可能出现丢帧现象,为解决这一问题,需要取消CPUIdle Driver for Sunxiprocessors选项,在飞凌嵌入式提供的最新全志A40i及T3的资料源码中已经做了重新配置!
6 J& y, C- c# W" ?5 _ 如果您使用的不是最新资料,
$ ~9 s- L w5 E 可以在源码中linux-3.10目录下执行makemenuconfig ARCH=arm
/ R9 r. d- Q0 X# N3 j1 {2 G将[] CPU Idle Driver for Sunxi processors的编译去掉
/ E) Y, c1 W: i6 e' ECPU Power Management --->
" z( t. l' S; P% m [ ] CPU Idle Driver for Sunxi processors ) S+ U! K5 k3 ~" c8 R7 z
" v8 M; m/ x* p9 Q! ~+ H( x# m
. G. b% r5 p6 P9 T. {6 ]+ B0 r2 W6 m T/ C& s
本次我们的解答问题梳理先到这里了,通过以上解答,希望能对大家的开发过程提供了帮助,减少问题,提高开发效率! 0 R& ]4 W4 j h' R
" p; T. r9 i" k* n
0 `+ y" i" @! w- h1 n: {% ~- k/ `- l7 R8 g" o s
相关产品: 2 d; I7 Y# l6 ?3 x# c s* n
5 k& k1 I5 s/ h1 o! K2 x$ R
: b; Q3 Y6 b3 n' `- V* X- m+ q
H( T- }3 i3 U! I( _' c |
|