嵌入式爱好者

查看: 9971|回复: 1

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

[复制链接]

46

主题

53

帖子

295

积分

扫一扫,手机访问本帖
发表于 2021-12-10 17:13:01 | 显示全部楼层 |阅读模式
飞凌嵌入式基于全志系列处理器设计的OKA40i-C开发板、OKT3-C开发板因其接口丰富、低功耗、系统集成度高等特点,深受广大用户赞誉。
1 ~9 ?4 ~, Y( ]* j
6 ]9 m8 l, T( ]        小编通过对飞凌技术服务部“A40i/T3客户群问题解决库”进行检索,梳理了部分共性问题及解决思路。本文主要对OKA40i-C开发板/OKT3-C开发板CAN功能使用过程中多次遇到的问题进行讲解。   t( p( t( t. ~% g1 [

3 V! w# R! c) b! n( P) Z        由于全志 A40i/T3 CPU 中未包含CAN控制器,而在实际使用过程中,如果用到CAN功能,通常会采用SPI转CAN的方式。在此之前飞凌已经提供了OKA40i-C开发板/OKT3-C开发板对CAN的支持方法(参考链接: 研发干货丨A40i/T3对CAN的支持 点击查询),本文就不在做赘述,仅针对用户在实际操作过程中遇到的问题提供解决思路,请跟着小编来一起看看吧。 ! f9 Z2 Y2 P2 R/ v! c

  n  L- d$ f1 d        一、中断引脚怎么如何选择? . U3 w: h4 F9 o: S5 X2 F
        在选择复用引脚时,需要给SPI转CAN模块选择一个中断引脚,而FETA40i-C/FETT3-C核心板并非每个引脚都具有中断功能,需要在《引脚复用对照表》中进行筛选,选择带有中断功能的GPIO
: f6 ]0 A& X5 m2 L( q( M        首先需要确定哪些引脚具有中断功能,表格中引脚可复用功能中具有EINT*的引脚是具有中断功能的。我们可以从这些引脚中选择一个作为SPI转CAN模块的中断引脚,选择时注意这些引脚原本是什么功能,选择一个不需要的功能引脚作为SPI转CAN模块的中断引脚,
& L) P0 k. q$ {" |  K  E6 q        比如下图是我们的方案中选用的PH6这个引脚。
# X, J5 {5 R9 m$ D: |. S. S
& a& B( A6 f) d: a6 [( q
# b: x4 v' i0 H ; B! {' U/ ?' s% I* v  [
1 v, g8 g1 O) J, O' R( e8 Y/ H
        二、 哪些引脚可以用作SPI功能?
0 c  k& |; K3 O( H+ o( b% }0 Z1)开发板默认SPI功能的引脚在OKA40i-C开发板/OKT3-C开发板上,默认引出了SPI0和SPI2两组引脚,可以选择这两组引脚。需要注意的是这两组信号默认为1.8V,需要硬件上做电平转换为3.3V才能用于SPI转CAN的设置。
' c8 Y; C1 l' i9 M; f7 ?( [6 }& ` # d; P% N/ |% ?# R0 s$ \

) p, u( ^$ i' x$ q( V        这两组引脚在fex文件里已经做了配置,只需要按照方法做其它修改即可。
% w; x8 l" [, V( a# `; f0 y! {1 s2 m/ X) C+ L4 w
2)将其它功能引脚复用为SPI功能在飞凌嵌入式《A40i/T3对CAN的支持》(点击查询)一文中详细讲解了如何将开发板上UART2功能相关的引脚复用为了SPI。
" M' L9 \% y2 X1 a- R# N        假如不想使用UART2引脚复用又不知道如何选择的话,飞凌嵌入式全志A40、全志T3 用户资料中提供了《引脚复用对照表》,从中查询哪些引脚可以复用为SPI功能,然后根据实际需求去选择要复用的引脚。 - W9 A! t0 S, C& P$ q$ m' G$ }+ E
        查找时请先检索需要使用的功能“关键词”,比如需要SPI功能,请检索“SPI”,找到可复用成SPI功能的引脚,当前表格中默认功能列是引脚名称,功能选择列是默认配置的功能,
; a1 N; P, L( p5 `7 }% s+ d        例如PI16、PI17、PI18、PI19四个引脚,可以复用成SPI1,默认是UART2功能。
- p* ^  ]: t5 U3 `- I% {
+ J8 N0 @$ Q" }! r , D7 V6 S3 G/ u2 \8 h+ F

: K, O( K  ?- x
* [. |7 n8 z8 J; O# r) D1 _- ?/ Q, C0 {2 N$ o0 A2 T
        三、iproute配置繁琐 & K5 `1 o% X. b
iproute需要在Buildroot里配置,需要编译Buildroot重新生成文件系统,过程太麻烦? " x* ^' _: y3 m; N& H  m6 i
iproute是一个网络管理工具,在设置波特率时有用到。如果使用飞凌嵌入式2020.08.31及之后提供的全志A40i及全志T3开发板资料,Buildroot已经配置完成,可以忽略该步操作,不用重新编译Buildroot,只需按照方法做好其它配置就可以了!这样可以减少一些不必要的编译问题,更快速的完成相关配置! & \- I: f( `" g9 h

0 t( g  @: t* ~2 \% W) E0 U        当然,也可以单独下载源码编译,
* a. s8 a- u; p( ?" x, \: @        下载链接:https://mirrors.edge.kernel.org/pub/linux/utils/net/iproute2/
5 y- @; F4 u. N例:
/ X* h6 g2 I+ N; _  r5 {: G        下载iproute2-4.10.0.tar.gz
3 O  ^& Q5 O6 B7 H: _: _3 {解压源码,修改Makefile文件中的交叉编译器 4 ^" c7 a- _) t) x6 v( h
        指定CC=arm-linux-gnueabihf-gcc-5.3.1
4 a+ O7 |& E1 W" R, d+ c执行make编译,在ip文件夹中得到程序ip。
/ D7 B- {9 N/ Q- z3 [& b# V( j4 c* E/ v  o
        四、数据丢帧问题A
0 z# Y( p: i% h! J9 e% m通过SPI转CAN实现的CAN功能,相对于原生CAN的性能有一定的不足,在500K波特率下外部设备单次发送多帧数据,接收数据时可能出现丢帧现象,频繁收发数据可能出现丢帧现象,为解决这一问题,需要取消CPUIdle Driver for Sunxiprocessors选项,在飞凌嵌入式提供的最新全志A40i及T3的资料源码中已经做了重新配置! 9 W0 M* U7 h9 B! O& l7 z! |+ y
        如果您使用的不是最新资料,
& y; j# d) K0 F/ a        可以在源码中linux-3.10目录下执行makemenuconfig  ARCH=arm - U, x* `; e1 ^3 y6 e4 I, W+ V2 x
将[] CPU Idle Driver for Sunxi processors的编译去掉 / W+ ]& B( _1 {" W/ T6 Q
CPU Power Management  --->
0 L# P" A  q2 m2 o. m4 G% C        [ ] CPU Idle Driver for Sunxi processors : C9 Z( L! [, @, z0 M: J# t
% k" R. G- m# A
* e1 m& L" ?% F7 K

- Z/ X) i5 L. f- d+ }) \本次我们的解答问题梳理先到这里了,通过以上解答,希望能对大家的开发过程提供了帮助,减少问题,提高开发效率! 2 t$ F; q6 h3 L) c
3 h+ j2 F2 L. y* U1 a, ~
1 M/ F* f2 |+ h; k) C
. E# n( Y; d. R* l* s0 T
相关产品:                                                   
4 Z/ {$ V# j$ e" ^+ e5 N8 l$ k2 S- b
& \6 D4 `; C' \# g! F

8 [. J3 N' L7 U+ [/ S2 Z
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-1-25 02:32

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc.

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