A40I核心板对CAN BUS的支持

本文详细介绍了如何在全志A40i核心板上利用SPI接口通过MCP2515实现CAN通信。内容包括A40i处理器的特性、接口资源,以及配置SPI接口、启用SPI2、修改设备树、配置中断、驱动程序的选择与配置。特别提到了中断引脚的选择和中断触发方式,并提供了针对可能出现丢帧问题的解决方案,如取消CPUIdleDriver。
摘要由CSDN通过智能技术生成

   全志A40i或者T3的CPU中无CAN控制器,而在实际使用过程中,会用到CAN,一般会采用SPI转CAN的方式。CAN控制器一般有两种选择,一种是MCP2515,一种是MCP2518,考虑到目MCP2518成本偏贵,我们目前采取的是接口MCP2515的方案。

  产品特性:

采用Allwinner公司Cortex-A7四核A40i处理器,运行最高速度为1.2GHZ;

  1. 支持Mali-400MP2 GPU,支持OpenGL ES 2.0 / OpenVG 1.1 standard
  2. 支持1080P 视频编码,支持H.264,VP8;多格式1080P 60fps视频解码 (H.265,H.264,VC-1, MPEG-1/2/4, VP8) 
  3. 支持双屏异显;支持RGB888/LVDS/MIPI-DSI,分辨率最高1920x1080;
  4. 支持512-2G  Bytes DDR3 SDRAM;
  5. 支持EMMC 4G-64G大容量电子盘,可启动;
  6. 支持SDIO3.0,USB2.0 HOST&OTG,2路I2C,6路UART,2路SPI,2路PWM
  7. 支持双路以太网,一路10/100M;一路10/100/1000M;
  8. 可定制宽温产品,替换AM335X
  9. 稳定的操作系统的支持,可预装Android7.0或者LINUX 3.10
  10. 超小体积,邮票孔设计160pins, 尺寸为:45*45MM

产品参数:

FUNCTION

CoM-X40I

主要参数

主控制器

Allwinner,A40i,4核Cortex-A7,1.2GHZ(Max)

内存 

512MB DDR3(最大可到2GB)

闪存 

EMMC(最大到64GMB)

视频编码

支持1080P 视频编码,支持H.264,VP8;多格式1080P 60fps视频解码 (H.265,H.264,VC-1, MPEG-1/2/4, VP8)

电源管理

AXP221S (本审计不可支持电池供电)

RTC

AXP221S内置

看门狗

I/O

串口

串口6个,LVTTL电平 

以太网

X2,一路10/100Mbps,一路10/100/100Mbps;

USB OTG

X1,高速

USB HOST

X2,高速

SD/MMC卡

四线

电阻式触摸屏

四线

系统总线

IIC接口

2

SPI接口

2

GPIO

多个3.3V LVTTL电平

音频

A40I内置

多媒体 

Graphic Chip

支持Mali-400MP2 GPU,支持OpenGL ES 2.0 / OpenVG 1.1 standard

分辨率

最大1920×1080

LCD接口

支持RGB888/LVDS/MIPI-DSI,分辨率最高1920x1080

电源

电源

5.0 V (+-5%)

Power Consumption

TBD

尺寸 & 环境

尺寸 

45MM*45MM*3.2MM

工作温度

0 ~ 70° C (可定制-30-70°C) 

工作湿度

5 ~ 95 % ,冷凝结

其他 

RoHS

YES

认证

CE

软件支持

Linux 3.10 /Android7.0/Ubuntu 16.04

在CoM-X40I核心板(以全志A40i为处理器的核心板)的接口上,我们分配一路 SPI接口MCP2515, MCP2515的io电平是 3.3V,我们务必注意A40I核心板上能够接口的SPI也要电平匹配,CoM-X40I本身是工业类处理器,盈鹏飞嵌入式已经考虑了这个3.3V的电平兼容性,连接见下图:

 

根据CPU手册第三章描述,可以将PB14-17复用为SPI2,采用PH0作为中断。

这些需要注意的是:

在选择复用引脚时,需要给SPI转CAN模块选择一个中断引脚,而CoM-X40I核心板并非每个引脚都具有中断功能,需要在《引脚复用对照表》中进行筛选,选择带有中断功能的GPIO。首先需要确定哪些引脚具有中断功能,表格中引脚可复用功能中具有EINT*的引脚是具有中断功能的。我们可以从这些引脚中选择一个作为SPI转CAN模块的中断引脚,选择时注意这些引脚原本是什么功能,选择一个不需要的功能引脚作为SPI转CAN模块的中断引脚,比如下图是我们的方案中选用的PH0这个引脚。

A40i/T3采用sys_config.fex或者dts 配置引脚复用功能,下面我们采用dts 进行配置。

01-打开SPI2

修改sys_config.fex,打开SPI2的配置。

同时修改设备树:

 

 

02-修改defconfig

采用通过其他平台验证,且适配设备树的驱动mcp251x.c,

修改defconfig 配置文件:

Networking support ---> CAN bus subsystem support --->CAN Device Drivers --->Microchip MCP251x SPI CAN controllers选中。

同时选中SPI配置,默认已支持,此处不再说明。

03-配置iproute

文件系统:

buildroot-201611/configs/sun8iw11p1_hf_defconfig

需要配置上BR2_PACKAGE_IPROUTE2=y.

重新编译,并打包镜像,烧录。

04-测试can0节点

启动之后,ifconfig 查看出现can0节点。使用以下命令进行测试:

ifconfig can0 down

ip link set can0 up type can bitrate 125000 triple-sampling on

ifconfig can0 up

cansend can0 123#12345678

candump can0

如果有必要请联系盈鹏飞嵌入式技术服务人员,提供patch文件。

注意事项

  1. 在设备树中,用作中断时, A40i/T3不是每个gpio都可以做为中断,其中PH/PI组的引脚可作为中断,本例以PH0为例,
    ,在设备树中设置中断时的如下:
    interrupt-parent = <&pio>;
    interrupts = <0 0>;
  2. 另外,需要注意驱动中的中断触发方式。
  3. 通过SPI转CAN实现的CAN功能,相对于原生CAN的性能有一定的不足,在500K波特率下外部设备单次发送多帧数据,接收数据时可能出现丢帧现象,频繁收发数据可能出现丢帧现象,为解决这一问题,需要取消CPUIdle Driver for Sunxiprocessors选项,在盈鹏飞嵌入式提供的最新的资料源码中已经做了重新配置!如果您使用的不是最新资料,可以在源码中linux-3.10目录下执行makemenuconfig ARCH=arm将[] CPU Idle Driver for Sunxi processors的编译去掉 
  • CPU Power Management  --->
  • [ ] CPU Idle Driver for Sunxi processors

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值