嵌入式爱好者

查看: 12689|回复: 1

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

[复制链接]

48

主题

55

帖子

306

积分

扫一扫,手机访问本帖
发表于 2021-12-10 17:13:01 | 显示全部楼层 |阅读模式
飞凌嵌入式基于全志系列处理器设计的OKA40i-C开发板、OKT3-C开发板因其接口丰富、低功耗、系统集成度高等特点,深受广大用户赞誉。 5 h9 \# r  m9 X$ R! q2 Z8 n
$ I! h, D) k7 ?& R- @. {% ~# r- W# I
        小编通过对飞凌技术服务部“A40i/T3客户群问题解决库”进行检索,梳理了部分共性问题及解决思路。本文主要对OKA40i-C开发板/OKT3-C开发板CAN功能使用过程中多次遇到的问题进行讲解。 ' h! c$ g( t: _6 s( @9 j8 x

+ D1 C  @2 d. X+ f        由于全志 A40i/T3 CPU 中未包含CAN控制器,而在实际使用过程中,如果用到CAN功能,通常会采用SPI转CAN的方式。在此之前飞凌已经提供了OKA40i-C开发板/OKT3-C开发板对CAN的支持方法(参考链接: 研发干货丨A40i/T3对CAN的支持 点击查询),本文就不在做赘述,仅针对用户在实际操作过程中遇到的问题提供解决思路,请跟着小编来一起看看吧。 ; U1 @- E  t# g/ W& R  R
. M9 K& M5 m& ^) p$ }
        一、中断引脚怎么如何选择?
  i+ Q! f! T, B        在选择复用引脚时,需要给SPI转CAN模块选择一个中断引脚,而FETA40i-C/FETT3-C核心板并非每个引脚都具有中断功能,需要在《引脚复用对照表》中进行筛选,选择带有中断功能的GPIO
. x( }" J7 y& Z  W! `        首先需要确定哪些引脚具有中断功能,表格中引脚可复用功能中具有EINT*的引脚是具有中断功能的。我们可以从这些引脚中选择一个作为SPI转CAN模块的中断引脚,选择时注意这些引脚原本是什么功能,选择一个不需要的功能引脚作为SPI转CAN模块的中断引脚,
; [6 N$ ]& @+ Q  g3 R+ u5 H        比如下图是我们的方案中选用的PH6这个引脚。
3 S4 k* m. ]$ P2 q
% l0 ]) M" f3 Y; F8 D. K , a$ @8 _9 G( D/ m
* y3 n( G: D$ B, N3 t; n
$ u/ r& T3 p6 h9 t
        二、 哪些引脚可以用作SPI功能?
( f3 Z" _3 u; J1 s! N1 `- W1)开发板默认SPI功能的引脚在OKA40i-C开发板/OKT3-C开发板上,默认引出了SPI0和SPI2两组引脚,可以选择这两组引脚。需要注意的是这两组信号默认为1.8V,需要硬件上做电平转换为3.3V才能用于SPI转CAN的设置。 ! A# x& |) Q; g2 |8 W5 Y6 u
, j# p7 r9 S5 k' ]' I
/ D3 [) T8 E4 ?7 f" ^0 M8 N8 D
        这两组引脚在fex文件里已经做了配置,只需要按照方法做其它修改即可。
+ U9 e- ]+ x) E' V
' w! z! I/ Q% {+ i2)将其它功能引脚复用为SPI功能在飞凌嵌入式《A40i/T3对CAN的支持》(点击查询)一文中详细讲解了如何将开发板上UART2功能相关的引脚复用为了SPI。
* K5 j: V+ g+ W6 s5 k        假如不想使用UART2引脚复用又不知道如何选择的话,飞凌嵌入式全志A40、全志T3 用户资料中提供了《引脚复用对照表》,从中查询哪些引脚可以复用为SPI功能,然后根据实际需求去选择要复用的引脚。
. {' n. u2 O& y& i        查找时请先检索需要使用的功能“关键词”,比如需要SPI功能,请检索“SPI”,找到可复用成SPI功能的引脚,当前表格中默认功能列是引脚名称,功能选择列是默认配置的功能,
' h6 o( d: g; K0 k        例如PI16、PI17、PI18、PI19四个引脚,可以复用成SPI1,默认是UART2功能。 # Q- H+ p7 V* P) \8 C$ {* V
0 m! m! k$ j/ C2 v

/ Z9 u* C% u2 Y! t$ V% E0 j 2 {& e: Q8 n4 i( ?
5 ]3 D; W- e9 @
' F2 Q! s4 `; g3 E) a
        三、iproute配置繁琐 6 H( O1 q2 t" N5 [' u6 A
iproute需要在Buildroot里配置,需要编译Buildroot重新生成文件系统,过程太麻烦?
$ ^$ [* C, x. giproute是一个网络管理工具,在设置波特率时有用到。如果使用飞凌嵌入式2020.08.31及之后提供的全志A40i及全志T3开发板资料,Buildroot已经配置完成,可以忽略该步操作,不用重新编译Buildroot,只需按照方法做好其它配置就可以了!这样可以减少一些不必要的编译问题,更快速的完成相关配置! 1 a1 g, V( D9 w# A& {( l8 P) _" Q

* V. n/ G1 K0 [# q" @$ l; a/ m" t7 Y        当然,也可以单独下载源码编译,
2 J8 U1 B, c0 u( {- O        下载链接:https://mirrors.edge.kernel.org/pub/linux/utils/net/iproute2/
' Z8 n1 d* X5 u) P例:
7 H+ l7 _5 F- z4 R        下载iproute2-4.10.0.tar.gz
% A) U5 Y2 }4 R+ f解压源码,修改Makefile文件中的交叉编译器
; N& b9 k- `/ p        指定CC=arm-linux-gnueabihf-gcc-5.3.1 , N- r) Y' p' P3 l$ |, \
执行make编译,在ip文件夹中得到程序ip。
, o7 ~, T+ t$ F( d5 ~) }7 S1 D+ t
        四、数据丢帧问题A
  _1 s5 s3 r2 @' Q2 y3 O9 Y# U$ z" w  @通过SPI转CAN实现的CAN功能,相对于原生CAN的性能有一定的不足,在500K波特率下外部设备单次发送多帧数据,接收数据时可能出现丢帧现象,频繁收发数据可能出现丢帧现象,为解决这一问题,需要取消CPUIdle Driver for Sunxiprocessors选项,在飞凌嵌入式提供的最新全志A40i及T3的资料源码中已经做了重新配置! ' m0 T: _) }) m9 I
        如果您使用的不是最新资料,
( r6 ^2 ~3 ^; L8 t+ ?        可以在源码中linux-3.10目录下执行makemenuconfig  ARCH=arm & X! @* O$ M0 R& ?5 r* b9 n
将[] CPU Idle Driver for Sunxi processors的编译去掉 5 i; b. }, B& g% `9 P" |5 S
CPU Power Management  --->
- I1 k. V! ?5 `+ a        [ ] CPU Idle Driver for Sunxi processors
2 M9 g" m# x- J6 i, }2 _# ?! Q, s ( ~: r% F6 J5 @1 P8 l; J% f, P

+ F/ O4 \2 S  A% k
8 i- S4 Q; A/ _' e. e本次我们的解答问题梳理先到这里了,通过以上解答,希望能对大家的开发过程提供了帮助,减少问题,提高开发效率! 4 n) Y$ H3 }. N% Q/ W' X. N+ ?9 q

) s5 H* S% O& ?3 C. V8 b: j! }/ H- }3 Q

- ^* c! B+ ^% W相关产品:                                                   ( h( t" J# R3 J) m6 l3 |# }

. _( r" ?, t2 y' G5 u; i  ?5 I: s: L) X: i
' u- O1 a$ M( X
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-8-27 02:54

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc.

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