嵌入式爱好者

查看: 9592|回复: 1

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

[复制链接]

46

主题

53

帖子

295

积分

扫一扫,手机访问本帖
发表于 2021-12-10 17:13:01 | 显示全部楼层 |阅读模式
飞凌嵌入式基于全志系列处理器设计的OKA40i-C开发板、OKT3-C开发板因其接口丰富、低功耗、系统集成度高等特点,深受广大用户赞誉。 & M+ d: I9 \, J% _# A1 t' ~1 ~

* @& l: N& Q9 j        小编通过对飞凌技术服务部“A40i/T3客户群问题解决库”进行检索,梳理了部分共性问题及解决思路。本文主要对OKA40i-C开发板/OKT3-C开发板CAN功能使用过程中多次遇到的问题进行讲解。 / a- x3 F9 d) G. N7 b5 u, E

7 Y7 ~) U. F- q& B; c& E3 a$ u        由于全志 A40i/T3 CPU 中未包含CAN控制器,而在实际使用过程中,如果用到CAN功能,通常会采用SPI转CAN的方式。在此之前飞凌已经提供了OKA40i-C开发板/OKT3-C开发板对CAN的支持方法(参考链接: 研发干货丨A40i/T3对CAN的支持 点击查询),本文就不在做赘述,仅针对用户在实际操作过程中遇到的问题提供解决思路,请跟着小编来一起看看吧。
4 q& J3 c' O; ^, G1 O
& O7 A0 y' \, E" r# H( L        一、中断引脚怎么如何选择?
! j1 R* C6 W, ]& e  @) y6 m: l5 ~        在选择复用引脚时,需要给SPI转CAN模块选择一个中断引脚,而FETA40i-C/FETT3-C核心板并非每个引脚都具有中断功能,需要在《引脚复用对照表》中进行筛选,选择带有中断功能的GPIO
* U( K: O3 A/ j- Q9 A7 C1 }1 }        首先需要确定哪些引脚具有中断功能,表格中引脚可复用功能中具有EINT*的引脚是具有中断功能的。我们可以从这些引脚中选择一个作为SPI转CAN模块的中断引脚,选择时注意这些引脚原本是什么功能,选择一个不需要的功能引脚作为SPI转CAN模块的中断引脚,
( {+ ~" P: U( _2 Z        比如下图是我们的方案中选用的PH6这个引脚。
+ v0 @9 c* J. v  E2 q
5 i8 A# E$ E- O# F- f' N ) g, r- ~1 I/ g% s# U1 i
& B( s" c, k/ ?2 X
2 R: ]8 c- S  W* L  D0 G
        二、 哪些引脚可以用作SPI功能? $ ?9 }# t% W  z0 A- f
1)开发板默认SPI功能的引脚在OKA40i-C开发板/OKT3-C开发板上,默认引出了SPI0和SPI2两组引脚,可以选择这两组引脚。需要注意的是这两组信号默认为1.8V,需要硬件上做电平转换为3.3V才能用于SPI转CAN的设置。
7 N6 m$ ~+ S* m, h& F8 A
: B. o8 w, H* i) J# q3 w/ R* Z* X, M) ^* O$ S. I& \" G7 {8 M3 s
        这两组引脚在fex文件里已经做了配置,只需要按照方法做其它修改即可。
4 f5 {) B2 g7 p7 _7 Z) ~- _) \
2 Z$ p. R1 Z$ x+ ^2)将其它功能引脚复用为SPI功能在飞凌嵌入式《A40i/T3对CAN的支持》(点击查询)一文中详细讲解了如何将开发板上UART2功能相关的引脚复用为了SPI。
* s2 n# }+ Z- J        假如不想使用UART2引脚复用又不知道如何选择的话,飞凌嵌入式全志A40、全志T3 用户资料中提供了《引脚复用对照表》,从中查询哪些引脚可以复用为SPI功能,然后根据实际需求去选择要复用的引脚。 " H2 R6 d7 I9 h
        查找时请先检索需要使用的功能“关键词”,比如需要SPI功能,请检索“SPI”,找到可复用成SPI功能的引脚,当前表格中默认功能列是引脚名称,功能选择列是默认配置的功能, 4 R7 s! t8 A3 S( s
        例如PI16、PI17、PI18、PI19四个引脚,可以复用成SPI1,默认是UART2功能。
7 S1 k7 p$ A7 I! \  I, ~5 h& S/ m0 p3 n7 x+ M7 J

. g9 Y! H/ G  k9 ?7 X
! z# w/ P8 A- o% B) r) Q6 D1 N+ e
) n4 L2 j! _3 g) q0 I$ Z; r, `* L# d! H. o- v
        三、iproute配置繁琐
7 H( p& V- y$ A4 o- x, ]iproute需要在Buildroot里配置,需要编译Buildroot重新生成文件系统,过程太麻烦? ( U( y6 t( W; q! D3 z0 I/ r
iproute是一个网络管理工具,在设置波特率时有用到。如果使用飞凌嵌入式2020.08.31及之后提供的全志A40i及全志T3开发板资料,Buildroot已经配置完成,可以忽略该步操作,不用重新编译Buildroot,只需按照方法做好其它配置就可以了!这样可以减少一些不必要的编译问题,更快速的完成相关配置! # G& S' ~6 `  o! q8 K! g# c$ ~9 L

+ @: I/ |0 Z, v3 t. w2 j0 |        当然,也可以单独下载源码编译,
0 h; R. P! j; l, Y/ q! w        下载链接:https://mirrors.edge.kernel.org/pub/linux/utils/net/iproute2/ . Y- @6 C0 t9 j: \/ s
例:
* k0 d8 m* t) Q. Z- |        下载iproute2-4.10.0.tar.gz ( }1 b/ Y9 A/ e1 j
解压源码,修改Makefile文件中的交叉编译器 + ]" @" Q$ p5 a
        指定CC=arm-linux-gnueabihf-gcc-5.3.1
6 Q( Q2 q* n; d. m执行make编译,在ip文件夹中得到程序ip。
+ C8 n4 w4 z" {! j, h* Q" v
# [2 W1 {+ r+ }" t% @, c  W        四、数据丢帧问题A
+ d& P& }! `  _' h( I- R. j! c通过SPI转CAN实现的CAN功能,相对于原生CAN的性能有一定的不足,在500K波特率下外部设备单次发送多帧数据,接收数据时可能出现丢帧现象,频繁收发数据可能出现丢帧现象,为解决这一问题,需要取消CPUIdle Driver for Sunxiprocessors选项,在飞凌嵌入式提供的最新全志A40i及T3的资料源码中已经做了重新配置!
$ p1 m- C( e& \& V/ s2 g( {! i        如果您使用的不是最新资料,
6 P, X) l) Q$ k# S2 A        可以在源码中linux-3.10目录下执行makemenuconfig  ARCH=arm ( k( m8 g, M9 x: ?6 Q
将[] CPU Idle Driver for Sunxi processors的编译去掉 1 u0 d1 \9 G( z" V  [( E
CPU Power Management  --->
9 ^% R( z1 O$ k9 W        [ ] CPU Idle Driver for Sunxi processors 6 R! Q4 C6 L' j8 l! p' D* y

' _& p) N1 f) M8 X4 }' S& u2 [1 Q

. ^# Y' i8 ^+ z/ ]! v, t2 l5 i本次我们的解答问题梳理先到这里了,通过以上解答,希望能对大家的开发过程提供了帮助,减少问题,提高开发效率! : q9 H6 |5 t* b1 H

% V1 B: O7 @' b6 F. W$ N, v! E, p9 \) q7 ]- b; f7 l  p
8 A1 f6 x# ~- A& [# c
相关产品:                                                   4 J( G/ u( Y. c9 F# X% W

+ y2 Y$ }+ @' g( |( A4 O6 {
9 f# t, ]8 M& b7 P
3 x+ K- f3 p8 ^
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-12-20 12:03

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc.

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