- 积分
- 296
贡献1418
飞刀565 FD
注册时间2015-12-21
在线时间50 小时

扫一扫,手机访问本帖 
|
飞凌嵌入式基于全志系列处理器设计的OKA40i-C开发板、OKT3-C开发板因其接口丰富、低功耗、系统集成度高等特点,深受广大用户赞誉。 + W4 K( L' B* D, C( _
) R) v' E) _- @: J+ T4 ]/ X 小编通过对飞凌技术服务部“A40i/T3客户群问题解决库”进行检索,梳理了部分共性问题及解决思路。本文主要对OKA40i-C开发板/OKT3-C开发板CAN功能使用过程中多次遇到的问题进行讲解。 1 t! j" T7 M9 T2 g
; H/ U4 ^4 v4 L- v* \- w* D% P
由于全志 A40i/T3 CPU 中未包含CAN控制器,而在实际使用过程中,如果用到CAN功能,通常会采用SPI转CAN的方式。在此之前飞凌已经提供了OKA40i-C开发板/OKT3-C开发板对CAN的支持方法(参考链接: 研发干货丨A40i/T3对CAN的支持 点击查询),本文就不在做赘述,仅针对用户在实际操作过程中遇到的问题提供解决思路,请跟着小编来一起看看吧。 $ [ p+ H" m# J$ R
8 K* m0 n' i, v3 H 一、中断引脚怎么如何选择? & c0 i& X" b0 c% V' n
在选择复用引脚时,需要给SPI转CAN模块选择一个中断引脚,而FETA40i-C/FETT3-C核心板并非每个引脚都具有中断功能,需要在《引脚复用对照表》中进行筛选,选择带有中断功能的GPIO。
* L1 i" o2 E% w' V. h 首先需要确定哪些引脚具有中断功能,表格中引脚可复用功能中具有EINT*的引脚是具有中断功能的。我们可以从这些引脚中选择一个作为SPI转CAN模块的中断引脚,选择时注意这些引脚原本是什么功能,选择一个不需要的功能引脚作为SPI转CAN模块的中断引脚,
& R* f/ U" h1 Y/ P; u8 ? 比如下图是我们的方案中选用的PH6这个引脚。
@/ B6 i3 Z+ k: l
" F! r) M8 ?. Q, g- h/ ] 8 R4 H- S3 Z9 e
! D% ^# R& `. J4 [" @, t) j; M. L' I: c) f6 s3 v
二、 哪些引脚可以用作SPI功能? * N9 S# I9 E+ Z& @0 q2 D
1)开发板默认SPI功能的引脚在OKA40i-C开发板/OKT3-C开发板上,默认引出了SPI0和SPI2两组引脚,可以选择这两组引脚。需要注意的是这两组信号默认为1.8V,需要硬件上做电平转换为3.3V才能用于SPI转CAN的设置。 1 Z& B6 t( y3 D- m' H8 a3 ` l
1 H0 l* |( r( r7 A2 M& m- K& H. P) E0 X' o$ v
这两组引脚在fex文件里已经做了配置,只需要按照方法做其它修改即可。
- ?8 ^( p" i% {; [4 e6 G5 ?2 j/ F4 F9 b5 U% w# Q/ z7 m
2)将其它功能引脚复用为SPI功能在飞凌嵌入式《A40i/T3对CAN的支持》(点击查询)一文中详细讲解了如何将开发板上UART2功能相关的引脚复用为了SPI。 % o1 t6 k: F) B" K) w8 f, }% I
假如不想使用UART2引脚复用又不知道如何选择的话,飞凌嵌入式全志A40、全志T3 用户资料中提供了《引脚复用对照表》,从中查询哪些引脚可以复用为SPI功能,然后根据实际需求去选择要复用的引脚。 & W2 @2 t) v+ b+ R
查找时请先检索需要使用的功能“关键词”,比如需要SPI功能,请检索“SPI”,找到可复用成SPI功能的引脚,当前表格中默认功能列是引脚名称,功能选择列是默认配置的功能,
, _4 C& O3 b" l6 @4 F 例如PI16、PI17、PI18、PI19四个引脚,可以复用成SPI1,默认是UART2功能。
: Q, G9 @4 D( ^' Y- U" n$ e# ^0 ]9 s# e; }+ g2 t
3 Q7 ^* A: m: |# Z; z3 i2 J
$ `% n _2 Q* r0 _- O* }! x) n 5 W6 a' l l- B6 `! m* q2 q
' k* n, u7 W4 j/ Q& V A& ]
三、iproute配置繁琐 # [9 M3 W. X1 r; V! a; r
iproute需要在Buildroot里配置,需要编译Buildroot重新生成文件系统,过程太麻烦?
C+ d6 ]8 n W- Piproute是一个网络管理工具,在设置波特率时有用到。如果使用飞凌嵌入式2020.08.31及之后提供的全志A40i及全志T3开发板资料,Buildroot已经配置完成,可以忽略该步操作,不用重新编译Buildroot,只需按照方法做好其它配置就可以了!这样可以减少一些不必要的编译问题,更快速的完成相关配置! ! E- T) O7 t4 G& d( a5 G8 f9 c
2 Y1 z+ U. l, d, \% L& } 当然,也可以单独下载源码编译, + E7 i) c# Y3 v) H+ z$ r9 c
下载链接:https://mirrors.edge.kernel.org/pub/linux/utils/net/iproute2/
" G8 E0 [6 k& {6 _例:
$ M+ k- M* d% W; ]8 U. v 下载iproute2-4.10.0.tar.gz
3 B- z- @5 v# _6 {9 g2 b( M解压源码,修改Makefile文件中的交叉编译器 ) {1 b! E" h" D) J* L
指定CC=arm-linux-gnueabihf-gcc-5.3.1
1 t t" y& P- S4 @" ]) l4 G执行make编译,在ip文件夹中得到程序ip。 / G, |+ @7 M# U9 v
7 B! k- J3 Y$ E 四、数据丢帧问题A % Y9 u, T% t; i
通过SPI转CAN实现的CAN功能,相对于原生CAN的性能有一定的不足,在500K波特率下外部设备单次发送多帧数据,接收数据时可能出现丢帧现象,频繁收发数据可能出现丢帧现象,为解决这一问题,需要取消CPUIdle Driver for Sunxiprocessors选项,在飞凌嵌入式提供的最新全志A40i及T3的资料源码中已经做了重新配置! ! z1 `5 O4 {( p: s1 K6 n# E0 k
如果您使用的不是最新资料, 3 G! Y0 j, I! s" A. \2 m
可以在源码中linux-3.10目录下执行makemenuconfig ARCH=arm
4 |' A2 s# n, U3 k" _+ N将[] CPU Idle Driver for Sunxi processors的编译去掉 ( Y3 K/ P8 t0 P, O" ]4 h: E
CPU Power Management --->: y0 o8 K/ \$ n+ r9 ^6 ]
[ ] CPU Idle Driver for Sunxi processors
6 i2 o' F7 J- ] h3 c' q$ m 4 [0 ]2 d1 X6 I5 ]
' P8 I9 `; L k1 {7 }- i1 B. s1 [5 D
本次我们的解答问题梳理先到这里了,通过以上解答,希望能对大家的开发过程提供了帮助,减少问题,提高开发效率!
3 W- a- E5 y5 `# \1 ^8 x! @8 {' l* S3 {: Z" u7 ]) O! @
7 g' `. F4 b+ }2 }
4 y; C" b" I' x2 V相关产品: ; R7 e4 C$ }- K; p# d
& q5 ?8 [- j3 v& P- {$ }
! y1 S6 D+ F) Y, l" J+ L3 v- K8 K$ V( d* Q% e, `8 P- d3 @# n1 C
|
|