嵌入式爱好者

查看: 12570|回复: 1

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

[复制链接]

48

主题

55

帖子

306

积分

扫一扫,手机访问本帖
发表于 2021-12-10 17:13:01 | 显示全部楼层 |阅读模式
飞凌嵌入式基于全志系列处理器设计的OKA40i-C开发板、OKT3-C开发板因其接口丰富、低功耗、系统集成度高等特点,深受广大用户赞誉。 - x  G6 a1 X" e( ~" U3 K: b  p

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

) y! ~. d, |' ~0 l        二、 哪些引脚可以用作SPI功能?
* C4 v7 X3 f: C$ S1)开发板默认SPI功能的引脚在OKA40i-C开发板/OKT3-C开发板上,默认引出了SPI0和SPI2两组引脚,可以选择这两组引脚。需要注意的是这两组信号默认为1.8V,需要硬件上做电平转换为3.3V才能用于SPI转CAN的设置。
) D! W+ g7 {, L! S * k( b, R7 c3 j7 Y+ r+ n. e8 Q

, k0 D) N: z3 R7 W, I. `/ q        这两组引脚在fex文件里已经做了配置,只需要按照方法做其它修改即可。   P9 d( ?8 x/ R  F5 w/ N
" b, U' C  N. ^2 e( J$ ~7 w, }5 Y6 y
2)将其它功能引脚复用为SPI功能在飞凌嵌入式《A40i/T3对CAN的支持》(点击查询)一文中详细讲解了如何将开发板上UART2功能相关的引脚复用为了SPI。 2 \7 K$ f5 T  q4 h$ Z
        假如不想使用UART2引脚复用又不知道如何选择的话,飞凌嵌入式全志A40、全志T3 用户资料中提供了《引脚复用对照表》,从中查询哪些引脚可以复用为SPI功能,然后根据实际需求去选择要复用的引脚。 3 t+ Y9 `  E4 ?2 n3 S* d1 J4 a5 j
        查找时请先检索需要使用的功能“关键词”,比如需要SPI功能,请检索“SPI”,找到可复用成SPI功能的引脚,当前表格中默认功能列是引脚名称,功能选择列是默认配置的功能,
% q. \7 N9 r; \1 ^        例如PI16、PI17、PI18、PI19四个引脚,可以复用成SPI1,默认是UART2功能。 ( n9 p( e+ f  s8 G" W  p7 M

9 W+ \% K9 s# ^- ?- p 2 W/ e& Z2 e9 n! j0 w# x! A0 Z
5 c. p6 h3 K& N# P% w
5 G1 g/ l3 j+ k* o. J1 ^

* s, ?9 e9 C& {; C) M1 A        三、iproute配置繁琐
+ R  H! U$ y, D. M9 K$ p- }iproute需要在Buildroot里配置,需要编译Buildroot重新生成文件系统,过程太麻烦?
5 O0 u2 c) }7 [( Ziproute是一个网络管理工具,在设置波特率时有用到。如果使用飞凌嵌入式2020.08.31及之后提供的全志A40i及全志T3开发板资料,Buildroot已经配置完成,可以忽略该步操作,不用重新编译Buildroot,只需按照方法做好其它配置就可以了!这样可以减少一些不必要的编译问题,更快速的完成相关配置! 6 B7 c2 L. B+ H; p: X+ X2 z
* b! v# ?% N" E- W
        当然,也可以单独下载源码编译,
5 e# U, v) s+ I' }        下载链接:https://mirrors.edge.kernel.org/pub/linux/utils/net/iproute2/ 7 q8 f: X* Q* w7 \$ L) T. l/ ^% q
例:
2 O/ u( \5 r$ n7 _3 D; n        下载iproute2-4.10.0.tar.gz / W. b7 G8 M. F1 d
解压源码,修改Makefile文件中的交叉编译器
( P" k: s! k' q        指定CC=arm-linux-gnueabihf-gcc-5.3.1
" N- \! o# H* a& I0 }  p  O执行make编译,在ip文件夹中得到程序ip。
( X+ a, f* [. q0 p) O
* o2 ?+ W, Y5 L; k# [0 _        四、数据丢帧问题A " i" `0 q: \+ g1 u3 H& N; j
通过SPI转CAN实现的CAN功能,相对于原生CAN的性能有一定的不足,在500K波特率下外部设备单次发送多帧数据,接收数据时可能出现丢帧现象,频繁收发数据可能出现丢帧现象,为解决这一问题,需要取消CPUIdle Driver for Sunxiprocessors选项,在飞凌嵌入式提供的最新全志A40i及T3的资料源码中已经做了重新配置! * H  T4 ?, h: s
        如果您使用的不是最新资料,
7 h0 H. n7 t5 L        可以在源码中linux-3.10目录下执行makemenuconfig  ARCH=arm ( Y, z! z; ~9 F( v! v+ T" j8 Q: s: A/ Q
将[] CPU Idle Driver for Sunxi processors的编译去掉
% O; v1 l# @, V; M  VCPU Power Management  --->5 ?$ g6 u' O3 E  D. L
        [ ] CPU Idle Driver for Sunxi processors ) q$ Z* N% f4 e2 c

7 u+ R) Y" _0 g7 K# _+ z7 u. h
. L1 M: l, b, B2 o+ Q
$ R# L; u8 u/ p* M本次我们的解答问题梳理先到这里了,通过以上解答,希望能对大家的开发过程提供了帮助,减少问题,提高开发效率! % I. |; m& c8 L
3 P2 _8 T" Z* M" Q$ O$ I

) j8 D: S6 |, [! K5 B" O$ @- Q& Q+ L  V9 Z' D6 K
相关产品:                                                   / d$ {9 i$ w7 M5 x+ }' W$ L
9 V. |) Z: G# |7 H

2 u' M' M4 e" H; \7 Z
! R5 T4 z! N4 P3 Y: k
回复

使用道具 举报

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

本版积分规则

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

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

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc.

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