嵌入式爱好者

查看: 11481|回复: 1

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

[复制链接]

46

主题

53

帖子

296

积分

扫一扫,手机访问本帖
发表于 2021-12-10 17:13:01 | 显示全部楼层 |阅读模式
飞凌嵌入式基于全志系列处理器设计的OKA40i-C开发板、OKT3-C开发板因其接口丰富、低功耗、系统集成度高等特点,深受广大用户赞誉。
) @2 ?% q( w, M4 m$ `: _/ R( L, a' p
$ K1 b  A; u7 H( N0 x2 f0 k        小编通过对飞凌技术服务部“A40i/T3客户群问题解决库”进行检索,梳理了部分共性问题及解决思路。本文主要对OKA40i-C开发板/OKT3-C开发板CAN功能使用过程中多次遇到的问题进行讲解。 ( F9 K$ _8 R8 p6 K1 Q  b& f
3 g9 n" D% p2 U: Z% D9 j
        由于全志 A40i/T3 CPU 中未包含CAN控制器,而在实际使用过程中,如果用到CAN功能,通常会采用SPI转CAN的方式。在此之前飞凌已经提供了OKA40i-C开发板/OKT3-C开发板对CAN的支持方法(参考链接: 研发干货丨A40i/T3对CAN的支持 点击查询),本文就不在做赘述,仅针对用户在实际操作过程中遇到的问题提供解决思路,请跟着小编来一起看看吧。
1 N: K0 q; S9 j* D, E! E. N: ?6 Z# E1 @- {
        一、中断引脚怎么如何选择?
! N. p1 u* R- Y" |! t) z" ^        在选择复用引脚时,需要给SPI转CAN模块选择一个中断引脚,而FETA40i-C/FETT3-C核心板并非每个引脚都具有中断功能,需要在《引脚复用对照表》中进行筛选,选择带有中断功能的GPIO
( E! W& c/ \$ J# ~) ]        首先需要确定哪些引脚具有中断功能,表格中引脚可复用功能中具有EINT*的引脚是具有中断功能的。我们可以从这些引脚中选择一个作为SPI转CAN模块的中断引脚,选择时注意这些引脚原本是什么功能,选择一个不需要的功能引脚作为SPI转CAN模块的中断引脚,
; _8 n" T1 `4 ]0 g, }8 a        比如下图是我们的方案中选用的PH6这个引脚。
" |6 [6 H" k4 y. j9 `+ {$ _& Q" T; b; k

5 s, X& y, b" l5 o# c
' W2 e' \; }% R; W% p2 Q' a# T/ J1 C$ A: n' o
        二、 哪些引脚可以用作SPI功能?
" Y  q$ E% ^2 g2 S1)开发板默认SPI功能的引脚在OKA40i-C开发板/OKT3-C开发板上,默认引出了SPI0和SPI2两组引脚,可以选择这两组引脚。需要注意的是这两组信号默认为1.8V,需要硬件上做电平转换为3.3V才能用于SPI转CAN的设置。 3 E8 J/ J6 {- i2 D! W. e9 T5 Y
3 Q- W; x5 i+ F
8 e1 c$ ~$ y4 K$ f8 n3 ~9 c+ V; L
        这两组引脚在fex文件里已经做了配置,只需要按照方法做其它修改即可。 % g* _7 [  p2 h7 R' A  f- ?: x

5 @1 ~4 y# h. ?& `: J2 o( _, i' w2)将其它功能引脚复用为SPI功能在飞凌嵌入式《A40i/T3对CAN的支持》(点击查询)一文中详细讲解了如何将开发板上UART2功能相关的引脚复用为了SPI。
& h& B# }2 i: s4 m        假如不想使用UART2引脚复用又不知道如何选择的话,飞凌嵌入式全志A40、全志T3 用户资料中提供了《引脚复用对照表》,从中查询哪些引脚可以复用为SPI功能,然后根据实际需求去选择要复用的引脚。 ' Z. e, g+ x/ L5 D4 V
        查找时请先检索需要使用的功能“关键词”,比如需要SPI功能,请检索“SPI”,找到可复用成SPI功能的引脚,当前表格中默认功能列是引脚名称,功能选择列是默认配置的功能,
. }( H( k5 V9 S+ {1 i" i        例如PI16、PI17、PI18、PI19四个引脚,可以复用成SPI1,默认是UART2功能。
( Q$ R2 N" e; i6 M0 m0 z0 h. q( E3 C  i5 S$ l& T1 C7 {5 {6 e
# b- a, i/ h2 I3 i  G

/ d3 G9 Q1 Y" F" h1 m
1 F& k6 |8 t- ~
& h, S2 V2 o/ G% ~5 R8 y        三、iproute配置繁琐
. y) }  A4 b& `. biproute需要在Buildroot里配置,需要编译Buildroot重新生成文件系统,过程太麻烦? 8 C/ K1 _/ M, z* c" @- N" E! f& |
iproute是一个网络管理工具,在设置波特率时有用到。如果使用飞凌嵌入式2020.08.31及之后提供的全志A40i及全志T3开发板资料,Buildroot已经配置完成,可以忽略该步操作,不用重新编译Buildroot,只需按照方法做好其它配置就可以了!这样可以减少一些不必要的编译问题,更快速的完成相关配置!
: z- n7 @$ k& n1 m5 j: U! {0 Z, r' n" p7 q
        当然,也可以单独下载源码编译, * O0 [% q4 O  _8 @" p& R2 O
        下载链接:https://mirrors.edge.kernel.org/pub/linux/utils/net/iproute2/
! w9 K6 B  H& u5 w2 r- l例: 2 Y1 w4 j+ e7 c5 L
        下载iproute2-4.10.0.tar.gz
0 L3 L. l) u$ [0 K解压源码,修改Makefile文件中的交叉编译器 + Y; P' p9 Y) X
        指定CC=arm-linux-gnueabihf-gcc-5.3.1 - y6 H! b3 b3 O5 H% }
执行make编译,在ip文件夹中得到程序ip。
! H6 a: n  D& X7 T- t( ^7 p8 S  h7 ?5 R0 V! T/ D" R' n& G
        四、数据丢帧问题A
: v! V3 r0 O+ C: l+ p, |! V通过SPI转CAN实现的CAN功能,相对于原生CAN的性能有一定的不足,在500K波特率下外部设备单次发送多帧数据,接收数据时可能出现丢帧现象,频繁收发数据可能出现丢帧现象,为解决这一问题,需要取消CPUIdle Driver for Sunxiprocessors选项,在飞凌嵌入式提供的最新全志A40i及T3的资料源码中已经做了重新配置!
  C* }6 p# |1 ^& U& P. H        如果您使用的不是最新资料,
  }, v8 s& }# Y# K        可以在源码中linux-3.10目录下执行makemenuconfig  ARCH=arm
: i: [: Q& [  N" x将[] CPU Idle Driver for Sunxi processors的编译去掉
! h) o% N  M' F6 [CPU Power Management  --->
2 E  g6 n" L3 d+ e        [ ] CPU Idle Driver for Sunxi processors ; Z# {5 e$ Y. ?4 ^" K3 M
$ D9 a/ D; U  ^

+ K* u4 a/ i+ u* [
( ?4 {1 y8 i+ |1 T本次我们的解答问题梳理先到这里了,通过以上解答,希望能对大家的开发过程提供了帮助,减少问题,提高开发效率!
; f' d; x- T, V  F4 ~
: e" i& G. c+ m# m. Z  M
5 D9 ^  X* K* b  C) r7 e. e3 g7 b. f0 V+ r
相关产品:                                                   + h1 j' E' k, I* T4 V% q

: a2 j. \' A* o9 f* l! a6 F( ]$ r6 R
8 ?. U2 K3 i: D9 i$ N. O8 I; o
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-12-15 11:52

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc.

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