- 积分
- 305
贡献1464
飞刀575 FD
注册时间2015-12-21
在线时间51 小时

扫一扫,手机访问本帖 
|
飞凌嵌入式基于全志系列处理器设计的OKA40i-C开发板、OKT3-C开发板因其接口丰富、低功耗、系统集成度高等特点,深受广大用户赞誉。
& R2 b8 C9 z. N+ w3 u9 s + t. H0 W) B% @( T
小编通过对飞凌技术服务部“A40i/T3客户群问题解决库”进行检索,梳理了部分共性问题及解决思路。本文主要对OKA40i-C开发板/OKT3-C开发板CAN功能使用过程中多次遇到的问题进行讲解。 , o. b$ F6 M) ?3 C% h: N# I
' `% k$ Y% i5 J+ W! ^ 由于全志 A40i/T3 CPU 中未包含CAN控制器,而在实际使用过程中,如果用到CAN功能,通常会采用SPI转CAN的方式。在此之前飞凌已经提供了OKA40i-C开发板/OKT3-C开发板对CAN的支持方法(参考链接: 研发干货丨A40i/T3对CAN的支持 点击查询),本文就不在做赘述,仅针对用户在实际操作过程中遇到的问题提供解决思路,请跟着小编来一起看看吧。
6 Q3 b2 }* i5 {9 e( _# Q7 l" _( t3 H3 L
一、中断引脚怎么如何选择? 6 ^; W) F% V% l' P1 \1 v
在选择复用引脚时,需要给SPI转CAN模块选择一个中断引脚,而FETA40i-C/FETT3-C核心板并非每个引脚都具有中断功能,需要在《引脚复用对照表》中进行筛选,选择带有中断功能的GPIO。
1 `$ y0 W, U; R% I7 `1 h# S) { 首先需要确定哪些引脚具有中断功能,表格中引脚可复用功能中具有EINT*的引脚是具有中断功能的。我们可以从这些引脚中选择一个作为SPI转CAN模块的中断引脚,选择时注意这些引脚原本是什么功能,选择一个不需要的功能引脚作为SPI转CAN模块的中断引脚, * ^+ H! K% b, {" K- s
比如下图是我们的方案中选用的PH6这个引脚。
& ^' U1 s& Q, T4 M4 {( o$ a7 [+ G$ X4 z$ b& h' s7 D5 V$ ]
3 B' h9 W# q% Y1 Z$ T: K
8 ]( I7 p4 z1 q. y, w; G8 ?8 h
( X; @# ]% ^% c- q& X
二、 哪些引脚可以用作SPI功能? # i- }" y0 S" O9 w9 f5 c
1)开发板默认SPI功能的引脚在OKA40i-C开发板/OKT3-C开发板上,默认引出了SPI0和SPI2两组引脚,可以选择这两组引脚。需要注意的是这两组信号默认为1.8V,需要硬件上做电平转换为3.3V才能用于SPI转CAN的设置。 7 ? V7 N: k( E9 I" ]
. z$ g$ f5 ]+ F' U8 j7 h& g* v" z4 h/ p, f
这两组引脚在fex文件里已经做了配置,只需要按照方法做其它修改即可。 : |( v+ @! L7 G. m
2 A# G/ D, G1 S2)将其它功能引脚复用为SPI功能在飞凌嵌入式《A40i/T3对CAN的支持》(点击查询)一文中详细讲解了如何将开发板上UART2功能相关的引脚复用为了SPI。 * ?/ g$ @( e( \' V
假如不想使用UART2引脚复用又不知道如何选择的话,飞凌嵌入式全志A40、全志T3 用户资料中提供了《引脚复用对照表》,从中查询哪些引脚可以复用为SPI功能,然后根据实际需求去选择要复用的引脚。
( v% ^; d0 i! P; |9 y2 o& b& G 查找时请先检索需要使用的功能“关键词”,比如需要SPI功能,请检索“SPI”,找到可复用成SPI功能的引脚,当前表格中默认功能列是引脚名称,功能选择列是默认配置的功能, & _6 a( F! n" F% m* N$ c% W4 O
例如PI16、PI17、PI18、PI19四个引脚,可以复用成SPI1,默认是UART2功能。
3 j7 p2 `4 x% F! }3 D! `* T1 Q* w5 w# h# c( T$ ]6 ^2 i
& Q7 S, Y- `5 G1 [9 a' H) `
: C# U( p8 I' t9 c6 W$ O
* F+ [/ {$ \- u8 O9 S% C) Y
" F9 e# Q% [! y+ v 三、iproute配置繁琐 : | H X6 F$ a( c7 w7 q
iproute需要在Buildroot里配置,需要编译Buildroot重新生成文件系统,过程太麻烦? 7 R) S8 j* B6 `( n2 v0 O
iproute是一个网络管理工具,在设置波特率时有用到。如果使用飞凌嵌入式2020.08.31及之后提供的全志A40i及全志T3开发板资料,Buildroot已经配置完成,可以忽略该步操作,不用重新编译Buildroot,只需按照方法做好其它配置就可以了!这样可以减少一些不必要的编译问题,更快速的完成相关配置! 5 ?! M$ J5 F* c1 W% S$ h7 F% E
7 w2 r. _, w( c0 z
当然,也可以单独下载源码编译, 6 q; l' L$ y; y
下载链接:https://mirrors.edge.kernel.org/pub/linux/utils/net/iproute2/
0 `/ K' e8 ?0 Z5 K* e2 w) H& L+ f& m. E, z例:
$ n4 k! C8 G) P* @6 Z) r 下载iproute2-4.10.0.tar.gz & b- G) C' I' M3 J4 C3 b
解压源码,修改Makefile文件中的交叉编译器 ; |9 z, V1 Q4 g$ r+ Y5 Q9 L+ T
指定CC=arm-linux-gnueabihf-gcc-5.3.1 / p: E2 P6 g, L a+ U1 w" c
执行make编译,在ip文件夹中得到程序ip。 ) q/ a/ t4 b* K, `: @
( ?, A5 }, |2 M( U3 F
四、数据丢帧问题A
x& H+ _5 M) g) f4 N通过SPI转CAN实现的CAN功能,相对于原生CAN的性能有一定的不足,在500K波特率下外部设备单次发送多帧数据,接收数据时可能出现丢帧现象,频繁收发数据可能出现丢帧现象,为解决这一问题,需要取消CPUIdle Driver for Sunxiprocessors选项,在飞凌嵌入式提供的最新全志A40i及T3的资料源码中已经做了重新配置! 9 L |) W& I! b! S$ \9 b
如果您使用的不是最新资料,
/ E4 ]- f: u8 l, J) q* c 可以在源码中linux-3.10目录下执行makemenuconfig ARCH=arm
( J4 `( a% F8 q8 @; w; X, z将[] CPU Idle Driver for Sunxi processors的编译去掉 ( {9 J p5 ~! B7 r8 E
CPU Power Management --->& E! C' }( @8 S: A& l! L
[ ] CPU Idle Driver for Sunxi processors
- [8 {* Q4 c! M& J# V' S
5 m6 I/ D- C5 f( {, [3 s1 D# Y6 j- d. x7 c' {1 X
9 |& R4 t [) i6 E7 |" o! L: w
本次我们的解答问题梳理先到这里了,通过以上解答,希望能对大家的开发过程提供了帮助,减少问题,提高开发效率! " z0 |' i) r0 O( f& S
$ s" }3 E" |0 v; ? g% b
* b; u- B& `) ] ], L$ h0 E7 X4 v! L4 j- X, l" ~
相关产品:
+ K/ ?! y* N8 m! R% B7 m+ E6 O5 L7 m# Y- y* [* q; q+ n
9 {# I1 R% _! z# ~5 \' x. r8 \0 C$ H8 Y* M( n" ]) J
|
|