Introduction

This page gives an overview of canps driver which is available as part of the Xilinx Vivado and SDK distribution.
This is common for both Zynq and ZynqMP.

How to Enable

Source path for the driver:
https://github.com/Xilinx/embeddedsw/tree/master/XilinxProcessorIPLib/drivers/canps

Driver source code is organized into different folders. Below diagram shows the canps driver source organization

canps
|
-- Doc - Provides the API and data structure details
|
- Examples - Reference application to show how to use the driver APIs and calling sequence
|
- Source - Driver source files

Features Supported

Controller Features:

  • Compatible with the ISO 11898 -1, CAN 2.0A, and CAN 2.0B standards
  • Standard (11-bit identifier) and extended (29-bit identifier) frames
  • Bit rates up to 1 Mb/s
  • Transmit message FIFO (TxFIFO) with a depth of 64 messages
  • Transmit prioritization through one high-priority transmit buffer (TxHPB
  • Watermark interrupts for TxFIFO and RxFIFO
  • Automatic re-transmission on errors or arbitration loss in normal mode
  • Receive message FIFO (RxFIFO) with a depth of 64 messages
  • Four Rx acceptance filters with enables, masks and IDs
  • Loop back and snoop modes for diagnostic applications
  • Mask able error and status interrupts
  • 16-Bit time stamping for receive message
  • Readable Rx/Tx error counters

Driver Features:

  • Supports Standard and extended frames
  • Supports Config, Sleep, Normal and snoop modes
  • Supports Acceptance filter configurations
  • Supports Polled and interrupt modes
  • Water mark interrupt support for both Tx and Rx FIFOs
  • Supports Transmit prioritization through one high-priority transmit buffer (TxHPB)

Test cases

Canps polled mode test

https://github.com/Xilinx/embeddedsw/blob/master/XilinxProcessorIPLib/drivers/canps/examples/xcanps_polled_example.c
It configures the CAN controller in loop back mode with no interrupt enabled and verifies the data received with data sent
Polled Mode test::
CAN Polled Mode Example Test
Successfully ran CAN Polled Mode Example Test

Canps interrupt mode test

https://github.com/Xilinx/embeddedsw/blob/master/XilinxProcessorIPLib/drivers/canps/examples/xcanps_intr_example.c
It configures the CAN controller in loop back mode with interrupts enabled and verifies the data received with data sent
Interrupt Mode test:
CAN Interrupt Example Test
Successfully ran CAN Interrupt Example Test

Canps water mark interrupt test

https://github.com/Xilinx/embeddedsw/blob/master/XilinxProcessorIPLib/drivers/canps/examples/xcanps_watermark_intr_example.c
It configures the CAN controller in loop back mode with rx and tx water mark interrupts enabled with some RX and TX threshold.
Water Mark Test:
CAN Watermark Example Test
Successfully ran CAN Watermark Example Test

Known issues and Limitations

  • None

Change Log

  • 2017.1

    • None
  • 2017.2

    • None
  • 2017.3

    • None
  • 2017.4

    • None
  • 2018.1

    • None
  • 2018.2

    • None


Related Links