嵌入式爱好者

查看: 11795|回复: 1

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

[复制链接]

46

主题

53

帖子

297

积分

扫一扫,手机访问本帖
发表于 2021-12-10 17:13:01 | 显示全部楼层 |阅读模式
飞凌嵌入式基于全志系列处理器设计的OKA40i-C开发板、OKT3-C开发板因其接口丰富、低功耗、系统集成度高等特点,深受广大用户赞誉。 : Q* o6 T* i' ~; g4 L" _( T; f
$ g6 c  T. P3 o* u- l
        小编通过对飞凌技术服务部“A40i/T3客户群问题解决库”进行检索,梳理了部分共性问题及解决思路。本文主要对OKA40i-C开发板/OKT3-C开发板CAN功能使用过程中多次遇到的问题进行讲解。 9 `( Y# e, o# S( j

3 Z7 s: L+ d: P; R        由于全志 A40i/T3 CPU 中未包含CAN控制器,而在实际使用过程中,如果用到CAN功能,通常会采用SPI转CAN的方式。在此之前飞凌已经提供了OKA40i-C开发板/OKT3-C开发板对CAN的支持方法(参考链接: 研发干货丨A40i/T3对CAN的支持 点击查询),本文就不在做赘述,仅针对用户在实际操作过程中遇到的问题提供解决思路,请跟着小编来一起看看吧。 - s. Y+ t" g% N
9 D4 z4 F6 H- m" X" E4 [' E, c
        一、中断引脚怎么如何选择? " v2 `( j+ Q1 N
        在选择复用引脚时,需要给SPI转CAN模块选择一个中断引脚,而FETA40i-C/FETT3-C核心板并非每个引脚都具有中断功能,需要在《引脚复用对照表》中进行筛选,选择带有中断功能的GPIO
' i  t3 f; e$ A" P$ J) K4 s        首先需要确定哪些引脚具有中断功能,表格中引脚可复用功能中具有EINT*的引脚是具有中断功能的。我们可以从这些引脚中选择一个作为SPI转CAN模块的中断引脚,选择时注意这些引脚原本是什么功能,选择一个不需要的功能引脚作为SPI转CAN模块的中断引脚,
+ e) n. H9 C) G: ]' B        比如下图是我们的方案中选用的PH6这个引脚。
3 v; K7 d  w# E! z+ p# y. F! \( f, F! v3 e9 s
; z3 s% b( w/ j  v# |9 z, C! u
+ ^; [' @0 U# [  ~% z  u
0 C( @8 y0 O$ d: }! v% g. p
        二、 哪些引脚可以用作SPI功能?
, `$ T3 G8 o: N3 i1)开发板默认SPI功能的引脚在OKA40i-C开发板/OKT3-C开发板上,默认引出了SPI0和SPI2两组引脚,可以选择这两组引脚。需要注意的是这两组信号默认为1.8V,需要硬件上做电平转换为3.3V才能用于SPI转CAN的设置。 3 U: d$ w9 o. z: s! g# o
, G! d3 B( w. g3 a/ o, s" H

$ U0 k& P* y- ~! h        这两组引脚在fex文件里已经做了配置,只需要按照方法做其它修改即可。
& l/ q' K% l: p9 ~0 G" a+ M; P0 `0 H4 U' W8 p& U- g0 k
2)将其它功能引脚复用为SPI功能在飞凌嵌入式《A40i/T3对CAN的支持》(点击查询)一文中详细讲解了如何将开发板上UART2功能相关的引脚复用为了SPI。
3 n, W1 s+ L* G; z) {) l( o        假如不想使用UART2引脚复用又不知道如何选择的话,飞凌嵌入式全志A40、全志T3 用户资料中提供了《引脚复用对照表》,从中查询哪些引脚可以复用为SPI功能,然后根据实际需求去选择要复用的引脚。 1 @8 v3 Y2 O" a' X; k# A9 }
        查找时请先检索需要使用的功能“关键词”,比如需要SPI功能,请检索“SPI”,找到可复用成SPI功能的引脚,当前表格中默认功能列是引脚名称,功能选择列是默认配置的功能, ! g0 A$ Q$ K! _  [$ u7 b. Z( A  d/ F
        例如PI16、PI17、PI18、PI19四个引脚,可以复用成SPI1,默认是UART2功能。 / u& H1 I8 i9 a) P

- I$ X8 V1 Q6 c& x# l2 h: }; o
( a! Y+ O1 ~1 w7 B/ {/ c& Z6 w0 C9 I / Q+ J& w* X; h' {- P

1 a# L; ]: V% R& Q, p# A: E  n, `& a. m2 \' {
        三、iproute配置繁琐 , L) c& O4 f& I1 Z$ ]
iproute需要在Buildroot里配置,需要编译Buildroot重新生成文件系统,过程太麻烦? 7 n( T, N. I1 g! s
iproute是一个网络管理工具,在设置波特率时有用到。如果使用飞凌嵌入式2020.08.31及之后提供的全志A40i及全志T3开发板资料,Buildroot已经配置完成,可以忽略该步操作,不用重新编译Buildroot,只需按照方法做好其它配置就可以了!这样可以减少一些不必要的编译问题,更快速的完成相关配置! * w6 @1 r. r% M' k

5 G& S. |% \& z  L$ I6 d: i1 Y# S, Y        当然,也可以单独下载源码编译, 7 S% ?% g% l  a" L0 G
        下载链接:https://mirrors.edge.kernel.org/pub/linux/utils/net/iproute2/
8 w% V& R1 _5 ]+ U! K例:
9 |) z& |- F3 l/ `, C2 N        下载iproute2-4.10.0.tar.gz / q& P* q4 D8 f: Y3 a# ]
解压源码,修改Makefile文件中的交叉编译器 : g" ^. T6 d. b1 T) O+ u. G
        指定CC=arm-linux-gnueabihf-gcc-5.3.1
7 S; I( E1 }5 K( a  _1 v( ?执行make编译,在ip文件夹中得到程序ip。 , A/ Y8 E3 f" q* ]0 X; m, F

" W+ [1 ]$ u6 a0 @+ x. S        四、数据丢帧问题A
+ R9 J/ |8 b. X7 o- c通过SPI转CAN实现的CAN功能,相对于原生CAN的性能有一定的不足,在500K波特率下外部设备单次发送多帧数据,接收数据时可能出现丢帧现象,频繁收发数据可能出现丢帧现象,为解决这一问题,需要取消CPUIdle Driver for Sunxiprocessors选项,在飞凌嵌入式提供的最新全志A40i及T3的资料源码中已经做了重新配置! 9 Y" I! |" L) r, [: u& o0 V
        如果您使用的不是最新资料,
' H( n8 b& p+ ^  u  y9 E; O        可以在源码中linux-3.10目录下执行makemenuconfig  ARCH=arm + ?; t. y0 m% Q! Z/ m( t$ O
将[] CPU Idle Driver for Sunxi processors的编译去掉 * p+ }, e5 n8 j7 t( e$ k" X
CPU Power Management  --->
1 {) N' ]( T% X- V1 \9 [        [ ] CPU Idle Driver for Sunxi processors
  m% q) h* {7 E5 u' _ $ l+ H" e" p3 v

, D; c; E6 j. B, U! ?, L- q9 O# \- f
* W% [# p% a5 v# S' Q- m2 ?+ L本次我们的解答问题梳理先到这里了,通过以上解答,希望能对大家的开发过程提供了帮助,减少问题,提高开发效率! . Z0 ?0 j  W( S& A, I/ m/ d

3 @* u) O/ G6 o' X& I6 t$ {
  D3 R/ b8 U0 }. d9 Y, a/ j; k  W$ E1 I" R  z2 M7 i
相关产品:                                                   
' U3 e3 m  n, r! m  }2 `6 Q0 l  S- O! g. p
; f7 y4 x( b7 a, W( L2 U" O" l

/ |4 R* s3 d3 [9 U0 X. @# H
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-2-15 07:18

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc.

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