嵌入式爱好者

查看: 12341|回复: 1

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

[复制链接]

48

主题

55

帖子

305

积分

扫一扫,手机访问本帖
发表于 2021-12-10 17:13:01 | 显示全部楼层 |阅读模式
飞凌嵌入式基于全志系列处理器设计的OKA40i-C开发板、OKT3-C开发板因其接口丰富、低功耗、系统集成度高等特点,深受广大用户赞誉。
2 D: p0 E+ e) b2 D7 e/ T5 N& y
" g4 B1 L. B- |! B4 p- {% {- \/ n! r        小编通过对飞凌技术服务部“A40i/T3客户群问题解决库”进行检索,梳理了部分共性问题及解决思路。本文主要对OKA40i-C开发板/OKT3-C开发板CAN功能使用过程中多次遇到的问题进行讲解。 8 I+ z- v5 h" x3 N

. B$ w& s7 e0 G1 {' g& K3 C        由于全志 A40i/T3 CPU 中未包含CAN控制器,而在实际使用过程中,如果用到CAN功能,通常会采用SPI转CAN的方式。在此之前飞凌已经提供了OKA40i-C开发板/OKT3-C开发板对CAN的支持方法(参考链接: 研发干货丨A40i/T3对CAN的支持 点击查询),本文就不在做赘述,仅针对用户在实际操作过程中遇到的问题提供解决思路,请跟着小编来一起看看吧。 5 h. m" T0 J, s# P
" i) `9 @- S5 U8 _- B. W8 m
        一、中断引脚怎么如何选择?
- N2 _$ E3 }4 d4 f1 b% `4 O  U        在选择复用引脚时,需要给SPI转CAN模块选择一个中断引脚,而FETA40i-C/FETT3-C核心板并非每个引脚都具有中断功能,需要在《引脚复用对照表》中进行筛选,选择带有中断功能的GPIO
( Y, `* ~( N' D- Y- ?& r0 Y        首先需要确定哪些引脚具有中断功能,表格中引脚可复用功能中具有EINT*的引脚是具有中断功能的。我们可以从这些引脚中选择一个作为SPI转CAN模块的中断引脚,选择时注意这些引脚原本是什么功能,选择一个不需要的功能引脚作为SPI转CAN模块的中断引脚,
) z8 t5 v$ \" m# G& b        比如下图是我们的方案中选用的PH6这个引脚。
% j- s  I3 G: _2 X6 F6 `
. D- B5 t5 {, ? : \) a# E, m. Q4 F
6 f% |0 T$ G5 g

% `! @* Z1 A0 [- f+ V1 A, S) ~        二、 哪些引脚可以用作SPI功能?
# W5 B" A1 A; c# m( F4 X1)开发板默认SPI功能的引脚在OKA40i-C开发板/OKT3-C开发板上,默认引出了SPI0和SPI2两组引脚,可以选择这两组引脚。需要注意的是这两组信号默认为1.8V,需要硬件上做电平转换为3.3V才能用于SPI转CAN的设置。
# H8 B1 J  ]0 J- K' \" }3 p5 ~ * y9 _8 y9 T2 f: V5 s: ?
4 l5 J$ M: I+ C) o: b
        这两组引脚在fex文件里已经做了配置,只需要按照方法做其它修改即可。
' I0 b! J0 j0 ~0 n" ]* Z, Y+ b" z& J* Z
2)将其它功能引脚复用为SPI功能在飞凌嵌入式《A40i/T3对CAN的支持》(点击查询)一文中详细讲解了如何将开发板上UART2功能相关的引脚复用为了SPI。
- a  T8 t2 w3 {" i        假如不想使用UART2引脚复用又不知道如何选择的话,飞凌嵌入式全志A40、全志T3 用户资料中提供了《引脚复用对照表》,从中查询哪些引脚可以复用为SPI功能,然后根据实际需求去选择要复用的引脚。 - F1 L% Q+ {" w  x0 A
        查找时请先检索需要使用的功能“关键词”,比如需要SPI功能,请检索“SPI”,找到可复用成SPI功能的引脚,当前表格中默认功能列是引脚名称,功能选择列是默认配置的功能, 8 Y) t' r% Z7 ?; x0 l* U9 U9 i
        例如PI16、PI17、PI18、PI19四个引脚,可以复用成SPI1,默认是UART2功能。 7 X' W$ T8 ^3 O" y
/ F6 w% y0 k2 j1 ^4 }0 v2 T

( f4 y+ T' {8 s% y# a4 ^ & {' A$ Q- H& d+ l5 X' c

8 @: S; V' s! e: E
) n9 _5 ?! Y' b" c( T7 c& p, D        三、iproute配置繁琐   O- g8 y/ Y6 u; g
iproute需要在Buildroot里配置,需要编译Buildroot重新生成文件系统,过程太麻烦? ; @1 i  }% X9 O9 [
iproute是一个网络管理工具,在设置波特率时有用到。如果使用飞凌嵌入式2020.08.31及之后提供的全志A40i及全志T3开发板资料,Buildroot已经配置完成,可以忽略该步操作,不用重新编译Buildroot,只需按照方法做好其它配置就可以了!这样可以减少一些不必要的编译问题,更快速的完成相关配置!
) u: W8 o, {" N3 Q, Q. v  B9 d. V% [  t) n3 Y4 W/ b. ]4 j" d
        当然,也可以单独下载源码编译, 5 C: c5 ^& O8 n5 W% [  h. K3 D; C
        下载链接:https://mirrors.edge.kernel.org/pub/linux/utils/net/iproute2/
, r3 y$ L  i, m$ U$ F9 E例: # i9 A) m/ g2 |  Z7 f
        下载iproute2-4.10.0.tar.gz   H: o% _$ v/ R$ j3 ^
解压源码,修改Makefile文件中的交叉编译器
0 h3 o. m0 G! V9 u        指定CC=arm-linux-gnueabihf-gcc-5.3.1
" H$ f7 a! N* a执行make编译,在ip文件夹中得到程序ip。
9 Y8 d7 Y. C5 U) D5 \. U0 i2 x) b% {2 P% P
        四、数据丢帧问题A 8 z4 x# F9 |# a; A
通过SPI转CAN实现的CAN功能,相对于原生CAN的性能有一定的不足,在500K波特率下外部设备单次发送多帧数据,接收数据时可能出现丢帧现象,频繁收发数据可能出现丢帧现象,为解决这一问题,需要取消CPUIdle Driver for Sunxiprocessors选项,在飞凌嵌入式提供的最新全志A40i及T3的资料源码中已经做了重新配置!
/ j. I* \6 f1 P9 }4 T& ]! z        如果您使用的不是最新资料,
2 C1 A) W4 G: M3 ~) U3 V        可以在源码中linux-3.10目录下执行makemenuconfig  ARCH=arm
& ?5 V' k& v$ b% N. d将[] CPU Idle Driver for Sunxi processors的编译去掉 ! @7 d  a! a9 j5 F
CPU Power Management  --->
, A& X5 A" ~$ R' n6 W1 L6 z        [ ] CPU Idle Driver for Sunxi processors
5 j) c! \: m" @6 s8 G' V
# }: j6 n9 L3 |# U* r. b/ K. Z# D" S7 H

+ _- ~2 N: s" E- J( m. @( r本次我们的解答问题梳理先到这里了,通过以上解答,希望能对大家的开发过程提供了帮助,减少问题,提高开发效率!
3 q! g4 \1 B, r/ ^4 [+ f! W! W! v: w# J. \; U0 X' h

' `( z+ [& a/ ]# T) i* q( D
7 x+ O3 ^& s% s  h/ M. F相关产品:                                                   
: l* Q$ ]" ]1 W4 k! E& s9 `* K# b+ o* y6 I

# R% H+ Y& w) G0 U( P+ I' D2 F1 c5 B/ J# @4 \9 c
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-5-16 11:16

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc.

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