嵌入式爱好者

查看: 11026|回复: 1

[帮助] 新资料丨全志A40i及全志T3开发板 对CAN的支持补充

[复制链接]

46

主题

53

帖子

295

积分

扫一扫,手机访问本帖
发表于 2021-12-10 17:13:01 | 显示全部楼层 |阅读模式
飞凌嵌入式基于全志系列处理器设计的OKA40i-C开发板、OKT3-C开发板因其接口丰富、低功耗、系统集成度高等特点,深受广大用户赞誉。
2 k# r" f- }! P$ d+ {4 i ' r9 ^( P$ \; L- o; r# s/ O
        小编通过对飞凌技术服务部“A40i/T3客户群问题解决库”进行检索,梳理了部分共性问题及解决思路。本文主要对OKA40i-C开发板/OKT3-C开发板CAN功能使用过程中多次遇到的问题进行讲解。 1 Y. u8 N; Z. F1 ^& ~+ U) c
( N8 E$ i  X- m3 g0 O
        由于全志 A40i/T3 CPU 中未包含CAN控制器,而在实际使用过程中,如果用到CAN功能,通常会采用SPI转CAN的方式。在此之前飞凌已经提供了OKA40i-C开发板/OKT3-C开发板对CAN的支持方法(参考链接: 研发干货丨A40i/T3对CAN的支持 点击查询),本文就不在做赘述,仅针对用户在实际操作过程中遇到的问题提供解决思路,请跟着小编来一起看看吧。 0 h, D5 Y/ d3 t# J, h( N2 |" a
+ s, D3 Y4 f$ \; A
        一、中断引脚怎么如何选择? - }9 N. x% x+ R: Z
        在选择复用引脚时,需要给SPI转CAN模块选择一个中断引脚,而FETA40i-C/FETT3-C核心板并非每个引脚都具有中断功能,需要在《引脚复用对照表》中进行筛选,选择带有中断功能的GPIO
7 E" B% X- G6 M8 Y) g- X' [        首先需要确定哪些引脚具有中断功能,表格中引脚可复用功能中具有EINT*的引脚是具有中断功能的。我们可以从这些引脚中选择一个作为SPI转CAN模块的中断引脚,选择时注意这些引脚原本是什么功能,选择一个不需要的功能引脚作为SPI转CAN模块的中断引脚,
& Q( T2 l4 v& l* I  }5 z        比如下图是我们的方案中选用的PH6这个引脚。
. ?/ J* g4 N+ G3 [3 U) [0 v
# d9 D: o, h0 x- L 5 H* c  C6 A3 E' {

; [; O0 @+ {% R; Q( C/ C
  l1 {3 N+ [8 J4 e/ [5 l        二、 哪些引脚可以用作SPI功能?   C* e* t! F- {. }( F
1)开发板默认SPI功能的引脚在OKA40i-C开发板/OKT3-C开发板上,默认引出了SPI0和SPI2两组引脚,可以选择这两组引脚。需要注意的是这两组信号默认为1.8V,需要硬件上做电平转换为3.3V才能用于SPI转CAN的设置。
; _+ g3 o# @2 q% U3 I# Z- N 3 _: s, B, w# [4 j6 w
* Q8 d5 p0 @0 U  U8 L0 p
        这两组引脚在fex文件里已经做了配置,只需要按照方法做其它修改即可。 & G$ X+ N. i, E! D

8 V" w) E- y2 Z& Y! l* M2)将其它功能引脚复用为SPI功能在飞凌嵌入式《A40i/T3对CAN的支持》(点击查询)一文中详细讲解了如何将开发板上UART2功能相关的引脚复用为了SPI。
& M* w" q4 o" W# s        假如不想使用UART2引脚复用又不知道如何选择的话,飞凌嵌入式全志A40、全志T3 用户资料中提供了《引脚复用对照表》,从中查询哪些引脚可以复用为SPI功能,然后根据实际需求去选择要复用的引脚。 6 e! c) y' c8 K
        查找时请先检索需要使用的功能“关键词”,比如需要SPI功能,请检索“SPI”,找到可复用成SPI功能的引脚,当前表格中默认功能列是引脚名称,功能选择列是默认配置的功能,
; d0 u0 E( U$ Y+ W* b( E/ v        例如PI16、PI17、PI18、PI19四个引脚,可以复用成SPI1,默认是UART2功能。
2 ]  d% l3 r- W7 T; \
4 I% y  G. V2 I$ E# N( |, |
0 H  ~& I1 o. f6 ^6 q 0 K1 @- U. M: \4 V, f$ B

7 a( @' `4 O  Y% k# t9 Z4 H9 K0 A0 Y" w9 ]
        三、iproute配置繁琐   n' ]# T( p5 H1 F+ |  K* T( v# q5 p
iproute需要在Buildroot里配置,需要编译Buildroot重新生成文件系统,过程太麻烦?
* V1 d5 D7 v( T: h! yiproute是一个网络管理工具,在设置波特率时有用到。如果使用飞凌嵌入式2020.08.31及之后提供的全志A40i及全志T3开发板资料,Buildroot已经配置完成,可以忽略该步操作,不用重新编译Buildroot,只需按照方法做好其它配置就可以了!这样可以减少一些不必要的编译问题,更快速的完成相关配置! ) ?5 o, o- X7 t2 G+ v5 D! W6 l0 r
8 a  g, `1 G  i" c; W  U- S
        当然,也可以单独下载源码编译,
% [1 W/ Y. h9 S, e4 ?: T        下载链接:https://mirrors.edge.kernel.org/pub/linux/utils/net/iproute2/ - ~: i$ e' [/ W+ F6 s5 E
例:
: P5 p3 C% l! N$ S  I" }        下载iproute2-4.10.0.tar.gz 5 ]) l, t3 o# A0 x
解压源码,修改Makefile文件中的交叉编译器 : v; n9 o. m' [% ?1 a( G( `
        指定CC=arm-linux-gnueabihf-gcc-5.3.1
( x  u* U. w9 k9 U7 y/ `. U; X执行make编译,在ip文件夹中得到程序ip。
# q" G. k! ~4 V% a7 j0 v
3 N! D4 N' f' W- O        四、数据丢帧问题A " p# q! z( Z0 D( b0 Q* o
通过SPI转CAN实现的CAN功能,相对于原生CAN的性能有一定的不足,在500K波特率下外部设备单次发送多帧数据,接收数据时可能出现丢帧现象,频繁收发数据可能出现丢帧现象,为解决这一问题,需要取消CPUIdle Driver for Sunxiprocessors选项,在飞凌嵌入式提供的最新全志A40i及T3的资料源码中已经做了重新配置!
, _; Y& G9 I& c- M/ @. F( m/ u+ I        如果您使用的不是最新资料,
4 i" U1 G4 G* F3 y$ E0 I, v        可以在源码中linux-3.10目录下执行makemenuconfig  ARCH=arm % T; o1 O9 b$ [0 m& p
将[] CPU Idle Driver for Sunxi processors的编译去掉
! m, T& l1 P( [! F4 L8 [) HCPU Power Management  --->
* R: ]& o% r9 g7 \  H        [ ] CPU Idle Driver for Sunxi processors   C  M. J. a, ]6 V/ t! e( {
9 e6 e  O0 u2 z# {' J
1 K8 y7 m/ L4 K( `7 x( v* C* q
& r( c, W3 v! k, c+ u
本次我们的解答问题梳理先到这里了,通过以上解答,希望能对大家的开发过程提供了帮助,减少问题,提高开发效率! $ X+ d. h3 d2 ?* B  w1 I- F

+ b+ S" F9 Q( {/ d7 K  h1 s) O
! f2 Y- w7 z; E& [9 s
% a6 K+ [2 N# f& Q+ l7 V相关产品:                                                   
4 [1 u) h. F9 _, N( i! B' F' P9 L+ m5 W! a9 `* P3 p

* m. [9 e6 `: C! X9 M, d( M6 b* }" R7 L2 y2 S1 z! s" {/ s
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋| 飞凌嵌入式 ( 冀ICP备12004394号-1 )

GMT+8, 2025-7-11 21:32

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表