- 积分
- 300
贡献1443
飞刀569 FD
注册时间2015-12-21
在线时间50 小时

扫一扫,手机访问本帖 
|
飞凌嵌入式基于全志系列处理器设计的OKA40i-C开发板、OKT3-C开发板因其接口丰富、低功耗、系统集成度高等特点,深受广大用户赞誉。 . {* \! C$ E6 s, Y( T
( \. T" D& K. C 小编通过对飞凌技术服务部“A40i/T3客户群问题解决库”进行检索,梳理了部分共性问题及解决思路。本文主要对OKA40i-C开发板/OKT3-C开发板CAN功能使用过程中多次遇到的问题进行讲解。 # c$ W: j! C& b0 R J
( R/ K: s, U7 ? H" Z
由于全志 A40i/T3 CPU 中未包含CAN控制器,而在实际使用过程中,如果用到CAN功能,通常会采用SPI转CAN的方式。在此之前飞凌已经提供了OKA40i-C开发板/OKT3-C开发板对CAN的支持方法(参考链接: 研发干货丨A40i/T3对CAN的支持 点击查询),本文就不在做赘述,仅针对用户在实际操作过程中遇到的问题提供解决思路,请跟着小编来一起看看吧。
1 h1 |% Q9 [ ], q7 Y0 S0 {3 M% V' s* m8 W
一、中断引脚怎么如何选择?
! e- b% ?1 O# q! z" U# R) O7 a 在选择复用引脚时,需要给SPI转CAN模块选择一个中断引脚,而FETA40i-C/FETT3-C核心板并非每个引脚都具有中断功能,需要在《引脚复用对照表》中进行筛选,选择带有中断功能的GPIO。 4 [. P. I& g& W& s7 [6 j
首先需要确定哪些引脚具有中断功能,表格中引脚可复用功能中具有EINT*的引脚是具有中断功能的。我们可以从这些引脚中选择一个作为SPI转CAN模块的中断引脚,选择时注意这些引脚原本是什么功能,选择一个不需要的功能引脚作为SPI转CAN模块的中断引脚,
* O) j9 c" D7 t4 t 比如下图是我们的方案中选用的PH6这个引脚。
* \" l+ s, N4 M. E* l$ q: L" i8 i$ N+ z1 m) H- d6 o Z( S! l
# R |. y8 C8 g3 {7 e- E) b
/ Q3 r# c& x+ [) U6 y; O* z2 e- @* V
: e/ O0 ?+ c5 }7 n; R! H
二、 哪些引脚可以用作SPI功能? ; O1 c, s6 A ^) c8 Y* I& E
1)开发板默认SPI功能的引脚在OKA40i-C开发板/OKT3-C开发板上,默认引出了SPI0和SPI2两组引脚,可以选择这两组引脚。需要注意的是这两组信号默认为1.8V,需要硬件上做电平转换为3.3V才能用于SPI转CAN的设置。
! a( E- g9 R3 M
5 N/ T0 N2 @6 ^8 e9 }0 } [2 Y* W. e1 }' f T9 }4 X; o
这两组引脚在fex文件里已经做了配置,只需要按照方法做其它修改即可。
5 U0 A! n8 b$ H" V1 h5 m+ K N& u* s# a4 F! `* H3 _( B
2)将其它功能引脚复用为SPI功能在飞凌嵌入式《A40i/T3对CAN的支持》(点击查询)一文中详细讲解了如何将开发板上UART2功能相关的引脚复用为了SPI。
; }8 ^3 u0 z/ @9 d2 D$ I Y 假如不想使用UART2引脚复用又不知道如何选择的话,飞凌嵌入式全志A40、全志T3 用户资料中提供了《引脚复用对照表》,从中查询哪些引脚可以复用为SPI功能,然后根据实际需求去选择要复用的引脚。
6 s3 p& }7 o/ G8 O' J4 Z8 r$ j 查找时请先检索需要使用的功能“关键词”,比如需要SPI功能,请检索“SPI”,找到可复用成SPI功能的引脚,当前表格中默认功能列是引脚名称,功能选择列是默认配置的功能, / q, B$ x1 l' x! H1 e" P, V5 o
例如PI16、PI17、PI18、PI19四个引脚,可以复用成SPI1,默认是UART2功能。 0 s- L. t4 l: i! ?* L" J
! C4 I0 h% `1 r$ d( ]! M- _
) C+ W1 m+ H. V+ h% y5 M
: d( J7 {: F; s
2 M# S( W$ L. ]) t% k$ {
* D) F1 K( n, q5 \1 q- }* v 三、iproute配置繁琐
8 X: d; I+ x" E8 Liproute需要在Buildroot里配置,需要编译Buildroot重新生成文件系统,过程太麻烦? 0 q+ m8 S, y2 ?! D/ V
iproute是一个网络管理工具,在设置波特率时有用到。如果使用飞凌嵌入式2020.08.31及之后提供的全志A40i及全志T3开发板资料,Buildroot已经配置完成,可以忽略该步操作,不用重新编译Buildroot,只需按照方法做好其它配置就可以了!这样可以减少一些不必要的编译问题,更快速的完成相关配置!
( X; _3 w' K0 ?; e# m- h' C8 {8 l
1 ]6 M, [- k# S: r) J6 M, q 当然,也可以单独下载源码编译,
% {! s- R- t! N3 e' y+ O& | 下载链接:https://mirrors.edge.kernel.org/pub/linux/utils/net/iproute2/ ) C2 W5 @# ?# o
例:
" G8 V0 P: c6 Q8 M 下载iproute2-4.10.0.tar.gz
, }( h7 m: `# n1 ` R6 u) d解压源码,修改Makefile文件中的交叉编译器 9 E0 E0 w+ Q( t* K, M
指定CC=arm-linux-gnueabihf-gcc-5.3.1 : ?) U1 m5 N, p
执行make编译,在ip文件夹中得到程序ip。 9 M! F) T3 Z; l1 [6 T* z! E6 _& d
, R. W& I3 K8 I4 t 四、数据丢帧问题A . V. @$ C c- B& R! t( f
通过SPI转CAN实现的CAN功能,相对于原生CAN的性能有一定的不足,在500K波特率下外部设备单次发送多帧数据,接收数据时可能出现丢帧现象,频繁收发数据可能出现丢帧现象,为解决这一问题,需要取消CPUIdle Driver for Sunxiprocessors选项,在飞凌嵌入式提供的最新全志A40i及T3的资料源码中已经做了重新配置!
6 L# P& Q% H( D) |. d 如果您使用的不是最新资料,
, f# w4 d+ k# ] 可以在源码中linux-3.10目录下执行makemenuconfig ARCH=arm $ e* T' j$ p# ^8 f' b
将[] CPU Idle Driver for Sunxi processors的编译去掉
9 ~6 O- M# D" W, QCPU Power Management --->5 G3 b l" N0 c U* A4 U$ m! X
[ ] CPU Idle Driver for Sunxi processors / Q2 C& E& m! h b: `2 o" h
, p* y: z/ a1 G* N
: g0 ^; [& P! F) t1 Z
0 m4 T: k: V2 a本次我们的解答问题梳理先到这里了,通过以上解答,希望能对大家的开发过程提供了帮助,减少问题,提高开发效率! / j/ q: H, `5 X3 i
2 X% F) @& x) N. [: n) {$ p0 K+ s; D0 y
3 x \1 ?8 B" O; L# |
相关产品: 4 u5 g$ ]- K' @7 W" h$ p! z
+ N7 e9 s! x' [0 d! [; b& W
! r6 u1 W/ y `! \
% V- U/ U8 ?5 H2 P" s C3 ~
|
|