嵌入式爱好者

查看: 7210|回复: 1

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

[复制链接]

46

主题

51

帖子

289

积分

扫一扫,手机访问本帖
发表于 2021-12-10 17:13:01 | 显示全部楼层 |阅读模式
飞凌嵌入式基于全志系列处理器设计的OKA40i-C开发板、OKT3-C开发板因其接口丰富、低功耗、系统集成度高等特点,深受广大用户赞誉。 5 Z$ R0 `; o" O
! J) n; O6 I- L9 X' H# I0 c# r
        小编通过对飞凌技术服务部“A40i/T3客户群问题解决库”进行检索,梳理了部分共性问题及解决思路。本文主要对OKA40i-C开发板/OKT3-C开发板CAN功能使用过程中多次遇到的问题进行讲解。
9 ~" ^  u( i; i2 Y5 W- K! `2 ^5 Q& I, l; U/ p* Y6 A/ j/ C0 p
        由于全志 A40i/T3 CPU 中未包含CAN控制器,而在实际使用过程中,如果用到CAN功能,通常会采用SPI转CAN的方式。在此之前飞凌已经提供了OKA40i-C开发板/OKT3-C开发板对CAN的支持方法(参考链接: 研发干货丨A40i/T3对CAN的支持 点击查询),本文就不在做赘述,仅针对用户在实际操作过程中遇到的问题提供解决思路,请跟着小编来一起看看吧。 , [# B1 L& U" r4 k
& S& T( l3 A  O2 b
        一、中断引脚怎么如何选择?
! [6 Z8 U! i) Q, f2 W' ]! I: t        在选择复用引脚时,需要给SPI转CAN模块选择一个中断引脚,而FETA40i-C/FETT3-C核心板并非每个引脚都具有中断功能,需要在《引脚复用对照表》中进行筛选,选择带有中断功能的GPIO: O. G! [9 T. e4 ?( u
        首先需要确定哪些引脚具有中断功能,表格中引脚可复用功能中具有EINT*的引脚是具有中断功能的。我们可以从这些引脚中选择一个作为SPI转CAN模块的中断引脚,选择时注意这些引脚原本是什么功能,选择一个不需要的功能引脚作为SPI转CAN模块的中断引脚,
7 R/ |6 S+ X5 J: b4 a& H8 @        比如下图是我们的方案中选用的PH6这个引脚。 . f  G3 j8 w/ R, ?

/ N  [- k! n3 m# ]8 M
) X$ N7 m6 Y/ ?! [# `5 c' A
# Z, J6 }$ @* @# G! o
5 y6 s7 [$ B! v        二、 哪些引脚可以用作SPI功能? " \  ?- v: B: |( j2 e; b
1)开发板默认SPI功能的引脚在OKA40i-C开发板/OKT3-C开发板上,默认引出了SPI0和SPI2两组引脚,可以选择这两组引脚。需要注意的是这两组信号默认为1.8V,需要硬件上做电平转换为3.3V才能用于SPI转CAN的设置。
4 W/ K& |( R1 x6 N  @
& v, h6 c. o6 G7 U0 H* o
! }( R. @2 c3 j5 f' A* y        这两组引脚在fex文件里已经做了配置,只需要按照方法做其它修改即可。
* A! y0 E+ E( i
, F. x5 w/ d+ b1 w2)将其它功能引脚复用为SPI功能在飞凌嵌入式《A40i/T3对CAN的支持》(点击查询)一文中详细讲解了如何将开发板上UART2功能相关的引脚复用为了SPI。 6 S* e3 o+ S3 I1 D  [9 n8 g( s
        假如不想使用UART2引脚复用又不知道如何选择的话,飞凌嵌入式全志A40、全志T3 用户资料中提供了《引脚复用对照表》,从中查询哪些引脚可以复用为SPI功能,然后根据实际需求去选择要复用的引脚。 - F4 T/ ^6 c* [2 [- Y+ O" b
        查找时请先检索需要使用的功能“关键词”,比如需要SPI功能,请检索“SPI”,找到可复用成SPI功能的引脚,当前表格中默认功能列是引脚名称,功能选择列是默认配置的功能,
7 }  w) {. D" B) I) ?        例如PI16、PI17、PI18、PI19四个引脚,可以复用成SPI1,默认是UART2功能。
; Y0 G2 u; f/ D  v& f7 _' ~% g4 y) H, V  B% \

8 F- F' }% i. E2 }- W 3 e' |5 E2 d- @4 Y, f" b; y! t+ _

. h3 O5 j% o& D* X1 x8 R3 ^
5 j) ^; X: h. u3 X+ s: m        三、iproute配置繁琐
" t& [, z2 T3 G  m% z  ciproute需要在Buildroot里配置,需要编译Buildroot重新生成文件系统,过程太麻烦?
, ?. @. l( C1 |1 Tiproute是一个网络管理工具,在设置波特率时有用到。如果使用飞凌嵌入式2020.08.31及之后提供的全志A40i及全志T3开发板资料,Buildroot已经配置完成,可以忽略该步操作,不用重新编译Buildroot,只需按照方法做好其它配置就可以了!这样可以减少一些不必要的编译问题,更快速的完成相关配置! % K0 s* s# `6 i: b8 e
- b, }* x# S$ s6 [$ h/ H
        当然,也可以单独下载源码编译, 3 L% O( S% Q. \; Q2 j2 |
        下载链接:https://mirrors.edge.kernel.org/pub/linux/utils/net/iproute2/ , ?( C1 J4 I" A) e
例:
; k& o$ \, w' K1 a7 z        下载iproute2-4.10.0.tar.gz 1 t& i2 D2 {- H8 w
解压源码,修改Makefile文件中的交叉编译器 8 Q7 ]) }) t+ g  A+ u
        指定CC=arm-linux-gnueabihf-gcc-5.3.1 # s$ Q& `0 E# b4 U
执行make编译,在ip文件夹中得到程序ip。 3 H& i) z$ {9 w$ \" @* v( h( S2 Q6 B
- l* u9 c. }" J% I8 T- F0 j" L* Y
        四、数据丢帧问题A / W* l5 A' ?. ~
通过SPI转CAN实现的CAN功能,相对于原生CAN的性能有一定的不足,在500K波特率下外部设备单次发送多帧数据,接收数据时可能出现丢帧现象,频繁收发数据可能出现丢帧现象,为解决这一问题,需要取消CPUIdle Driver for Sunxiprocessors选项,在飞凌嵌入式提供的最新全志A40i及T3的资料源码中已经做了重新配置!
! K5 q  ], ~% z3 y- k1 a+ t6 [, {        如果您使用的不是最新资料, ( Y: u5 `/ o9 `8 n6 [
        可以在源码中linux-3.10目录下执行makemenuconfig  ARCH=arm
9 Z5 E- q* g1 R: o( {) K将[] CPU Idle Driver for Sunxi processors的编译去掉 9 d: \3 c% p' H
CPU Power Management  --->
7 c, l* H: d3 `        [ ] CPU Idle Driver for Sunxi processors
! b1 d% ?: J! U. z; e! r6 s+ N' n 4 S/ X% D4 V! T- e% ?1 Q
4 U. X7 v/ {: W" F
, f" [( f) t# M. h
本次我们的解答问题梳理先到这里了,通过以上解答,希望能对大家的开发过程提供了帮助,减少问题,提高开发效率!
& R# O- o0 U+ ^/ g$ o% q( q* y4 z, F0 F% b' y( _' G
" |) w7 y+ A3 F: u
0 i$ r: ~# j) ?1 b- O) _
相关产品:                                                   2 r  M! q1 w0 t6 }1 i& }, l
2 C! X8 _( P" i7 p% I
# ~, V( r2 S/ U+ B3 ~. H/ Z5 v0 ]7 O

/ j6 b. g; M7 |/ @0 W
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-26 01:11

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc.

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