嵌入式爱好者

查看: 12514|回复: 1

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

[复制链接]

48

主题

55

帖子

306

积分

扫一扫,手机访问本帖
发表于 2021-12-10 17:13:01 | 显示全部楼层 |阅读模式
飞凌嵌入式基于全志系列处理器设计的OKA40i-C开发板、OKT3-C开发板因其接口丰富、低功耗、系统集成度高等特点,深受广大用户赞誉。 . ?3 b+ o1 B" _# B
) d0 r: F4 s/ s4 [$ ^% j/ ~% b
        小编通过对飞凌技术服务部“A40i/T3客户群问题解决库”进行检索,梳理了部分共性问题及解决思路。本文主要对OKA40i-C开发板/OKT3-C开发板CAN功能使用过程中多次遇到的问题进行讲解。 : K+ T& `  u" _/ y

. \! }; B, J7 J; T5 e        由于全志 A40i/T3 CPU 中未包含CAN控制器,而在实际使用过程中,如果用到CAN功能,通常会采用SPI转CAN的方式。在此之前飞凌已经提供了OKA40i-C开发板/OKT3-C开发板对CAN的支持方法(参考链接: 研发干货丨A40i/T3对CAN的支持 点击查询),本文就不在做赘述,仅针对用户在实际操作过程中遇到的问题提供解决思路,请跟着小编来一起看看吧。
. w) L% Z0 p, B+ k! E8 s8 Y* T$ }/ q# U8 z3 [" [6 Z7 `. X4 T) e
        一、中断引脚怎么如何选择? % d% y0 ^9 M- ]3 v* ~1 s: ^4 s; K
        在选择复用引脚时,需要给SPI转CAN模块选择一个中断引脚,而FETA40i-C/FETT3-C核心板并非每个引脚都具有中断功能,需要在《引脚复用对照表》中进行筛选,选择带有中断功能的GPIO# d) Y. X1 d1 w4 @
        首先需要确定哪些引脚具有中断功能,表格中引脚可复用功能中具有EINT*的引脚是具有中断功能的。我们可以从这些引脚中选择一个作为SPI转CAN模块的中断引脚,选择时注意这些引脚原本是什么功能,选择一个不需要的功能引脚作为SPI转CAN模块的中断引脚, 0 d% o5 n- t5 z1 k" x, ^
        比如下图是我们的方案中选用的PH6这个引脚。 9 S! j1 ]# B" T2 |. V

- T2 k4 I$ G0 b8 P( z# `5 q4 b
5 J- {9 {' Y7 X) I/ M# T/ ^; U
' g1 m8 ^6 P- `9 |6 l2 ?$ V7 j9 s# R, R
        二、 哪些引脚可以用作SPI功能?
1 ?' V$ ~# g* Z1)开发板默认SPI功能的引脚在OKA40i-C开发板/OKT3-C开发板上,默认引出了SPI0和SPI2两组引脚,可以选择这两组引脚。需要注意的是这两组信号默认为1.8V,需要硬件上做电平转换为3.3V才能用于SPI转CAN的设置。
& j( n7 ]) O: Z0 u7 G/ p' W
- e3 H9 }" p; n2 S! A2 q0 Z! g: b8 B9 W- v# i" k
        这两组引脚在fex文件里已经做了配置,只需要按照方法做其它修改即可。
0 D" h: H$ `( C4 D9 m. B5 `) l5 k& N# @
2)将其它功能引脚复用为SPI功能在飞凌嵌入式《A40i/T3对CAN的支持》(点击查询)一文中详细讲解了如何将开发板上UART2功能相关的引脚复用为了SPI。 4 b. z( S3 S! Q; p3 N* b5 I& d
        假如不想使用UART2引脚复用又不知道如何选择的话,飞凌嵌入式全志A40、全志T3 用户资料中提供了《引脚复用对照表》,从中查询哪些引脚可以复用为SPI功能,然后根据实际需求去选择要复用的引脚。
# _' `* x  A4 ~- R) Q        查找时请先检索需要使用的功能“关键词”,比如需要SPI功能,请检索“SPI”,找到可复用成SPI功能的引脚,当前表格中默认功能列是引脚名称,功能选择列是默认配置的功能,
( F: y( c. P5 Q* g7 r4 q        例如PI16、PI17、PI18、PI19四个引脚,可以复用成SPI1,默认是UART2功能。 8 O9 z* P; ^/ ^1 S8 S. q# b' `2 D
' |5 l3 N" z3 d% S

/ Q7 ?* R! D0 z" Y! J
0 x6 B7 U4 @; x& o" m2 r1 x) P
$ A& k* _! u, Z6 n* c9 S; B, G% |
        三、iproute配置繁琐
. C: y. j2 ?0 u; Q" M3 x3 \1 A2 ?iproute需要在Buildroot里配置,需要编译Buildroot重新生成文件系统,过程太麻烦? 4 b( }' J& n/ {1 E- Y/ X! D
iproute是一个网络管理工具,在设置波特率时有用到。如果使用飞凌嵌入式2020.08.31及之后提供的全志A40i及全志T3开发板资料,Buildroot已经配置完成,可以忽略该步操作,不用重新编译Buildroot,只需按照方法做好其它配置就可以了!这样可以减少一些不必要的编译问题,更快速的完成相关配置! 9 C' @, d1 J+ G
4 i; ~/ s; C- |
        当然,也可以单独下载源码编译,
9 r8 ?+ W$ F+ V5 U" S        下载链接:https://mirrors.edge.kernel.org/pub/linux/utils/net/iproute2/
: o; `3 b& t: x3 }例: / m" c; h/ D* E$ c9 w8 g& Z
        下载iproute2-4.10.0.tar.gz   ^8 E& T. J! A9 X- ^
解压源码,修改Makefile文件中的交叉编译器 3 X$ C$ K- h0 G1 k% d. J8 Y* c
        指定CC=arm-linux-gnueabihf-gcc-5.3.1 ) }7 k! ~) j* f* k
执行make编译,在ip文件夹中得到程序ip。
4 f6 Z: Q9 t- w& }0 r/ w" D% E5 F8 _% P( ]/ O4 _% \
        四、数据丢帧问题A
8 x) x3 I  c+ U! W1 k! s2 X2 z- N通过SPI转CAN实现的CAN功能,相对于原生CAN的性能有一定的不足,在500K波特率下外部设备单次发送多帧数据,接收数据时可能出现丢帧现象,频繁收发数据可能出现丢帧现象,为解决这一问题,需要取消CPUIdle Driver for Sunxiprocessors选项,在飞凌嵌入式提供的最新全志A40i及T3的资料源码中已经做了重新配置!
, Q: n% F# J7 k8 z, o        如果您使用的不是最新资料,
6 Q# Z- Y& m$ R: a5 a5 S, i5 }* a        可以在源码中linux-3.10目录下执行makemenuconfig  ARCH=arm
6 }  j* g+ R* ]; |+ V% H( W$ D将[] CPU Idle Driver for Sunxi processors的编译去掉
9 Z7 O3 O7 A& g  vCPU Power Management  --->
2 ~9 b/ V: u" _, Y9 c0 y        [ ] CPU Idle Driver for Sunxi processors 8 _- v% p% S" _$ G9 U& F5 h

! I( b: Y, M- Z* w
: i) F8 {6 X7 ]9 K. ~3 t' t& {9 J
本次我们的解答问题梳理先到这里了,通过以上解答,希望能对大家的开发过程提供了帮助,减少问题,提高开发效率! / O$ h) n1 N6 Q# e6 e

; K" Y' h9 ~8 n" a" b5 m( {+ N* \2 O! Z" I. c$ C

/ S& N3 Z. o0 l9 C+ @相关产品:                                                   0 F; j) p8 t: t

# ?  ^: G. _( j9 J6 x- r
1 V0 ]" K  b3 t/ P2 f/ H2 ?/ o# D) M" \' t. f
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-6-30 08:50

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc.

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