- 积分
- 308
贡献1484
飞刀583 FD
注册时间2015-12-21
在线时间52 小时

扫一扫,手机访问本帖 
|
飞凌嵌入式基于全志系列处理器设计的OKA40i-C开发板、OKT3-C开发板因其接口丰富、低功耗、系统集成度高等特点,深受广大用户赞誉。 9 O0 r7 b8 I9 q5 u: W
/ U' f, L9 X! _/ v* z
小编通过对飞凌技术服务部“A40i/T3客户群问题解决库”进行检索,梳理了部分共性问题及解决思路。本文主要对OKA40i-C开发板/OKT3-C开发板CAN功能使用过程中多次遇到的问题进行讲解。
5 V! H$ X6 @0 _9 m, ^- K0 i1 i. I7 [7 e' i8 ?
由于全志 A40i/T3 CPU 中未包含CAN控制器,而在实际使用过程中,如果用到CAN功能,通常会采用SPI转CAN的方式。在此之前飞凌已经提供了OKA40i-C开发板/OKT3-C开发板对CAN的支持方法(参考链接: 研发干货丨A40i/T3对CAN的支持 点击查询),本文就不在做赘述,仅针对用户在实际操作过程中遇到的问题提供解决思路,请跟着小编来一起看看吧。
; n$ S2 f" W) H! }# Y
" ?* X6 v$ L6 O- ]+ E 一、中断引脚怎么如何选择?
% P- |( T# F) Y9 R" N3 v, U+ r 在选择复用引脚时,需要给SPI转CAN模块选择一个中断引脚,而FETA40i-C/FETT3-C核心板并非每个引脚都具有中断功能,需要在《引脚复用对照表》中进行筛选,选择带有中断功能的GPIO。
# A5 x* ?. J+ v- t* R" k 首先需要确定哪些引脚具有中断功能,表格中引脚可复用功能中具有EINT*的引脚是具有中断功能的。我们可以从这些引脚中选择一个作为SPI转CAN模块的中断引脚,选择时注意这些引脚原本是什么功能,选择一个不需要的功能引脚作为SPI转CAN模块的中断引脚,
# q( g& {8 @9 h2 l" Q( ?0 H$ Z 比如下图是我们的方案中选用的PH6这个引脚。 . a& u' g6 S/ |$ d# M; a
% X' k. A. G& d/ p# T; u , K6 c7 \" B9 {9 j
# }/ U+ D: O0 b6 q! K7 K* _! E; u
3 t0 ^: U1 ^, P6 Q6 S6 A
二、 哪些引脚可以用作SPI功能? ( _2 m6 X# t& Y' D
1)开发板默认SPI功能的引脚在OKA40i-C开发板/OKT3-C开发板上,默认引出了SPI0和SPI2两组引脚,可以选择这两组引脚。需要注意的是这两组信号默认为1.8V,需要硬件上做电平转换为3.3V才能用于SPI转CAN的设置。
0 O5 R0 H" \' v5 w+ a
) M' Y, w4 n o/ L! p+ T
( O9 O: P" G$ Z/ p 这两组引脚在fex文件里已经做了配置,只需要按照方法做其它修改即可。 ' o w( ~) F+ A9 d* V G8 k
8 H2 s9 ~& B- R, g
2)将其它功能引脚复用为SPI功能在飞凌嵌入式《A40i/T3对CAN的支持》(点击查询)一文中详细讲解了如何将开发板上UART2功能相关的引脚复用为了SPI。
6 z6 z: Q3 @/ f% `7 B$ M/ W 假如不想使用UART2引脚复用又不知道如何选择的话,飞凌嵌入式全志A40、全志T3 用户资料中提供了《引脚复用对照表》,从中查询哪些引脚可以复用为SPI功能,然后根据实际需求去选择要复用的引脚。 $ C% q# X: b9 u
查找时请先检索需要使用的功能“关键词”,比如需要SPI功能,请检索“SPI”,找到可复用成SPI功能的引脚,当前表格中默认功能列是引脚名称,功能选择列是默认配置的功能,
+ Q9 E; c) Z$ l/ | N) l 例如PI16、PI17、PI18、PI19四个引脚,可以复用成SPI1,默认是UART2功能。 + I- a( q- a2 E; W" x
& f1 \0 m# }( t- \4 E2 ^7 X% ]
* I: P; T$ y9 i* ?7 x. M F+ a2 } ! U, P9 p: D8 I; x% m1 l2 x
3 H; U2 v3 j2 a2 i, M
' \; J: w( D: A; J 三、iproute配置繁琐 6 z% F% _" k8 S2 O4 {9 g* `
iproute需要在Buildroot里配置,需要编译Buildroot重新生成文件系统,过程太麻烦?
3 E3 W- C' {0 ]$ @ h0 u+ ?iproute是一个网络管理工具,在设置波特率时有用到。如果使用飞凌嵌入式2020.08.31及之后提供的全志A40i及全志T3开发板资料,Buildroot已经配置完成,可以忽略该步操作,不用重新编译Buildroot,只需按照方法做好其它配置就可以了!这样可以减少一些不必要的编译问题,更快速的完成相关配置!
o% S/ G' e/ t3 k1 b6 p
! t) ]; H2 j: U" c2 w 当然,也可以单独下载源码编译, 1 K% y+ Y( G( {2 q. h) b5 E
下载链接:https://mirrors.edge.kernel.org/pub/linux/utils/net/iproute2/ & D, s% r- K) K- S$ f/ Z. I7 B
例:
9 H8 b4 l0 V% N' i 下载iproute2-4.10.0.tar.gz
7 u/ O: u+ c1 i: Z3 Z* A7 t解压源码,修改Makefile文件中的交叉编译器 0 A+ x+ ^! C7 m- x
指定CC=arm-linux-gnueabihf-gcc-5.3.1
* z3 }9 _# C2 b8 \. T执行make编译,在ip文件夹中得到程序ip。
( z5 N5 ]0 z. E: R9 n. F, o, |
四、数据丢帧问题A
( Y0 X' ^" n# L. I6 U+ e/ X通过SPI转CAN实现的CAN功能,相对于原生CAN的性能有一定的不足,在500K波特率下外部设备单次发送多帧数据,接收数据时可能出现丢帧现象,频繁收发数据可能出现丢帧现象,为解决这一问题,需要取消CPUIdle Driver for Sunxiprocessors选项,在飞凌嵌入式提供的最新全志A40i及T3的资料源码中已经做了重新配置!
7 u' i1 ~1 J8 y: y, h b 如果您使用的不是最新资料, ' f h' ~8 ?# A7 B4 T* C% a) c
可以在源码中linux-3.10目录下执行makemenuconfig ARCH=arm
9 `: Z9 y6 F6 z! ]将[] CPU Idle Driver for Sunxi processors的编译去掉 8 Y/ a; S3 p5 h, e3 i
CPU Power Management --->' @+ B' h" _# m9 b, N% x( s
[ ] CPU Idle Driver for Sunxi processors ! ]9 Z# K9 n4 h0 p7 [, u
1 ]& b; `3 k+ i! t% N, V8 L `# d* J( Y8 M: ]
2 g5 p6 S2 v* a本次我们的解答问题梳理先到这里了,通过以上解答,希望能对大家的开发过程提供了帮助,减少问题,提高开发效率!
9 i+ o" Y+ T6 e
3 v6 L# t4 R7 C" e6 h; U+ }/ Y! K/ ~# I3 G6 F# F; @5 X! o
) ]8 c$ K; O) t0 e3 D8 v相关产品:
$ H6 t% ]$ c1 B# t3 p I/ h4 r" x& }
1 w, j6 M. |0 d* \9 M5 ?3 |+ E
. n! j6 W' ?3 V' f) l
; ~$ [* o* A. J0 A' ~4 ~ |
|