Zynq平台下的两路CAN通信裸机测试教程

需积分: 5 24 下载量 151 浏览量 更新于2024-10-12 2 收藏 11.78MB RAR 举报
资源摘要信息: "zynq裸机两路CAN收发测试" 这个资源主要涉及在Xilinx Zynq平台上,使用裸机(无操作系统)进行CAN(Controller Area Network)总线的通信测试。Zynq是一种集成了ARM处理器核心和FPGA逻辑单元的SoC(System on Chip)器件,由Xilinx公司推出。该资源的使用与开发重点在于展示如何设置和控制Zynq平台上的两个CAN控制器(can0和can1)进行数据的发送和接收。 【标题】: "zynq裸机两路CAN收发测试" 的知识点包含以下几个方面: 1. Zynq平台简介: - Zynq是Xilinx推出的一款集成了ARM处理器核心和FPGA逻辑单元的SoC,这种独特的架构使得开发者可以在同一芯片上实现软硬件的协同设计,具有高性能和灵活性的特点。 - Zynq平台常用于工业控制、通信等领域,其中的ARM核心可处理复杂的控制算法,FPGA部分则可用来实现硬件加速和接口定制。 2. CAN通信技术概述: - CAN是一种多主机的串行通信协议,广泛应用于汽车电子、工业自动化等领域。 - CAN具备错误检测和处理机制,可在高干扰的环境下稳定工作。 - 一个CAN总线上可以挂载多个节点,节点之间通过标识符(ID)来区分,实现数据的有效传输。 3. 裸机编程: - 裸机编程指的是在没有操作系统的帮助下,直接对硬件进行编程。 - 进行裸机编程时,开发者需要自己管理内存、处理器和其他硬件资源。 - 裸机编程允许开发者更直接地控制硬件,但对开发者的要求更高,需要熟悉硬件细节和底层编程。 4. Zynq平台的CAN控制器使用: - 在Zynq平台上,有两个内建的CAN控制器,分别对应can0和can1。 - 使用SDK(Software Development Kit)进行编程时,需要对这些控制器进行初始化设置,并编写相应的驱动程序来实现数据的发送和接收。 - 本资源主要展示了如何操作这些控制器进行两路CAN通信的测试。 【描述】: "zynq SDK工程裸机can0、can1收发测试,只看源码部分即可,建立工程按照自己的平台版本建立。" 描述中说明了操作过程和目的: 1. SDK工程建立: - 需要使用Xilinx提供的SDK(可能是指Vivado设计套件中的SDK部分)来建立工程。 - 开发者需要根据自己的Zynq平台版本选择合适的SDK,并按照平台的规格建立裸机工程。 2. 源码分析: - 本资源主要侧重于源码部分的分析。 - 源码部分应包含对Zynq平台内建CAN控制器的初始化、配置和数据收发的函数或模块。 - 开发者需要深入理解源码中的实现逻辑和函数调用关系,从而能够进行有效的CAN通信测试。 【标签】: "zynq zynq裸机can通信 zynq-can" 提供了本资源涉及的关键技术标签: 1. Zynq: - 强调资源与Zynq平台紧密相关。 2. 裸机CAN通信: - 说明资源聚焦于在裸机环境下实现CAN通信。 3. Zynq-CAN: - 特别指出本资源是关于Zynq平台上的CAN通信技术。 【压缩包子文件的文件名称列表】: "zynq_can1-can0_test" 表明了一个具体的测试文件名,其核心为"can1-can0_test",暗示了测试重点是在两个CAN控制器之间的数据收发。 总结而言,本资源适合对Zynq平台以及CAN通信技术有一定了解的开发者或工程师,特别是那些致力于进行裸机环境下硬件接口编程的人员。通过该资源的学习,开发者可以掌握如何利用Zynq平台的SDK工具进行CAN通信的初始化设置、编程实现以及测试验证,最终实现两路CAN通道的数据收发功能。
2019-09-04 上传
ARM(ZYNQ) cortexa9 Cross compiled CAN utils: To run CAN, use the below command: 1. Set bit-timing Can supports bitrates upto 1Mb/s. Xilinx CAN h/w and driver supports these bit rates Note: Triple sampling is not supported by Xilinx CAN H/W. $ ./ip link set can0 type can bitrate 200000 or $ ./canconfig can0 bitrate 200000 2. Bring up the device $ ./ip link set can0 up or $ ./canconfig can0 start 3. Bring down the device $ ./ip link set can0 down or $ ./canconfig can0 stop 4. Transmit and receive packets with standard id number $ ./cansend can0 -i 0x14 $ ./candump can0 5. Transmit and receive packets with extended id number (--loop argument here) $ ./cansend can0 -i 0x333 $ ./candump can0 6. Loopback mode $ ./canconfig can0 ctrlmode loopback on 7. Checking link state (checking bitrate/errors/packets) $ ./ip -d -s link show can0 8. Checking net device state $ ifconfig can0 9. Getting statistics via proc $ cat /proc/net/can/stats 10. Socket CAN core uses several filter lists to deliver received CAN frames to CAN protocol modules. These receive lists, their filters and the count of filter matches can be checked in the appropriate receive list. All entries contain the device and a protocol module identifier: $ cat /proc/net/can/rcvlist_all rcvlist_all - list for unfiltered entries (no filter operations) rcvlist_eff - list for single extended frame (EFF) entries rcvlist_err - list for error message frames masks rcvlist_fil - list for mask/value filters rcvlist_inv - list for mask/value filters (inverse semantic) rcvlist_sff - list for single standard frame (SFF) entries