嵌入式爱好者

查看: 10758|回复: 1

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

[复制链接]

46

主题

53

帖子

295

积分

扫一扫,手机访问本帖
发表于 2021-12-10 17:13:01 | 显示全部楼层 |阅读模式
飞凌嵌入式基于全志系列处理器设计的OKA40i-C开发板、OKT3-C开发板因其接口丰富、低功耗、系统集成度高等特点,深受广大用户赞誉。
  R' x$ `1 C* l  ^- G# x" J 1 C$ u( {9 R+ g4 V+ i& ^
        小编通过对飞凌技术服务部“A40i/T3客户群问题解决库”进行检索,梳理了部分共性问题及解决思路。本文主要对OKA40i-C开发板/OKT3-C开发板CAN功能使用过程中多次遇到的问题进行讲解。
! g0 W% c3 O2 U3 Z6 P& }3 e4 E% D0 e7 i3 m1 R  J3 h
        由于全志 A40i/T3 CPU 中未包含CAN控制器,而在实际使用过程中,如果用到CAN功能,通常会采用SPI转CAN的方式。在此之前飞凌已经提供了OKA40i-C开发板/OKT3-C开发板对CAN的支持方法(参考链接: 研发干货丨A40i/T3对CAN的支持 点击查询),本文就不在做赘述,仅针对用户在实际操作过程中遇到的问题提供解决思路,请跟着小编来一起看看吧。
6 Z6 T7 N. B( s1 C- ?7 M- [$ I; W
        一、中断引脚怎么如何选择?
3 k0 h, U( d8 x4 J; A5 Z* R; T        在选择复用引脚时,需要给SPI转CAN模块选择一个中断引脚,而FETA40i-C/FETT3-C核心板并非每个引脚都具有中断功能,需要在《引脚复用对照表》中进行筛选,选择带有中断功能的GPIO
+ {! M* b; k) N/ f        首先需要确定哪些引脚具有中断功能,表格中引脚可复用功能中具有EINT*的引脚是具有中断功能的。我们可以从这些引脚中选择一个作为SPI转CAN模块的中断引脚,选择时注意这些引脚原本是什么功能,选择一个不需要的功能引脚作为SPI转CAN模块的中断引脚,
  f  ^: n! f9 i# e* ]+ ?; J0 Q( q        比如下图是我们的方案中选用的PH6这个引脚。 9 z  `  V5 x, I# ?* C. k

/ H" h: H, B0 q+ t& T2 J% I # t5 B1 b0 s0 ]. ?4 j% I/ w

& s! p/ k8 M' C, i- J$ v- m
, k" @: P+ P2 V) d5 |; M8 L: @( X# t        二、 哪些引脚可以用作SPI功能? ; X+ w; H* U! |
1)开发板默认SPI功能的引脚在OKA40i-C开发板/OKT3-C开发板上,默认引出了SPI0和SPI2两组引脚,可以选择这两组引脚。需要注意的是这两组信号默认为1.8V,需要硬件上做电平转换为3.3V才能用于SPI转CAN的设置。 $ G* k! C$ m0 k% s
, ~8 h5 g0 M& w' l* a! F
8 L* n( p' W* [  P& y- [( X$ j. `
        这两组引脚在fex文件里已经做了配置,只需要按照方法做其它修改即可。
- f# R. D  t+ [5 R+ D5 f' b& P9 k* Z3 b; t# n2 p1 h& X
2)将其它功能引脚复用为SPI功能在飞凌嵌入式《A40i/T3对CAN的支持》(点击查询)一文中详细讲解了如何将开发板上UART2功能相关的引脚复用为了SPI。 & Z0 a9 d; u' J
        假如不想使用UART2引脚复用又不知道如何选择的话,飞凌嵌入式全志A40、全志T3 用户资料中提供了《引脚复用对照表》,从中查询哪些引脚可以复用为SPI功能,然后根据实际需求去选择要复用的引脚。
' C! T! I$ {5 ?        查找时请先检索需要使用的功能“关键词”,比如需要SPI功能,请检索“SPI”,找到可复用成SPI功能的引脚,当前表格中默认功能列是引脚名称,功能选择列是默认配置的功能, 1 _3 R: {7 o2 u2 a3 B
        例如PI16、PI17、PI18、PI19四个引脚,可以复用成SPI1,默认是UART2功能。
6 ~0 _; m1 v5 ^) r& E: {/ T8 e( U
4 W$ B9 X4 \# |+ `
+ Z* |  m& k7 I% X

' a! \8 w$ c+ D
  u4 y, F5 [4 n7 H' b        三、iproute配置繁琐 7 g% x7 v- u9 N) k* ?& R6 O4 G1 n
iproute需要在Buildroot里配置,需要编译Buildroot重新生成文件系统,过程太麻烦?
% T' S1 m# f: y0 fiproute是一个网络管理工具,在设置波特率时有用到。如果使用飞凌嵌入式2020.08.31及之后提供的全志A40i及全志T3开发板资料,Buildroot已经配置完成,可以忽略该步操作,不用重新编译Buildroot,只需按照方法做好其它配置就可以了!这样可以减少一些不必要的编译问题,更快速的完成相关配置!
1 B$ ?3 T' ?$ F1 E
1 u2 T3 [' \2 C8 J        当然,也可以单独下载源码编译, 6 \' h( ^1 @% @- ~, ]
        下载链接:https://mirrors.edge.kernel.org/pub/linux/utils/net/iproute2/
9 ^7 M+ i6 ^! F4 O例: 7 T6 `8 Y; V3 A( J* M+ o: E
        下载iproute2-4.10.0.tar.gz * f8 U# @$ u8 y6 U
解压源码,修改Makefile文件中的交叉编译器
: }8 u( k& g- Q- n/ q, t2 p) [2 z        指定CC=arm-linux-gnueabihf-gcc-5.3.1
: ~" t( H; r  I! X7 }执行make编译,在ip文件夹中得到程序ip。
. P, |! U- p# Z( n# W- ^$ g% K7 r) c% M$ F0 h% i9 h
        四、数据丢帧问题A $ F3 H* Q; `% b  i3 n9 q
通过SPI转CAN实现的CAN功能,相对于原生CAN的性能有一定的不足,在500K波特率下外部设备单次发送多帧数据,接收数据时可能出现丢帧现象,频繁收发数据可能出现丢帧现象,为解决这一问题,需要取消CPUIdle Driver for Sunxiprocessors选项,在飞凌嵌入式提供的最新全志A40i及T3的资料源码中已经做了重新配置! / e, A% I* O5 j
        如果您使用的不是最新资料, / i  E+ Q6 Q; L+ C4 r! @0 q) T# }* E
        可以在源码中linux-3.10目录下执行makemenuconfig  ARCH=arm % `( f6 H. J. D1 _( n
将[] CPU Idle Driver for Sunxi processors的编译去掉
5 Z2 Y0 h2 x. F9 m$ yCPU Power Management  --->4 C% u3 a8 H" `' ^
        [ ] CPU Idle Driver for Sunxi processors 8 O8 Y1 l* y0 Z2 i6 \9 M+ p7 P) H/ n
5 q0 A+ C8 v+ J  R

  V5 {! I/ C! V/ X& w+ y# @
, A2 ]* J) F6 X( C( T, J# J本次我们的解答问题梳理先到这里了,通过以上解答,希望能对大家的开发过程提供了帮助,减少问题,提高开发效率! + N* X; m+ r& o7 q% _
- W; t" s# l3 O# x( W6 H) P( m
/ Y6 J! b! e; j) O+ v

# [; ~& U- P: b+ G" ]相关产品:                                                   
5 f  x% k' [  d8 U+ x
/ w6 L6 {1 M+ Y% c
0 }' b( r: t0 o" J( {, ]( p- v% R2 k' x. r9 p9 q0 R( Q
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-3-30 17:09

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc.

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