- 积分
- 297
贡献1423
飞刀567 FD
注册时间2015-12-21
在线时间50 小时

扫一扫,手机访问本帖 
|
飞凌嵌入式基于全志系列处理器设计的OKA40i-C开发板、OKT3-C开发板因其接口丰富、低功耗、系统集成度高等特点,深受广大用户赞誉。 " E( Z0 m3 ^7 d7 F2 v& W
; Z9 H( }- Q b% i" t6 \ 小编通过对飞凌技术服务部“A40i/T3客户群问题解决库”进行检索,梳理了部分共性问题及解决思路。本文主要对OKA40i-C开发板/OKT3-C开发板CAN功能使用过程中多次遇到的问题进行讲解。
! q; R$ c& y9 W8 n: w/ d/ n
- K4 k. u! C. f+ M/ H+ Q 由于全志 A40i/T3 CPU 中未包含CAN控制器,而在实际使用过程中,如果用到CAN功能,通常会采用SPI转CAN的方式。在此之前飞凌已经提供了OKA40i-C开发板/OKT3-C开发板对CAN的支持方法(参考链接: 研发干货丨A40i/T3对CAN的支持 点击查询),本文就不在做赘述,仅针对用户在实际操作过程中遇到的问题提供解决思路,请跟着小编来一起看看吧。
8 }9 d# n S1 ^' x0 _& ]+ l
8 @8 y B; S3 `; E& N 一、中断引脚怎么如何选择?
3 S- X! \: Z$ y9 b& F0 S 在选择复用引脚时,需要给SPI转CAN模块选择一个中断引脚,而FETA40i-C/FETT3-C核心板并非每个引脚都具有中断功能,需要在《引脚复用对照表》中进行筛选,选择带有中断功能的GPIO。 6 I2 W7 t: ~/ |; ?) R
首先需要确定哪些引脚具有中断功能,表格中引脚可复用功能中具有EINT*的引脚是具有中断功能的。我们可以从这些引脚中选择一个作为SPI转CAN模块的中断引脚,选择时注意这些引脚原本是什么功能,选择一个不需要的功能引脚作为SPI转CAN模块的中断引脚, ! u# O7 L1 w+ \3 ]& \
比如下图是我们的方案中选用的PH6这个引脚。
) D; R: E- F N1 F4 A9 |+ j; e% d; D8 X4 f, q
4 r& j' W. I/ y- |8 }: V
6 n6 L) p7 m& r) o; E
: u c+ D8 W9 m& p 二、 哪些引脚可以用作SPI功能?
) l- ]9 K( V4 V" A1)开发板默认SPI功能的引脚在OKA40i-C开发板/OKT3-C开发板上,默认引出了SPI0和SPI2两组引脚,可以选择这两组引脚。需要注意的是这两组信号默认为1.8V,需要硬件上做电平转换为3.3V才能用于SPI转CAN的设置。
' v+ {5 h4 s- I" F, r G, `* V
' ?, s+ y" X$ c% L& g# R4 ?: v$ _, b' w9 b" f u9 s
这两组引脚在fex文件里已经做了配置,只需要按照方法做其它修改即可。
9 Q- _9 [+ i- i8 z; j- D1 W
; K1 q# S' O2 R; }2)将其它功能引脚复用为SPI功能在飞凌嵌入式《A40i/T3对CAN的支持》(点击查询)一文中详细讲解了如何将开发板上UART2功能相关的引脚复用为了SPI。 - L; B" o O4 c9 C# T0 v
假如不想使用UART2引脚复用又不知道如何选择的话,飞凌嵌入式全志A40、全志T3 用户资料中提供了《引脚复用对照表》,从中查询哪些引脚可以复用为SPI功能,然后根据实际需求去选择要复用的引脚。 : d' i w0 o% P' n# B
查找时请先检索需要使用的功能“关键词”,比如需要SPI功能,请检索“SPI”,找到可复用成SPI功能的引脚,当前表格中默认功能列是引脚名称,功能选择列是默认配置的功能, @6 w% W$ @0 {
例如PI16、PI17、PI18、PI19四个引脚,可以复用成SPI1,默认是UART2功能。
# ^: i1 ~' v0 H+ W# Q6 m+ B( C( n
9 g' P$ N0 O+ i 8 q; _# `- g3 s
- L! h, i$ ~/ V0 A+ I. f( `
5 R y7 J4 B0 p/ W
2 h7 x+ m2 G" q* H& a 三、iproute配置繁琐 4 @0 _1 u5 k- S. D# q n) j
iproute需要在Buildroot里配置,需要编译Buildroot重新生成文件系统,过程太麻烦? 8 q& Z! V5 U0 h) K/ N
iproute是一个网络管理工具,在设置波特率时有用到。如果使用飞凌嵌入式2020.08.31及之后提供的全志A40i及全志T3开发板资料,Buildroot已经配置完成,可以忽略该步操作,不用重新编译Buildroot,只需按照方法做好其它配置就可以了!这样可以减少一些不必要的编译问题,更快速的完成相关配置!
2 \" M8 b" F0 z% f
! n! G, v0 q3 s/ J( y+ ~ 当然,也可以单独下载源码编译, 7 ?2 o2 p9 w6 x/ X; X' _
下载链接:https://mirrors.edge.kernel.org/pub/linux/utils/net/iproute2/ % M/ ^# k$ s! r8 D0 m
例: " p* E* ]7 I$ V& S9 r/ W
下载iproute2-4.10.0.tar.gz
! P5 n" K3 y0 m9 P9 `解压源码,修改Makefile文件中的交叉编译器
; D0 |& F+ e, G9 {, Z6 q 指定CC=arm-linux-gnueabihf-gcc-5.3.1
2 a/ |, ?# q& ~; l+ ~- ~" O, Z执行make编译,在ip文件夹中得到程序ip。 ; [& S( R3 L2 s s1 ^
9 B9 T5 Z# Z J; [0 j; y
四、数据丢帧问题A
! h8 d1 o2 I# D0 G( ~通过SPI转CAN实现的CAN功能,相对于原生CAN的性能有一定的不足,在500K波特率下外部设备单次发送多帧数据,接收数据时可能出现丢帧现象,频繁收发数据可能出现丢帧现象,为解决这一问题,需要取消CPUIdle Driver for Sunxiprocessors选项,在飞凌嵌入式提供的最新全志A40i及T3的资料源码中已经做了重新配置! 8 g$ F7 C6 j* v7 e3 Y4 r& A
如果您使用的不是最新资料,
& ?, E7 E0 K7 c' K% ^0 B 可以在源码中linux-3.10目录下执行makemenuconfig ARCH=arm
! j# g# d3 M5 ~& h0 D将[] CPU Idle Driver for Sunxi processors的编译去掉
& v2 K7 C5 U' f# tCPU Power Management --->, m3 J8 C" q: z
[ ] CPU Idle Driver for Sunxi processors
5 M/ `4 @$ ]! b- ~- K6 ^
5 _1 ]* R5 u" ]6 ]% X
* V- o' k2 ~: D1 o( D! P
) @; W- Q6 M. {" D9 t/ g本次我们的解答问题梳理先到这里了,通过以上解答,希望能对大家的开发过程提供了帮助,减少问题,提高开发效率!
+ z0 \ R& g) a& U: d6 R4 X' o; O
4 t/ `' ]4 ?5 a* A2 H# Q- c$ I5 K6 v
* Y( w' j/ W8 A/ c$ E7 x6 O4 L( u9 ^" s; y1 R* N
相关产品: ; A8 l( L/ W9 W6 a. B. `3 R
' \- A- \- u7 _2 ]+ b
8 I* y; V( T7 P7 x% @5 D2 S
/ l! |& E! s7 U, F9 V |
|