嵌入式爱好者

查看: 11054|回复: 1

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

[复制链接]

46

主题

53

帖子

295

积分

扫一扫,手机访问本帖
发表于 2021-12-10 17:13:01 | 显示全部楼层 |阅读模式
飞凌嵌入式基于全志系列处理器设计的OKA40i-C开发板、OKT3-C开发板因其接口丰富、低功耗、系统集成度高等特点,深受广大用户赞誉。
( e& W1 R/ W" j* p
) a; F6 B! ?# o3 B        小编通过对飞凌技术服务部“A40i/T3客户群问题解决库”进行检索,梳理了部分共性问题及解决思路。本文主要对OKA40i-C开发板/OKT3-C开发板CAN功能使用过程中多次遇到的问题进行讲解。 0 R( x3 r* w/ w

& X) B5 X" O; \$ l        由于全志 A40i/T3 CPU 中未包含CAN控制器,而在实际使用过程中,如果用到CAN功能,通常会采用SPI转CAN的方式。在此之前飞凌已经提供了OKA40i-C开发板/OKT3-C开发板对CAN的支持方法(参考链接: 研发干货丨A40i/T3对CAN的支持 点击查询),本文就不在做赘述,仅针对用户在实际操作过程中遇到的问题提供解决思路,请跟着小编来一起看看吧。
! |* w) {5 _8 A" c
" ]6 v4 c+ o  L: m        一、中断引脚怎么如何选择?
+ ^$ r  |, Q6 x        在选择复用引脚时,需要给SPI转CAN模块选择一个中断引脚,而FETA40i-C/FETT3-C核心板并非每个引脚都具有中断功能,需要在《引脚复用对照表》中进行筛选,选择带有中断功能的GPIO( K8 G/ z/ f/ s% y$ p4 ^1 x0 x* Y
        首先需要确定哪些引脚具有中断功能,表格中引脚可复用功能中具有EINT*的引脚是具有中断功能的。我们可以从这些引脚中选择一个作为SPI转CAN模块的中断引脚,选择时注意这些引脚原本是什么功能,选择一个不需要的功能引脚作为SPI转CAN模块的中断引脚, " X; Y6 B4 S% ~5 g% C9 ]- |
        比如下图是我们的方案中选用的PH6这个引脚。
" U+ f9 O. d0 R6 X/ c$ h, C
8 R& `$ `' W9 t+ b
1 Z4 O* R  N: Q6 p0 O' F % b  u  c; l3 ]7 \8 [3 v
! O9 w  d6 B3 l: ]: D$ B: w9 o
        二、 哪些引脚可以用作SPI功能? ) Q/ T5 P6 m# W$ [
1)开发板默认SPI功能的引脚在OKA40i-C开发板/OKT3-C开发板上,默认引出了SPI0和SPI2两组引脚,可以选择这两组引脚。需要注意的是这两组信号默认为1.8V,需要硬件上做电平转换为3.3V才能用于SPI转CAN的设置。
9 q/ |, a  W2 V' g8 k- M* M- a
- B+ Z8 j( a2 L; o  f  D1 l+ z9 Z- S
6 }( [4 h) {9 o7 `: L8 n9 u+ ~6 K. a        这两组引脚在fex文件里已经做了配置,只需要按照方法做其它修改即可。 9 k, |5 K' Z* i$ J& X( B
' C% v5 D4 Z" n( U
2)将其它功能引脚复用为SPI功能在飞凌嵌入式《A40i/T3对CAN的支持》(点击查询)一文中详细讲解了如何将开发板上UART2功能相关的引脚复用为了SPI。 $ n0 d- P* s2 Z! K2 T9 E2 X! @
        假如不想使用UART2引脚复用又不知道如何选择的话,飞凌嵌入式全志A40、全志T3 用户资料中提供了《引脚复用对照表》,从中查询哪些引脚可以复用为SPI功能,然后根据实际需求去选择要复用的引脚。 6 X1 D% m- ]5 [1 E6 s3 i2 ]0 G
        查找时请先检索需要使用的功能“关键词”,比如需要SPI功能,请检索“SPI”,找到可复用成SPI功能的引脚,当前表格中默认功能列是引脚名称,功能选择列是默认配置的功能,
: I8 Z, ?; t! c        例如PI16、PI17、PI18、PI19四个引脚,可以复用成SPI1,默认是UART2功能。
9 l0 a+ w) i; X6 y1 H( F. q( n, {* L9 O  `
# y7 d5 v) `3 i( l  M

5 M; [& f$ J& ]' U# f; p% q& l ' }. ]6 v( h4 v
( Z5 d0 K* y2 X: @6 h7 E
        三、iproute配置繁琐 # j) j! \9 B& `  C& {9 I
iproute需要在Buildroot里配置,需要编译Buildroot重新生成文件系统,过程太麻烦? ) N. @- E6 o  `2 F5 m- b
iproute是一个网络管理工具,在设置波特率时有用到。如果使用飞凌嵌入式2020.08.31及之后提供的全志A40i及全志T3开发板资料,Buildroot已经配置完成,可以忽略该步操作,不用重新编译Buildroot,只需按照方法做好其它配置就可以了!这样可以减少一些不必要的编译问题,更快速的完成相关配置! & ]1 Y% a0 O0 Z3 E. C$ F3 t

+ R3 @/ f3 k0 C, O9 k: Q        当然,也可以单独下载源码编译, 7 ?. m* n5 j' b% ?9 m4 S
        下载链接:https://mirrors.edge.kernel.org/pub/linux/utils/net/iproute2/ ; Z+ [: b5 p' I2 R  w& t
例:
/ d! c+ {0 T9 P; e0 j& R9 F* H        下载iproute2-4.10.0.tar.gz
9 b3 a& j. b8 d" e' ^4 e' }解压源码,修改Makefile文件中的交叉编译器
& s0 \! A5 K* t0 N        指定CC=arm-linux-gnueabihf-gcc-5.3.1 6 F  |+ N7 a; c- i6 [
执行make编译,在ip文件夹中得到程序ip。
' W. p& Z& ^% f
- |4 s& T/ y0 A8 c" l0 K; H        四、数据丢帧问题A
0 c) p% Q- i9 [( j通过SPI转CAN实现的CAN功能,相对于原生CAN的性能有一定的不足,在500K波特率下外部设备单次发送多帧数据,接收数据时可能出现丢帧现象,频繁收发数据可能出现丢帧现象,为解决这一问题,需要取消CPUIdle Driver for Sunxiprocessors选项,在飞凌嵌入式提供的最新全志A40i及T3的资料源码中已经做了重新配置!
- D5 W8 ~+ s4 f- R        如果您使用的不是最新资料, - X1 C6 U; G3 `. R+ K) {/ M
        可以在源码中linux-3.10目录下执行makemenuconfig  ARCH=arm
; d0 ?% P6 ~$ b" z将[] CPU Idle Driver for Sunxi processors的编译去掉 8 s7 c1 ~# P2 B4 z. \& R: B
CPU Power Management  --->2 s: Z' w- }* F3 \8 r' X& x
        [ ] CPU Idle Driver for Sunxi processors ( p2 X$ Y( t7 z

& W  Y4 q( e" E' d5 n$ _
: M0 s+ Y0 [& B" I  ]4 _* K% t+ w, _7 o+ ?0 y
本次我们的解答问题梳理先到这里了,通过以上解答,希望能对大家的开发过程提供了帮助,减少问题,提高开发效率! ' a* ~8 R$ U2 V) v* i- a
! g  L& h% e# t) ^

7 |: {8 Q- V; ]3 n/ q% E  [! t4 i
' g# m$ k7 [  j) z+ _) t: A! ~# K相关产品:                                                   2 U; W! e( z0 e) z+ T
. M. H( @7 J! G- ^& B4 v, a4 P, Z
+ E2 l  ]+ }+ D

3 G6 E; z6 @' H
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-8-11 09:47

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc.

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