- 积分
- 306
贡献1474
飞刀579 FD
注册时间2015-12-21
在线时间51 小时

扫一扫,手机访问本帖 
|
飞凌嵌入式基于全志系列处理器设计的OKA40i-C开发板、OKT3-C开发板因其接口丰富、低功耗、系统集成度高等特点,深受广大用户赞誉。
( {( ]5 \& j* Y/ e $ z' C8 l8 E- d/ H* l! P
小编通过对飞凌技术服务部“A40i/T3客户群问题解决库”进行检索,梳理了部分共性问题及解决思路。本文主要对OKA40i-C开发板/OKT3-C开发板CAN功能使用过程中多次遇到的问题进行讲解。
5 ]+ a& J5 M$ G
9 {$ D3 ^' J/ h% `( _2 F6 z5 U 由于全志 A40i/T3 CPU 中未包含CAN控制器,而在实际使用过程中,如果用到CAN功能,通常会采用SPI转CAN的方式。在此之前飞凌已经提供了OKA40i-C开发板/OKT3-C开发板对CAN的支持方法(参考链接: 研发干货丨A40i/T3对CAN的支持 点击查询),本文就不在做赘述,仅针对用户在实际操作过程中遇到的问题提供解决思路,请跟着小编来一起看看吧。
8 R1 T, n( ~6 _- j% O" U D* p' Z" K
一、中断引脚怎么如何选择?
& h1 p0 }+ N1 I- |. k' i/ R6 W 在选择复用引脚时,需要给SPI转CAN模块选择一个中断引脚,而FETA40i-C/FETT3-C核心板并非每个引脚都具有中断功能,需要在《引脚复用对照表》中进行筛选,选择带有中断功能的GPIO。 $ l( B2 k0 t0 l' z2 }( _
首先需要确定哪些引脚具有中断功能,表格中引脚可复用功能中具有EINT*的引脚是具有中断功能的。我们可以从这些引脚中选择一个作为SPI转CAN模块的中断引脚,选择时注意这些引脚原本是什么功能,选择一个不需要的功能引脚作为SPI转CAN模块的中断引脚,
# N! s3 Q# [$ l: C* f 比如下图是我们的方案中选用的PH6这个引脚。 & P& k4 r0 _! C7 m3 {4 Y
( y+ R5 ~9 g( n3 u& J3 ]( t6 {. l
8 R% Q9 U6 j( r6 F
6 ?( `0 o. e/ @
4 Q' j: w0 T: g! J# v 二、 哪些引脚可以用作SPI功能?
6 Y8 |9 V& G3 z" p z/ X- Q6 t: J9 p/ [1)开发板默认SPI功能的引脚在OKA40i-C开发板/OKT3-C开发板上,默认引出了SPI0和SPI2两组引脚,可以选择这两组引脚。需要注意的是这两组信号默认为1.8V,需要硬件上做电平转换为3.3V才能用于SPI转CAN的设置。
1 R ^* @- Q5 ]7 V! r ! j& Z! O) m1 v% j- y* i% I" y
3 f9 ~- c# x: w7 p* x5 u% p
这两组引脚在fex文件里已经做了配置,只需要按照方法做其它修改即可。
7 N. ~" S( J% l' G9 h! W' D, K& f: \# p) A# G0 e5 u5 R2 U+ x
2)将其它功能引脚复用为SPI功能在飞凌嵌入式《A40i/T3对CAN的支持》(点击查询)一文中详细讲解了如何将开发板上UART2功能相关的引脚复用为了SPI。 : m6 n. v; ^4 d" Q8 T% {% l
假如不想使用UART2引脚复用又不知道如何选择的话,飞凌嵌入式全志A40、全志T3 用户资料中提供了《引脚复用对照表》,从中查询哪些引脚可以复用为SPI功能,然后根据实际需求去选择要复用的引脚。
2 x% W4 c$ ~. f0 Q) t) [3 e6 I( ^ 查找时请先检索需要使用的功能“关键词”,比如需要SPI功能,请检索“SPI”,找到可复用成SPI功能的引脚,当前表格中默认功能列是引脚名称,功能选择列是默认配置的功能, % l" _; q0 _0 C
例如PI16、PI17、PI18、PI19四个引脚,可以复用成SPI1,默认是UART2功能。
1 u" f' A6 f& A$ X/ q- n$ \" f' ]' k! \" {9 b. P( J7 ?
4 x: |5 A1 q! }( |. D. s
8 G$ C# G- _# J$ v5 |+ _0 u# u 2 ~, d% n: Q$ s2 I" V3 Q
8 C, {% z8 h9 @) y& {. I7 i* q 三、iproute配置繁琐 ! @' f; d0 \8 |% ]( q6 z) z# w0 |& o
iproute需要在Buildroot里配置,需要编译Buildroot重新生成文件系统,过程太麻烦? , i( n, U3 K5 l
iproute是一个网络管理工具,在设置波特率时有用到。如果使用飞凌嵌入式2020.08.31及之后提供的全志A40i及全志T3开发板资料,Buildroot已经配置完成,可以忽略该步操作,不用重新编译Buildroot,只需按照方法做好其它配置就可以了!这样可以减少一些不必要的编译问题,更快速的完成相关配置! ) W5 T$ H1 G8 `0 t
1 S; b) _' }* c7 a0 Q: \/ D
当然,也可以单独下载源码编译, 6 C4 ]* @& f2 }% D" ]+ l. Y3 M, q
下载链接:https://mirrors.edge.kernel.org/pub/linux/utils/net/iproute2/ 5 `0 m- q5 C! U' X1 y* j0 ]$ t) ^- A& g
例:
: E& X* c. W1 L) V! M* N 下载iproute2-4.10.0.tar.gz
7 L: j$ a& W/ C( R% [4 N3 D解压源码,修改Makefile文件中的交叉编译器
N! x/ o! y. ^/ O& Z 指定CC=arm-linux-gnueabihf-gcc-5.3.1 / Z( a, C) \- V! Y8 N `
执行make编译,在ip文件夹中得到程序ip。
3 J- t8 ?# M R+ Z
+ y1 m+ Z' E. U 四、数据丢帧问题A
9 l1 |$ X8 k5 W; l' @( v通过SPI转CAN实现的CAN功能,相对于原生CAN的性能有一定的不足,在500K波特率下外部设备单次发送多帧数据,接收数据时可能出现丢帧现象,频繁收发数据可能出现丢帧现象,为解决这一问题,需要取消CPUIdle Driver for Sunxiprocessors选项,在飞凌嵌入式提供的最新全志A40i及T3的资料源码中已经做了重新配置!
j- y" I5 d" A 如果您使用的不是最新资料, / d' p. z( q/ [! J, d" T
可以在源码中linux-3.10目录下执行makemenuconfig ARCH=arm
/ i: I6 C) L0 H将[] CPU Idle Driver for Sunxi processors的编译去掉 / l/ D( G+ a( E, `3 p8 T
CPU Power Management --->8 O6 F2 Y; d- r! J& h* E8 X6 a" E
[ ] CPU Idle Driver for Sunxi processors ' h/ B5 _: z) N
+ K' V, U9 q# q: [0 o+ K" f- D( @
; N' S- ^/ `& u* | _ @' @
( C7 n/ a# Y4 y4 t2 i本次我们的解答问题梳理先到这里了,通过以上解答,希望能对大家的开发过程提供了帮助,减少问题,提高开发效率!
( }" _ `# S+ X5 B6 ?- B" }2 I: C5 p0 v
4 T0 R7 b/ L; {) F6 T+ Y8 p& a1 _. e9 m9 y s( M
相关产品: $ r: I' Y3 n/ r0 ~7 Y
: }' V& @ u7 }7 Y: j+ c ^5 ^3 ~' N( J5 \+ r. Y
4 u% c2 Z0 |9 T# o |
|