嵌入式爱好者

查看: 11905|回复: 1

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

[复制链接]

47

主题

54

帖子

300

积分

扫一扫,手机访问本帖
发表于 2021-12-10 17:13:01 | 显示全部楼层 |阅读模式
飞凌嵌入式基于全志系列处理器设计的OKA40i-C开发板、OKT3-C开发板因其接口丰富、低功耗、系统集成度高等特点,深受广大用户赞誉。 ' Z1 E% {9 G% H" k

' k3 @% ~8 T- G0 G0 d8 U, F4 g$ M        小编通过对飞凌技术服务部“A40i/T3客户群问题解决库”进行检索,梳理了部分共性问题及解决思路。本文主要对OKA40i-C开发板/OKT3-C开发板CAN功能使用过程中多次遇到的问题进行讲解。
' ?. \) R& w6 t( `1 e5 |
" Z& M/ @# }# P' _        由于全志 A40i/T3 CPU 中未包含CAN控制器,而在实际使用过程中,如果用到CAN功能,通常会采用SPI转CAN的方式。在此之前飞凌已经提供了OKA40i-C开发板/OKT3-C开发板对CAN的支持方法(参考链接: 研发干货丨A40i/T3对CAN的支持 点击查询),本文就不在做赘述,仅针对用户在实际操作过程中遇到的问题提供解决思路,请跟着小编来一起看看吧。
) N* H5 u9 t$ T9 m4 p6 P, o! ~$ F8 F% l! s3 v+ w
        一、中断引脚怎么如何选择?
$ N, r' I6 |5 @        在选择复用引脚时,需要给SPI转CAN模块选择一个中断引脚,而FETA40i-C/FETT3-C核心板并非每个引脚都具有中断功能,需要在《引脚复用对照表》中进行筛选,选择带有中断功能的GPIO
! x. b2 E6 h+ c7 ~+ ]+ u        首先需要确定哪些引脚具有中断功能,表格中引脚可复用功能中具有EINT*的引脚是具有中断功能的。我们可以从这些引脚中选择一个作为SPI转CAN模块的中断引脚,选择时注意这些引脚原本是什么功能,选择一个不需要的功能引脚作为SPI转CAN模块的中断引脚, 5 D9 n* B7 K* p- \
        比如下图是我们的方案中选用的PH6这个引脚。
+ [( u6 @1 s0 {+ O# p
+ M) H& F+ x# w3 @" }# g+ a
! }; ?- V! q7 ?: z  a' s , u& R: f; ^- {

& n1 D" N# N7 m! X+ e% v9 f        二、 哪些引脚可以用作SPI功能?
8 ^! Y" o+ V& t) [$ b1)开发板默认SPI功能的引脚在OKA40i-C开发板/OKT3-C开发板上,默认引出了SPI0和SPI2两组引脚,可以选择这两组引脚。需要注意的是这两组信号默认为1.8V,需要硬件上做电平转换为3.3V才能用于SPI转CAN的设置。 7 o: l. Z/ i/ [0 y4 }
; O' T5 [  |: r) t9 g) s) A
8 Y# J4 _# j" c3 N! w
        这两组引脚在fex文件里已经做了配置,只需要按照方法做其它修改即可。
& N+ d; I! E5 R1 @8 b
1 k! F  l* C4 r0 y, w: b  s1 {2)将其它功能引脚复用为SPI功能在飞凌嵌入式《A40i/T3对CAN的支持》(点击查询)一文中详细讲解了如何将开发板上UART2功能相关的引脚复用为了SPI。
) e+ Y  q$ ^& L: u0 p  p        假如不想使用UART2引脚复用又不知道如何选择的话,飞凌嵌入式全志A40、全志T3 用户资料中提供了《引脚复用对照表》,从中查询哪些引脚可以复用为SPI功能,然后根据实际需求去选择要复用的引脚。
+ }/ v6 V+ k# X& m# l! S# q        查找时请先检索需要使用的功能“关键词”,比如需要SPI功能,请检索“SPI”,找到可复用成SPI功能的引脚,当前表格中默认功能列是引脚名称,功能选择列是默认配置的功能, 2 c# ~' s0 S; T% e/ S/ B
        例如PI16、PI17、PI18、PI19四个引脚,可以复用成SPI1,默认是UART2功能。 1 w+ u, T/ `* e% W* e
  x2 Q0 P0 t! p9 T8 P% u* R4 `
% L# M$ u) L9 V$ M. Y  i8 [2 u

! i# f5 R. c7 Z+ I# g
  K1 R5 m2 o. X0 x; o+ p" I( s0 h  q: U6 e( n3 e
        三、iproute配置繁琐 ; k  q5 s- [8 T( N! [: O
iproute需要在Buildroot里配置,需要编译Buildroot重新生成文件系统,过程太麻烦? 3 j$ P. Z, g  o  G$ @
iproute是一个网络管理工具,在设置波特率时有用到。如果使用飞凌嵌入式2020.08.31及之后提供的全志A40i及全志T3开发板资料,Buildroot已经配置完成,可以忽略该步操作,不用重新编译Buildroot,只需按照方法做好其它配置就可以了!这样可以减少一些不必要的编译问题,更快速的完成相关配置! 3 T* ]& b. j+ Y1 d

- u) f; U  g6 S* C4 q5 P. Q        当然,也可以单独下载源码编译, 2 ]* Q4 g0 B! R4 e
        下载链接:https://mirrors.edge.kernel.org/pub/linux/utils/net/iproute2/
# g! Z' z% |0 R7 ^& x. {. S例: 5 Q- W) j; z' x, Y1 _
        下载iproute2-4.10.0.tar.gz 4 Y2 Z$ o- G2 h8 |7 F
解压源码,修改Makefile文件中的交叉编译器
+ \5 W: L9 ?% F7 k' d+ t; d        指定CC=arm-linux-gnueabihf-gcc-5.3.1
9 m7 ]) b+ e3 S& w! {* s) ~执行make编译,在ip文件夹中得到程序ip。
7 W1 x" x8 a: c) V7 G7 a
  j" p2 b" X& W9 q, t+ }        四、数据丢帧问题A ' q1 U6 C/ F0 T! |7 }3 K+ I
通过SPI转CAN实现的CAN功能,相对于原生CAN的性能有一定的不足,在500K波特率下外部设备单次发送多帧数据,接收数据时可能出现丢帧现象,频繁收发数据可能出现丢帧现象,为解决这一问题,需要取消CPUIdle Driver for Sunxiprocessors选项,在飞凌嵌入式提供的最新全志A40i及T3的资料源码中已经做了重新配置!
- f! X  K+ k* k        如果您使用的不是最新资料,
& |: V4 j  ^9 Z        可以在源码中linux-3.10目录下执行makemenuconfig  ARCH=arm 0 Z6 ~0 X* _, j! S& g
将[] CPU Idle Driver for Sunxi processors的编译去掉 4 [7 e, N# {8 j7 a! |# D% ]
CPU Power Management  --->
5 }6 Y5 K0 Q1 X        [ ] CPU Idle Driver for Sunxi processors
8 L6 J4 f0 c+ p9 `1 r   ]5 ~8 G8 a4 g2 U- @/ G  D3 ^
0 g  N6 I7 I! W) j1 J  V

6 q9 s6 Y" y$ N; ?: {本次我们的解答问题梳理先到这里了,通过以上解答,希望能对大家的开发过程提供了帮助,减少问题,提高开发效率!
: U0 N9 a; P1 g: z9 a4 M
- `+ s& ?5 V3 g) q
4 _8 ?8 V/ O, |* S0 R: D
7 r, e) ^- O; }: O2 l  F8 T相关产品:                                                   ( i# L0 o/ G3 i  I8 O. E

* O5 q+ h+ r, ~
9 k( |; w/ b6 q9 r2 L$ T  ~( J7 L3 n: ^! \) x* W% g) }9 \: j
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-3-7 11:07

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc.

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