嵌入式爱好者

查看: 12475|回复: 1

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

[复制链接]

48

主题

55

帖子

306

积分

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

0 j' S8 u+ t0 p        小编通过对飞凌技术服务部“A40i/T3客户群问题解决库”进行检索,梳理了部分共性问题及解决思路。本文主要对OKA40i-C开发板/OKT3-C开发板CAN功能使用过程中多次遇到的问题进行讲解。 2 o; ?$ ]& `) H# O
6 N' E& [5 [, @. }" R6 \
        由于全志 A40i/T3 CPU 中未包含CAN控制器,而在实际使用过程中,如果用到CAN功能,通常会采用SPI转CAN的方式。在此之前飞凌已经提供了OKA40i-C开发板/OKT3-C开发板对CAN的支持方法(参考链接: 研发干货丨A40i/T3对CAN的支持 点击查询),本文就不在做赘述,仅针对用户在实际操作过程中遇到的问题提供解决思路,请跟着小编来一起看看吧。
4 i* ?$ ^( j: C# {' w+ T8 z7 R- D3 B0 L* p: q; I# s1 [* y
        一、中断引脚怎么如何选择?
% i' }. G5 t5 k9 D% J; {9 L0 A        在选择复用引脚时,需要给SPI转CAN模块选择一个中断引脚,而FETA40i-C/FETT3-C核心板并非每个引脚都具有中断功能,需要在《引脚复用对照表》中进行筛选,选择带有中断功能的GPIO
( }+ n) \  C2 q, U, X# \        首先需要确定哪些引脚具有中断功能,表格中引脚可复用功能中具有EINT*的引脚是具有中断功能的。我们可以从这些引脚中选择一个作为SPI转CAN模块的中断引脚,选择时注意这些引脚原本是什么功能,选择一个不需要的功能引脚作为SPI转CAN模块的中断引脚,
" k5 y6 t% c+ \        比如下图是我们的方案中选用的PH6这个引脚。 2 R: J8 b  Z  T) z6 c
3 {* x( h, P. f/ P
( K9 S% o' T( f3 ~0 H) I* A  ~; v
" b" h0 d% N! o) A( R" V! M
; e  c$ e# H/ ]- U
        二、 哪些引脚可以用作SPI功能?
. P& R% J: ]' F0 E1)开发板默认SPI功能的引脚在OKA40i-C开发板/OKT3-C开发板上,默认引出了SPI0和SPI2两组引脚,可以选择这两组引脚。需要注意的是这两组信号默认为1.8V,需要硬件上做电平转换为3.3V才能用于SPI转CAN的设置。
8 K1 i5 e6 `0 [+ e1 F3 S7 O 9 N% `5 }, I# O1 |  \' p
* P+ M( ]& @* d: a' m0 \' }' R
        这两组引脚在fex文件里已经做了配置,只需要按照方法做其它修改即可。 , B1 ]' ~% F( H! Q

- X. E" f6 H8 d; @4 h2)将其它功能引脚复用为SPI功能在飞凌嵌入式《A40i/T3对CAN的支持》(点击查询)一文中详细讲解了如何将开发板上UART2功能相关的引脚复用为了SPI。 6 w8 Y9 D3 Y" F  @+ r' B
        假如不想使用UART2引脚复用又不知道如何选择的话,飞凌嵌入式全志A40、全志T3 用户资料中提供了《引脚复用对照表》,从中查询哪些引脚可以复用为SPI功能,然后根据实际需求去选择要复用的引脚。
5 ^. F4 k" U$ T! ~8 }        查找时请先检索需要使用的功能“关键词”,比如需要SPI功能,请检索“SPI”,找到可复用成SPI功能的引脚,当前表格中默认功能列是引脚名称,功能选择列是默认配置的功能,
, ^. v' u" x7 i$ ]        例如PI16、PI17、PI18、PI19四个引脚,可以复用成SPI1,默认是UART2功能。 * [& d; e: X! w! L  `2 W* v

/ i+ @* W& y, ~* k , j* P/ \+ N) q3 P  g* o% E

; {  s7 i, i1 Y% Y ) ~" k4 A% t+ j
. e% ~& V! y9 w" k
        三、iproute配置繁琐 " J3 [  h  U: q4 U
iproute需要在Buildroot里配置,需要编译Buildroot重新生成文件系统,过程太麻烦? " V3 u2 ~& W$ K6 \' N& N
iproute是一个网络管理工具,在设置波特率时有用到。如果使用飞凌嵌入式2020.08.31及之后提供的全志A40i及全志T3开发板资料,Buildroot已经配置完成,可以忽略该步操作,不用重新编译Buildroot,只需按照方法做好其它配置就可以了!这样可以减少一些不必要的编译问题,更快速的完成相关配置!
' g( S9 ^" i) |4 y9 m% \# T
$ ~0 C9 u" y$ a  X7 D# ]( U        当然,也可以单独下载源码编译, : Y3 W: W) A/ T* C8 x* |1 \
        下载链接:https://mirrors.edge.kernel.org/pub/linux/utils/net/iproute2/ ! {  p; C: V6 c. q4 S/ h  k
例:
  t) s( z; M' ?$ h/ t        下载iproute2-4.10.0.tar.gz + q+ S" n! b, P9 G9 V( [3 {
解压源码,修改Makefile文件中的交叉编译器
- r- f6 r9 j9 v. d. R! W        指定CC=arm-linux-gnueabihf-gcc-5.3.1 ; b# i9 ~( I$ m& [6 o$ [
执行make编译,在ip文件夹中得到程序ip。
+ w' y8 ~1 u) C0 L$ Z  s, G) B4 X9 V2 `5 U3 ?
        四、数据丢帧问题A / y/ D7 d, |, ?  G
通过SPI转CAN实现的CAN功能,相对于原生CAN的性能有一定的不足,在500K波特率下外部设备单次发送多帧数据,接收数据时可能出现丢帧现象,频繁收发数据可能出现丢帧现象,为解决这一问题,需要取消CPUIdle Driver for Sunxiprocessors选项,在飞凌嵌入式提供的最新全志A40i及T3的资料源码中已经做了重新配置!
& g6 _$ I  ]/ f# ]* l1 O: n        如果您使用的不是最新资料,
* [' v2 N1 U' \5 F! M0 d0 }  x$ J+ \+ u        可以在源码中linux-3.10目录下执行makemenuconfig  ARCH=arm
$ j+ m; M9 [% w% |将[] CPU Idle Driver for Sunxi processors的编译去掉
; \1 b( l4 L) A6 q3 vCPU Power Management  --->- o6 }2 S! t+ z  E
        [ ] CPU Idle Driver for Sunxi processors 0 I" S' i7 I1 h' B6 z

; V* y9 h3 g  o" r/ k5 T4 o7 p) _$ `; n' b6 G. F& f9 o8 g
. o) f# q* L+ ~- [, Y" U( B
本次我们的解答问题梳理先到这里了,通过以上解答,希望能对大家的开发过程提供了帮助,减少问题,提高开发效率!   }% n4 F3 ?( M! d

# |) W, V, d7 o1 y. ?# y' t1 M- P5 C
" v. _& l' p4 t1 z0 b$ E, f2 F$ D1 G( o) R0 R  I- I+ U9 O0 n
相关产品:                                                   
7 h+ D4 ]9 V! x& z4 L  q' A( t. s( ~) k" y$ c# n* a. x. F, {7 r

) _, P1 v/ |" c, y" z. I" U6 N
$ ~/ M2 q. |3 v3 c" S
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-6-9 14:37

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc.

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