嵌入式爱好者

查看: 11145|回复: 1

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

[复制链接]

46

主题

53

帖子

295

积分

扫一扫,手机访问本帖
发表于 2021-12-10 17:13:01 | 显示全部楼层 |阅读模式
飞凌嵌入式基于全志系列处理器设计的OKA40i-C开发板、OKT3-C开发板因其接口丰富、低功耗、系统集成度高等特点,深受广大用户赞誉。 8 ~: p5 |2 v* [' s; B7 H) ?

' y# E, S. ?& }0 o        小编通过对飞凌技术服务部“A40i/T3客户群问题解决库”进行检索,梳理了部分共性问题及解决思路。本文主要对OKA40i-C开发板/OKT3-C开发板CAN功能使用过程中多次遇到的问题进行讲解。
! S# i$ C  Y6 _- o* d( D+ j2 _
* ]& c! S: U+ {  q0 W        由于全志 A40i/T3 CPU 中未包含CAN控制器,而在实际使用过程中,如果用到CAN功能,通常会采用SPI转CAN的方式。在此之前飞凌已经提供了OKA40i-C开发板/OKT3-C开发板对CAN的支持方法(参考链接: 研发干货丨A40i/T3对CAN的支持 点击查询),本文就不在做赘述,仅针对用户在实际操作过程中遇到的问题提供解决思路,请跟着小编来一起看看吧。
# z, l' V! o% p  N( J( @" g, X9 U& B) G! l
        一、中断引脚怎么如何选择?
' O: L% h+ C# z2 A8 f        在选择复用引脚时,需要给SPI转CAN模块选择一个中断引脚,而FETA40i-C/FETT3-C核心板并非每个引脚都具有中断功能,需要在《引脚复用对照表》中进行筛选,选择带有中断功能的GPIO( Y& y: C. J; r* \2 b" }. ~( x0 S
        首先需要确定哪些引脚具有中断功能,表格中引脚可复用功能中具有EINT*的引脚是具有中断功能的。我们可以从这些引脚中选择一个作为SPI转CAN模块的中断引脚,选择时注意这些引脚原本是什么功能,选择一个不需要的功能引脚作为SPI转CAN模块的中断引脚, 3 B. `. y/ k2 U7 v* y
        比如下图是我们的方案中选用的PH6这个引脚。
* X/ s% G6 y% X$ e7 P! h0 T" F) Y
* F' V$ ~7 R: N' X) y4 r) [

9 ~: r- G; X5 R! I7 }
4 M5 Q1 I- S1 P! H7 O        二、 哪些引脚可以用作SPI功能?
( ^; H$ x# W9 O' i3 x  l; g  J1)开发板默认SPI功能的引脚在OKA40i-C开发板/OKT3-C开发板上,默认引出了SPI0和SPI2两组引脚,可以选择这两组引脚。需要注意的是这两组信号默认为1.8V,需要硬件上做电平转换为3.3V才能用于SPI转CAN的设置。
/ x: ]% G# {7 a# g) r 8 `/ T- n2 g0 M  n8 l

( b' L) t, V# N# s: [7 v( \        这两组引脚在fex文件里已经做了配置,只需要按照方法做其它修改即可。 ; z" y# _7 s% |3 p

1 Q/ P. R2 b/ ?2 t0 L6 i7 h2)将其它功能引脚复用为SPI功能在飞凌嵌入式《A40i/T3对CAN的支持》(点击查询)一文中详细讲解了如何将开发板上UART2功能相关的引脚复用为了SPI。 ) b; h3 ~6 v% [9 S0 [% Q3 a# C- r
        假如不想使用UART2引脚复用又不知道如何选择的话,飞凌嵌入式全志A40、全志T3 用户资料中提供了《引脚复用对照表》,从中查询哪些引脚可以复用为SPI功能,然后根据实际需求去选择要复用的引脚。 $ x! E0 ~: F- [7 `
        查找时请先检索需要使用的功能“关键词”,比如需要SPI功能,请检索“SPI”,找到可复用成SPI功能的引脚,当前表格中默认功能列是引脚名称,功能选择列是默认配置的功能,
% j: ^9 m/ t0 N6 b" H        例如PI16、PI17、PI18、PI19四个引脚,可以复用成SPI1,默认是UART2功能。
# r8 g4 m$ T# v. s  T$ B
$ ]/ ^2 B0 j8 S+ G$ C ( }8 x% ?) h9 r* f2 i
" A+ l1 q  ~3 F  c- d
2 m) R& K/ R) @/ o6 Z* ~% A

1 V. i- ?* M" u5 ]        三、iproute配置繁琐 9 o) N* N* ~7 v9 }7 `
iproute需要在Buildroot里配置,需要编译Buildroot重新生成文件系统,过程太麻烦?
( q4 y) Y2 f$ Z5 g$ tiproute是一个网络管理工具,在设置波特率时有用到。如果使用飞凌嵌入式2020.08.31及之后提供的全志A40i及全志T3开发板资料,Buildroot已经配置完成,可以忽略该步操作,不用重新编译Buildroot,只需按照方法做好其它配置就可以了!这样可以减少一些不必要的编译问题,更快速的完成相关配置! 5 }9 Y2 G3 A7 f; A7 ?
) X+ `; \7 r2 D! x! z
        当然,也可以单独下载源码编译, " [& b% V' `3 o/ _" K
        下载链接:https://mirrors.edge.kernel.org/pub/linux/utils/net/iproute2/ 5 \- P% O% `" ^0 n% C$ G1 {, k
例:
) e: O/ f+ o; y2 z$ J1 E- ]  u        下载iproute2-4.10.0.tar.gz
; j8 d7 H  @6 C) G  M6 W3 C7 e9 x解压源码,修改Makefile文件中的交叉编译器
7 z: g4 _; q. r6 l        指定CC=arm-linux-gnueabihf-gcc-5.3.1
' @# X9 w$ l# O+ i% ?- b执行make编译,在ip文件夹中得到程序ip。
6 i6 i! y/ o' V$ d# Z9 _  d7 e  [0 i0 T# X. S
        四、数据丢帧问题A " }2 p9 V  C) b
通过SPI转CAN实现的CAN功能,相对于原生CAN的性能有一定的不足,在500K波特率下外部设备单次发送多帧数据,接收数据时可能出现丢帧现象,频繁收发数据可能出现丢帧现象,为解决这一问题,需要取消CPUIdle Driver for Sunxiprocessors选项,在飞凌嵌入式提供的最新全志A40i及T3的资料源码中已经做了重新配置! : t, i( O( _  J& K
        如果您使用的不是最新资料, 2 f8 I# I9 r. }5 w3 O( K
        可以在源码中linux-3.10目录下执行makemenuconfig  ARCH=arm
: V1 q3 J. x6 @将[] CPU Idle Driver for Sunxi processors的编译去掉
( P+ H% M' l) [& v5 O" LCPU Power Management  --->
; B9 i! C# W/ L8 y9 p( i* N        [ ] CPU Idle Driver for Sunxi processors
0 J( \% ^/ \7 a" b" r# J' ~ 1 D# j' H( \! B) Q
" H1 _. v3 `) g( y4 h
4 D0 W1 Y/ W1 l4 k; y7 g# o5 |
本次我们的解答问题梳理先到这里了,通过以上解答,希望能对大家的开发过程提供了帮助,减少问题,提高开发效率!
' u3 k6 r# c0 D. t, X0 h9 v- j- p: B9 m, ~& T

; l6 ]$ o& h% O8 D! z, k. H8 g& v' J- y4 i* L/ F" Z! m
相关产品:                                                   & J! {, `8 V9 @8 Z1 d+ M
( g- O( t' o# u. i  L

# o4 f0 N# m8 @1 L
* G+ o0 A; h  I
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-9-19 14:24

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc.

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