嵌入式爱好者

查看: 11572|回复: 1

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

[复制链接]

46

主题

53

帖子

297

积分

扫一扫,手机访问本帖
发表于 2021-12-10 17:13:01 | 显示全部楼层 |阅读模式
飞凌嵌入式基于全志系列处理器设计的OKA40i-C开发板、OKT3-C开发板因其接口丰富、低功耗、系统集成度高等特点,深受广大用户赞誉。 6 V' d" [, G9 a( ]7 f' k1 Q' p) b

8 l* d+ f- Y* I0 i  s/ u1 q4 p        小编通过对飞凌技术服务部“A40i/T3客户群问题解决库”进行检索,梳理了部分共性问题及解决思路。本文主要对OKA40i-C开发板/OKT3-C开发板CAN功能使用过程中多次遇到的问题进行讲解。
# F: }  V; K& Q1 L' s9 Z: I& M- f5 r' E* W
        由于全志 A40i/T3 CPU 中未包含CAN控制器,而在实际使用过程中,如果用到CAN功能,通常会采用SPI转CAN的方式。在此之前飞凌已经提供了OKA40i-C开发板/OKT3-C开发板对CAN的支持方法(参考链接: 研发干货丨A40i/T3对CAN的支持 点击查询),本文就不在做赘述,仅针对用户在实际操作过程中遇到的问题提供解决思路,请跟着小编来一起看看吧。 - @' Y8 y  @' I5 E

5 t2 w( O7 U3 k& M! u% J+ F( q% Q        一、中断引脚怎么如何选择? ' l* a, G: @; N2 s) Z: M
        在选择复用引脚时,需要给SPI转CAN模块选择一个中断引脚,而FETA40i-C/FETT3-C核心板并非每个引脚都具有中断功能,需要在《引脚复用对照表》中进行筛选,选择带有中断功能的GPIO. O; n  N2 P6 R: h
        首先需要确定哪些引脚具有中断功能,表格中引脚可复用功能中具有EINT*的引脚是具有中断功能的。我们可以从这些引脚中选择一个作为SPI转CAN模块的中断引脚,选择时注意这些引脚原本是什么功能,选择一个不需要的功能引脚作为SPI转CAN模块的中断引脚,
; N* d  d1 c& X, o- T1 z, N        比如下图是我们的方案中选用的PH6这个引脚。
( C4 n1 E0 e/ t$ Y1 u( q$ V# s5 o6 I5 B
8 n4 h3 G0 l( V# B$ @
( o9 j/ M; v* V) M5 R

/ o2 r6 |: F5 |- Y        二、 哪些引脚可以用作SPI功能? * a  X# G+ E7 T! W& S9 H# J9 ^1 u
1)开发板默认SPI功能的引脚在OKA40i-C开发板/OKT3-C开发板上,默认引出了SPI0和SPI2两组引脚,可以选择这两组引脚。需要注意的是这两组信号默认为1.8V,需要硬件上做电平转换为3.3V才能用于SPI转CAN的设置。
9 S0 V- s1 X! b0 i4 { # _0 F( K4 e) L' S! K
5 B$ ~6 l; m+ s! v6 [# ^
        这两组引脚在fex文件里已经做了配置,只需要按照方法做其它修改即可。
1 z( W! f/ o+ Z0 D7 `5 d2 b7 X
' N$ p1 Y6 ^( d1 B7 U3 F3 L2)将其它功能引脚复用为SPI功能在飞凌嵌入式《A40i/T3对CAN的支持》(点击查询)一文中详细讲解了如何将开发板上UART2功能相关的引脚复用为了SPI。
4 v# I, ^0 ~  q( N& S5 L+ z        假如不想使用UART2引脚复用又不知道如何选择的话,飞凌嵌入式全志A40、全志T3 用户资料中提供了《引脚复用对照表》,从中查询哪些引脚可以复用为SPI功能,然后根据实际需求去选择要复用的引脚。
+ ]' R8 D$ L3 m8 {2 H: i& j$ u        查找时请先检索需要使用的功能“关键词”,比如需要SPI功能,请检索“SPI”,找到可复用成SPI功能的引脚,当前表格中默认功能列是引脚名称,功能选择列是默认配置的功能,
5 y" V5 M5 j4 j- Y) l        例如PI16、PI17、PI18、PI19四个引脚,可以复用成SPI1,默认是UART2功能。 4 Z3 j3 n# K3 L  E  i
# }% C+ W, [! B9 Q& Q, i

) T! F5 N% I" F4 m* [) u
0 c) ]. p" o& y4 V: y; C " H1 e: H0 X' n! b5 G" L/ X

' m) s( [. k* U% {7 I) o  E  r        三、iproute配置繁琐 4 z7 ~( }6 c2 K  P% Y. N' n5 C1 U
iproute需要在Buildroot里配置,需要编译Buildroot重新生成文件系统,过程太麻烦? / ~" _- P! x& H4 |( O
iproute是一个网络管理工具,在设置波特率时有用到。如果使用飞凌嵌入式2020.08.31及之后提供的全志A40i及全志T3开发板资料,Buildroot已经配置完成,可以忽略该步操作,不用重新编译Buildroot,只需按照方法做好其它配置就可以了!这样可以减少一些不必要的编译问题,更快速的完成相关配置!
  ~9 N3 {; y: t' y" z3 e$ @* t) f$ H" c- m5 G. a6 v
        当然,也可以单独下载源码编译,
5 y, [% e( f# \  I; X        下载链接:https://mirrors.edge.kernel.org/pub/linux/utils/net/iproute2/
4 R0 O- Y" l9 ^- d' p% @例:
9 L- x# _& h! H* |6 `        下载iproute2-4.10.0.tar.gz 0 h9 u6 D# h" r5 S
解压源码,修改Makefile文件中的交叉编译器 0 X8 U# z. k. q
        指定CC=arm-linux-gnueabihf-gcc-5.3.1
: A7 ]' _/ J# a& L. l5 ^* U- G5 R执行make编译,在ip文件夹中得到程序ip。
; [* o' y; [' |# Y  Z- t  u% i; {& C7 D
        四、数据丢帧问题A & L6 s1 D5 N; |; Z$ G
通过SPI转CAN实现的CAN功能,相对于原生CAN的性能有一定的不足,在500K波特率下外部设备单次发送多帧数据,接收数据时可能出现丢帧现象,频繁收发数据可能出现丢帧现象,为解决这一问题,需要取消CPUIdle Driver for Sunxiprocessors选项,在飞凌嵌入式提供的最新全志A40i及T3的资料源码中已经做了重新配置!
. [- b7 z4 H! [' p        如果您使用的不是最新资料,
. E9 [5 `$ \. q+ x' G2 x        可以在源码中linux-3.10目录下执行makemenuconfig  ARCH=arm 8 ]5 ~% U) y4 h: L; \6 g
将[] CPU Idle Driver for Sunxi processors的编译去掉
- `) K9 `. W' s( A. n& [6 B6 CCPU Power Management  --->
. _+ T8 w" c, G6 q2 R        [ ] CPU Idle Driver for Sunxi processors % y1 D; f- A) ]4 H

8 F& L7 x3 k& o" M6 e7 b2 b6 u& h& _+ J: n$ C/ s* Y9 t

) P: N8 G/ ?$ T9 K8 P* C本次我们的解答问题梳理先到这里了,通过以上解答,希望能对大家的开发过程提供了帮助,减少问题,提高开发效率! ( i! X' h% J# ?) G1 q( F

, b& G2 m. G( I1 T8 U9 M3 U$ S  B0 j) C: a, Y* |. q1 v1 Z

: ~+ T. J& G/ v* {相关产品:                                                   
- Q7 r3 O8 f# x) y: E; M3 E  [2 z# @4 ^
  J5 s9 P! O" M; s7 C0 ?

5 N: S, g- V* J
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-1-5 12:15

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc.

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