- 积分
- 295
贡献1408
飞刀561 FD
注册时间2015-12-21
在线时间50 小时
扫一扫,手机访问本帖
|
飞凌嵌入式基于全志系列处理器设计的OKA40i-C开发板、OKT3-C开发板因其接口丰富、低功耗、系统集成度高等特点,深受广大用户赞誉。 3 O$ V; q+ {, E+ S$ k) y* M( B
) |- J; d; @: J2 j 小编通过对飞凌技术服务部“A40i/T3客户群问题解决库”进行检索,梳理了部分共性问题及解决思路。本文主要对OKA40i-C开发板/OKT3-C开发板CAN功能使用过程中多次遇到的问题进行讲解。 ; X# P$ f/ c1 T1 O7 y/ G
5 v' V; W) `9 [) o1 ^( n: I. S- T
由于全志 A40i/T3 CPU 中未包含CAN控制器,而在实际使用过程中,如果用到CAN功能,通常会采用SPI转CAN的方式。在此之前飞凌已经提供了OKA40i-C开发板/OKT3-C开发板对CAN的支持方法(参考链接: 研发干货丨A40i/T3对CAN的支持 点击查询),本文就不在做赘述,仅针对用户在实际操作过程中遇到的问题提供解决思路,请跟着小编来一起看看吧。
, c" ~! P- f% ~8 |! K5 U! R* j# c/ U* K
一、中断引脚怎么如何选择?
& x7 W/ \5 c3 v 在选择复用引脚时,需要给SPI转CAN模块选择一个中断引脚,而FETA40i-C/FETT3-C核心板并非每个引脚都具有中断功能,需要在《引脚复用对照表》中进行筛选,选择带有中断功能的GPIO。
. j8 G! `# i8 a* E8 a& y! ~ 首先需要确定哪些引脚具有中断功能,表格中引脚可复用功能中具有EINT*的引脚是具有中断功能的。我们可以从这些引脚中选择一个作为SPI转CAN模块的中断引脚,选择时注意这些引脚原本是什么功能,选择一个不需要的功能引脚作为SPI转CAN模块的中断引脚,
v: ~6 }8 v( r$ O6 H 比如下图是我们的方案中选用的PH6这个引脚。
' I. H# N* {7 K5 E) }* ]4 a) P( o9 c
+ ~8 x2 D9 U3 Z: N, t9 q : q. j5 x: j& u/ f
: {. Q' O5 ]1 Y- J
5 _% U1 U' v+ O, q0 x: {; y 二、 哪些引脚可以用作SPI功能? ! p7 E& Z2 |2 N/ E$ C
1)开发板默认SPI功能的引脚在OKA40i-C开发板/OKT3-C开发板上,默认引出了SPI0和SPI2两组引脚,可以选择这两组引脚。需要注意的是这两组信号默认为1.8V,需要硬件上做电平转换为3.3V才能用于SPI转CAN的设置。
* K0 A( Y: P V3 R/ {8 W+ h ! k9 v. L6 e9 p* r5 W
4 B5 f$ |/ z" @+ j9 j+ C
这两组引脚在fex文件里已经做了配置,只需要按照方法做其它修改即可。
( ^4 C/ I+ L; m
Q: G; h+ k" X! A1 {/ T' b2)将其它功能引脚复用为SPI功能在飞凌嵌入式《A40i/T3对CAN的支持》(点击查询)一文中详细讲解了如何将开发板上UART2功能相关的引脚复用为了SPI。
) C( ~4 a& z k. N6 W6 i 假如不想使用UART2引脚复用又不知道如何选择的话,飞凌嵌入式全志A40、全志T3 用户资料中提供了《引脚复用对照表》,从中查询哪些引脚可以复用为SPI功能,然后根据实际需求去选择要复用的引脚。
O3 z- G. U4 S- ^8 Q2 u( L 查找时请先检索需要使用的功能“关键词”,比如需要SPI功能,请检索“SPI”,找到可复用成SPI功能的引脚,当前表格中默认功能列是引脚名称,功能选择列是默认配置的功能, / Y3 ~) b9 E, B$ g( \5 S
例如PI16、PI17、PI18、PI19四个引脚,可以复用成SPI1,默认是UART2功能。 ' \ i/ R5 [9 _( x# _# V9 ~, b
: x: u* j) R8 `# n* H5 u& ` ' y$ v% r4 j, I! I
0 u' M/ ~8 u! N1 h/ _6 b6 a, n" L
, z) ~8 D* ?% n4 [6 C( C. B$ O p
三、iproute配置繁琐
" v. P% b2 l. I# [# J% siproute需要在Buildroot里配置,需要编译Buildroot重新生成文件系统,过程太麻烦? $ D+ D+ q O$ d- | E" c8 z
iproute是一个网络管理工具,在设置波特率时有用到。如果使用飞凌嵌入式2020.08.31及之后提供的全志A40i及全志T3开发板资料,Buildroot已经配置完成,可以忽略该步操作,不用重新编译Buildroot,只需按照方法做好其它配置就可以了!这样可以减少一些不必要的编译问题,更快速的完成相关配置! # M! L* f' L; n$ g
( ^7 [3 J; u/ S& W. ^( K) _
当然,也可以单独下载源码编译, , B/ A7 N/ Z" g7 }
下载链接:https://mirrors.edge.kernel.org/pub/linux/utils/net/iproute2/ / ^& k; j5 ^, P5 h8 J8 ~
例:
9 b% x4 k$ N. w& z' D 下载iproute2-4.10.0.tar.gz
! \: U; ]2 s& e2 ^解压源码,修改Makefile文件中的交叉编译器 U5 o1 ^, j5 l$ h: K: V
指定CC=arm-linux-gnueabihf-gcc-5.3.1 & @ q5 }$ L) U/ D1 B* D1 a) R& r/ Q
执行make编译,在ip文件夹中得到程序ip。
/ q+ L! [( i2 S0 e T
c$ }- w, R0 Z. x% P 四、数据丢帧问题A 0 f6 Q# q L+ k0 D: [
通过SPI转CAN实现的CAN功能,相对于原生CAN的性能有一定的不足,在500K波特率下外部设备单次发送多帧数据,接收数据时可能出现丢帧现象,频繁收发数据可能出现丢帧现象,为解决这一问题,需要取消CPUIdle Driver for Sunxiprocessors选项,在飞凌嵌入式提供的最新全志A40i及T3的资料源码中已经做了重新配置! ! N6 k5 q7 `) I5 V) N7 N1 J
如果您使用的不是最新资料, - W1 }5 X4 y; z% ?$ @' m$ v; ^+ F% M
可以在源码中linux-3.10目录下执行makemenuconfig ARCH=arm 8 U& T- N, V* w% @6 m3 a
将[] CPU Idle Driver for Sunxi processors的编译去掉 + w3 s, S" }1 m. i
CPU Power Management --->! W" h1 ~! A' k+ k
[ ] CPU Idle Driver for Sunxi processors + U4 U3 I4 y7 F8 y6 e
* a" v/ v6 H! `3 K8 I2 ]. B; G3 Q4 s9 U2 r# _
R3 C {' P+ K) P本次我们的解答问题梳理先到这里了,通过以上解答,希望能对大家的开发过程提供了帮助,减少问题,提高开发效率!
9 y/ Z: }7 F7 u7 O' U/ T; E- j8 S2 U, L* I7 C/ g* ^
/ o x/ f% y* `& K9 f
1 N) L& T% V3 K' n4 `相关产品:
6 t9 B) b# |! i( `" m3 k
, m# ]2 {' ]1 H0 o, A( W
5 Q7 V( J3 {: y% N5 ~( z, K: B% P
( }% Y$ e- j. T \, c6 V9 e |
|