嵌入式爱好者

查看: 11027|回复: 1

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

[复制链接]

46

主题

53

帖子

295

积分

扫一扫,手机访问本帖
发表于 2021-12-10 17:13:01 | 显示全部楼层 |阅读模式
飞凌嵌入式基于全志系列处理器设计的OKA40i-C开发板、OKT3-C开发板因其接口丰富、低功耗、系统集成度高等特点,深受广大用户赞誉。 # T" I5 Q) ]8 }! ^
# b6 t+ G  l& t- [; Z
        小编通过对飞凌技术服务部“A40i/T3客户群问题解决库”进行检索,梳理了部分共性问题及解决思路。本文主要对OKA40i-C开发板/OKT3-C开发板CAN功能使用过程中多次遇到的问题进行讲解。
0 F$ T/ G) W- A2 p7 w. m4 K& X: ~' K# S
        由于全志 A40i/T3 CPU 中未包含CAN控制器,而在实际使用过程中,如果用到CAN功能,通常会采用SPI转CAN的方式。在此之前飞凌已经提供了OKA40i-C开发板/OKT3-C开发板对CAN的支持方法(参考链接: 研发干货丨A40i/T3对CAN的支持 点击查询),本文就不在做赘述,仅针对用户在实际操作过程中遇到的问题提供解决思路,请跟着小编来一起看看吧。   O: T3 w. T9 g/ G  d
' @; j* K9 i) B! D$ J& c
        一、中断引脚怎么如何选择?
% \0 c! b8 A# ?# ]6 T# t* N+ [        在选择复用引脚时,需要给SPI转CAN模块选择一个中断引脚,而FETA40i-C/FETT3-C核心板并非每个引脚都具有中断功能,需要在《引脚复用对照表》中进行筛选,选择带有中断功能的GPIO. W: L, }! H( o8 _: j: Y# F5 m" N# H
        首先需要确定哪些引脚具有中断功能,表格中引脚可复用功能中具有EINT*的引脚是具有中断功能的。我们可以从这些引脚中选择一个作为SPI转CAN模块的中断引脚,选择时注意这些引脚原本是什么功能,选择一个不需要的功能引脚作为SPI转CAN模块的中断引脚,
6 O# `" s* X; F2 r$ ^% B0 I/ }5 M        比如下图是我们的方案中选用的PH6这个引脚。
" S3 {& t8 ]( f4 `6 c" q9 H  R! ?
1 x6 u' a2 g; D4 R
; h. r! v- g+ I9 C- e
1 J6 q: F8 c+ D- Y8 z& c" }. V) t
1 J4 H1 G/ m5 K! q        二、 哪些引脚可以用作SPI功能? 1 m% O# \7 j/ I" Z; {# ?
1)开发板默认SPI功能的引脚在OKA40i-C开发板/OKT3-C开发板上,默认引出了SPI0和SPI2两组引脚,可以选择这两组引脚。需要注意的是这两组信号默认为1.8V,需要硬件上做电平转换为3.3V才能用于SPI转CAN的设置。 ; L$ B5 P. s9 Y5 l3 x1 d. z

; d0 l  x: G& t' ~& v
( [0 T$ b, ]. M8 u! L! l/ i) H2 G        这两组引脚在fex文件里已经做了配置,只需要按照方法做其它修改即可。
; z1 K" y& j0 e/ z& K0 G; a" b$ l( q# [
2)将其它功能引脚复用为SPI功能在飞凌嵌入式《A40i/T3对CAN的支持》(点击查询)一文中详细讲解了如何将开发板上UART2功能相关的引脚复用为了SPI。
" b' D/ g+ L! E8 |        假如不想使用UART2引脚复用又不知道如何选择的话,飞凌嵌入式全志A40、全志T3 用户资料中提供了《引脚复用对照表》,从中查询哪些引脚可以复用为SPI功能,然后根据实际需求去选择要复用的引脚。 ; @: G2 U# F; {4 x3 b9 `( ~
        查找时请先检索需要使用的功能“关键词”,比如需要SPI功能,请检索“SPI”,找到可复用成SPI功能的引脚,当前表格中默认功能列是引脚名称,功能选择列是默认配置的功能, 1 J+ P: }2 L0 E9 ^3 g! G( N' g6 f; J
        例如PI16、PI17、PI18、PI19四个引脚,可以复用成SPI1,默认是UART2功能。 0 g2 s/ |. }* f0 E
1 o8 x2 k/ z: g7 k2 t+ |

7 }* N+ ?4 w' y3 t% x8 A7 s / ?3 V# U! D( O* q1 N* z6 G

/ g0 T. U% f+ H9 B: I! W; x; c3 r5 c* c# T0 t" O. F
        三、iproute配置繁琐
1 ?9 F4 U3 J% n' A6 ziproute需要在Buildroot里配置,需要编译Buildroot重新生成文件系统,过程太麻烦?
" J0 X1 x1 t% A6 m+ G8 ^iproute是一个网络管理工具,在设置波特率时有用到。如果使用飞凌嵌入式2020.08.31及之后提供的全志A40i及全志T3开发板资料,Buildroot已经配置完成,可以忽略该步操作,不用重新编译Buildroot,只需按照方法做好其它配置就可以了!这样可以减少一些不必要的编译问题,更快速的完成相关配置! 2 ^& H! {1 K' `3 L
# O1 v% M2 U4 ~8 h( s/ w# B
        当然,也可以单独下载源码编译, + }9 c7 Y* X0 @: d
        下载链接:https://mirrors.edge.kernel.org/pub/linux/utils/net/iproute2/
  y" I. m6 n& I% y' \  c, s9 K例: # v0 P: Q  Z# p$ E9 Q- r
        下载iproute2-4.10.0.tar.gz
6 ]+ g; n3 b" `: s3 V5 m7 t解压源码,修改Makefile文件中的交叉编译器
- R) N5 `% d1 R5 ^7 B        指定CC=arm-linux-gnueabihf-gcc-5.3.1
  @" F! h$ ]! S! x执行make编译,在ip文件夹中得到程序ip。 ) b3 V! ?! U& \& I/ I$ W0 R
) E6 b$ u0 T; e7 C' {
        四、数据丢帧问题A / t; W! y& |) b/ Y7 q, t
通过SPI转CAN实现的CAN功能,相对于原生CAN的性能有一定的不足,在500K波特率下外部设备单次发送多帧数据,接收数据时可能出现丢帧现象,频繁收发数据可能出现丢帧现象,为解决这一问题,需要取消CPUIdle Driver for Sunxiprocessors选项,在飞凌嵌入式提供的最新全志A40i及T3的资料源码中已经做了重新配置!
5 [: {5 G3 g0 I# M+ l9 @* Z5 L        如果您使用的不是最新资料,
' q, R4 l: a. q        可以在源码中linux-3.10目录下执行makemenuconfig  ARCH=arm 4 J$ B  i. }1 H& r# Q! q' z
将[] CPU Idle Driver for Sunxi processors的编译去掉 2 z% m% J" ~9 Q1 k* K
CPU Power Management  ---># x+ L% `- u+ N8 a
        [ ] CPU Idle Driver for Sunxi processors
: {# o' \  Y+ N' f$ U
# z9 A# G( l% p& F; P1 w, z
, \; }# z; a; T" ^# }. s
/ y' ^1 L: q5 o1 g  A, c本次我们的解答问题梳理先到这里了,通过以上解答,希望能对大家的开发过程提供了帮助,减少问题,提高开发效率! % M" e4 V0 N$ i: C2 A0 h
8 {6 A- ^5 {. D5 N; E! M. j* |
: t0 g7 k, F$ U+ y
% L9 y0 v3 E( a/ i. P8 G0 H
相关产品:                                                   
" P% f7 v7 o- }
$ R( s  ]2 D+ e! _
& _  i8 F% u0 `. O
3 ?7 n* o0 G$ d4 ]  l5 v/ F
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-7-11 23:26

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc.

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