- 积分
- 295
贡献1408
飞刀561 FD
注册时间2015-12-21
在线时间50 小时

扫一扫,手机访问本帖 
|
飞凌嵌入式基于全志系列处理器设计的OKA40i-C开发板、OKT3-C开发板因其接口丰富、低功耗、系统集成度高等特点,深受广大用户赞誉。
5 v$ G& o. q K 2 ^0 `6 p9 k1 {( q& Q! v
小编通过对飞凌技术服务部“A40i/T3客户群问题解决库”进行检索,梳理了部分共性问题及解决思路。本文主要对OKA40i-C开发板/OKT3-C开发板CAN功能使用过程中多次遇到的问题进行讲解。 7 j) l* r k, S1 z0 Q q
0 d. s$ {/ _# S6 s 由于全志 A40i/T3 CPU 中未包含CAN控制器,而在实际使用过程中,如果用到CAN功能,通常会采用SPI转CAN的方式。在此之前飞凌已经提供了OKA40i-C开发板/OKT3-C开发板对CAN的支持方法(参考链接: 研发干货丨A40i/T3对CAN的支持 点击查询),本文就不在做赘述,仅针对用户在实际操作过程中遇到的问题提供解决思路,请跟着小编来一起看看吧。 3 I( F6 o O+ |, V3 d5 B
5 q4 g0 z% m' m R! `1 g 一、中断引脚怎么如何选择?
9 w1 a5 n% [5 h4 ] 在选择复用引脚时,需要给SPI转CAN模块选择一个中断引脚,而FETA40i-C/FETT3-C核心板并非每个引脚都具有中断功能,需要在《引脚复用对照表》中进行筛选,选择带有中断功能的GPIO。
( S# q0 y* v$ t a+ l 首先需要确定哪些引脚具有中断功能,表格中引脚可复用功能中具有EINT*的引脚是具有中断功能的。我们可以从这些引脚中选择一个作为SPI转CAN模块的中断引脚,选择时注意这些引脚原本是什么功能,选择一个不需要的功能引脚作为SPI转CAN模块的中断引脚, 1 ?- v" A2 H8 f! `/ Y( e$ l
比如下图是我们的方案中选用的PH6这个引脚。 * Y" o+ t' r/ ]* [) B4 _3 k
% a* Q5 M# q$ @3 A | l
V1 A4 Z0 v v' r+ w
- H; S7 V* @* L; g9 z) m
' \( e4 Q: O# f7 h1 ~ 二、 哪些引脚可以用作SPI功能?
- [& X8 r8 p5 \( _! s) m1)开发板默认SPI功能的引脚在OKA40i-C开发板/OKT3-C开发板上,默认引出了SPI0和SPI2两组引脚,可以选择这两组引脚。需要注意的是这两组信号默认为1.8V,需要硬件上做电平转换为3.3V才能用于SPI转CAN的设置。
+ I" J5 b" J# ]$ E7 j 5 \6 M7 n, @) w# Z3 e
?% w9 e6 B4 \' m. m
这两组引脚在fex文件里已经做了配置,只需要按照方法做其它修改即可。 + X- a# f5 g! e0 y! g
+ @/ a1 o) p6 k) ` i. }7 d* b2)将其它功能引脚复用为SPI功能在飞凌嵌入式《A40i/T3对CAN的支持》(点击查询)一文中详细讲解了如何将开发板上UART2功能相关的引脚复用为了SPI。
/ @. D! ?2 l' t0 W 假如不想使用UART2引脚复用又不知道如何选择的话,飞凌嵌入式全志A40、全志T3 用户资料中提供了《引脚复用对照表》,从中查询哪些引脚可以复用为SPI功能,然后根据实际需求去选择要复用的引脚。
k y* V. x% k V/ {3 x 查找时请先检索需要使用的功能“关键词”,比如需要SPI功能,请检索“SPI”,找到可复用成SPI功能的引脚,当前表格中默认功能列是引脚名称,功能选择列是默认配置的功能,
( T; o% v( c; Q* o' Z 例如PI16、PI17、PI18、PI19四个引脚,可以复用成SPI1,默认是UART2功能。 , H* G! U5 w! R6 X
( I$ D0 i' k# z' P& H
; H: m5 t# f; w$ t
/ {8 O' Q7 M* u/ i) ~7 b# O : x4 q) s8 }+ s6 i/ v4 }0 S, K
7 x7 w! h* K9 o+ v9 F- U
三、iproute配置繁琐 5 e0 X) C0 T" P8 I# t# l0 U- H, Q
iproute需要在Buildroot里配置,需要编译Buildroot重新生成文件系统,过程太麻烦?
6 \) P# K+ ]7 |/ Riproute是一个网络管理工具,在设置波特率时有用到。如果使用飞凌嵌入式2020.08.31及之后提供的全志A40i及全志T3开发板资料,Buildroot已经配置完成,可以忽略该步操作,不用重新编译Buildroot,只需按照方法做好其它配置就可以了!这样可以减少一些不必要的编译问题,更快速的完成相关配置! + g5 V4 H3 a( k
, C/ k/ m1 k( | 当然,也可以单独下载源码编译,
$ ]; A8 }" f v9 X# C 下载链接:https://mirrors.edge.kernel.org/pub/linux/utils/net/iproute2/ ( ~( s+ i+ H5 h5 `
例:
- Y9 E/ w3 S$ T 下载iproute2-4.10.0.tar.gz
3 C; ^. R Y% O, ]! n解压源码,修改Makefile文件中的交叉编译器 ( \5 r3 T, x, O; c
指定CC=arm-linux-gnueabihf-gcc-5.3.1 2 a0 n; O% F5 p0 [
执行make编译,在ip文件夹中得到程序ip。
4 x- r, l/ T! x& ~; Z; {5 S* ]( w: G: _+ ]3 q2 Z
四、数据丢帧问题A # T8 y$ E& M6 C+ c# R: g- S- e2 a
通过SPI转CAN实现的CAN功能,相对于原生CAN的性能有一定的不足,在500K波特率下外部设备单次发送多帧数据,接收数据时可能出现丢帧现象,频繁收发数据可能出现丢帧现象,为解决这一问题,需要取消CPUIdle Driver for Sunxiprocessors选项,在飞凌嵌入式提供的最新全志A40i及T3的资料源码中已经做了重新配置! , ]. M) s$ v! ~& d8 O* s
如果您使用的不是最新资料,
! D* o7 M4 c! Y* u8 [+ [, i3 }% k 可以在源码中linux-3.10目录下执行makemenuconfig ARCH=arm ( H. F6 B2 {4 R& U
将[] CPU Idle Driver for Sunxi processors的编译去掉
$ ^ H1 M$ ?+ |. q1 O' L4 R& PCPU Power Management --->
5 _6 `8 d8 L p4 ]7 m [ ] CPU Idle Driver for Sunxi processors 1 T' o5 L" [( u2 @) |- V, H
# _0 Q% j M5 W
6 H" M# l$ a' t5 h- y7 g" u$ G/ P2 M! z# P
本次我们的解答问题梳理先到这里了,通过以上解答,希望能对大家的开发过程提供了帮助,减少问题,提高开发效率! ( i |6 u# X' d9 m; k7 `
* {1 W3 j- V0 _4 ]4 @
) b' B% v& P0 Y+ ^ j+ [
- Z8 |1 q. d, r. I( M% Y/ m, V
相关产品: ) _7 z* K7 c; G' h0 q
- P" d9 a8 F' c0 t0 ~, K8 H& m
" Z$ |, e+ }2 ~3 F
" F. k N$ Z5 @) s
|
|