Keil Logo

Peripheral Simulation

For NXP (founded by Philips) LPC2364 — Controller Area Network (CAN)

Simulation support for this peripheral or feature is comprised of:

  • Dialog boxes which display and allow you to change peripheral configuration.
  • VTREGs (Virtual Target Registers) which support I/O with the peripheral.

These simulation capabilities are described below.

CAN Acceptance Filter Dialog

CAN Acceptance Filter

The Controller Area Network (CAN) Acceptance Filter dialog displays the identifier lookup tables for CAN messages received by all of the CAN controllers supported by this device.

Acceptance Filter Group

  • AFMR (Acceptance Filter Mode Register) contains the following control bits:
  • AccOff is set to disable the Acceptance Filter operation. It requires that AccBP is reset.
  • AccBP is set to accept all messages on enabled CAN controllers. This bit must be set before modifying the Look Up Tables (LUT).
  • eFCAN (Enable Full CAN) is set to allow the Acceptance Filter to take care of receiving and storing messages for selected IDs on selected buses. If reset, the software must read all messages for all IDs and buses.

LUT Error Group

  • LUTerrAd (LUT Error Address Register) when LUTerr is set, contains the address in AF Lookup Table RAM where the Acceptance Filter found an error.
  • LUTerr (LUT Error) is set when the Acceptance Filter finds an error in the content of the AF Lookup Table.

Table Addresses Group

  • SFF_sa (Standard Frame Start Address Register) contains the address of the start of the individual Standard IDs in the AF Lookup Table memory. If Full CAN mode is enabled (eFCAN is set), this contains the size of the Standard ID table to search.
  • SFF_GRP_sa (Standard Frame Group Start Address Register) contains the address of the start of the grouped Standard IDs in the AF Lookup Table memory.
  • EFF_sa (Extended Frame Start Address Register) contains the address of the start of the individual Extended IDs in the AF Lookup Table memory.
  • EFF_GRP_sa (Extended Frame Group Start Addr Register) contains the address of the start of the grouped Extended IDs in the AF Lookup Table memory.
  • ENDofTable (End of AF Tables Register) contains the address above the last active address in the last active AF table. If Full CAN mode is enabled (eFCAN is set), this value marks the start of the area of Acceptance Filter RAM, where the Acceptance Filter will automatically receive messages for selected IDs on selected CAN buses.

Acceptance Filter Tables Group

  • Idx is the Look Up Table Index.
  • Table is the Look Up Table.
  • Adr is the address of the Look Up Table
  • # is the controller number. Entries which are not in ascending order are marked in red.
  • Dis is set if this filter is disabled. When there is a mismatch in the lower/upper group ID pair, the entry is marked in red.
  • ID is the Identifier. Entries which are not in ascending order or where the upper ID is lower than the lower ID in group IDs are marked in red.

Automatically Stored Rx Messages in Full CAN Group

  • Idx is the Look Up Table Index.
  • SEM (Semaphore) is set to 1 as a message is being updated, and 3 when compete. Software must reset this to 0 after reading the message.
  • DLC (Data Length Code)
  • see DLC above.
  • RTR (Remote Transmit Request) see RTR above.
  • ID is the Identifier.
  • Rx Data (Hex) is the received data in hexadecimal format.

CAN Central Registers Dialog

CAN Central Registers

The Controller Area Network (CAN) Central Registers dialog displays the status registers for all of the CAN controllers supported by this device.

TxStatus Group

  • CANTxSR (Central Transmit Status Register) contains the transmit status for the each CAN controller:
  • TSn (Transmit Status n) is set while the specified CAN controller is sending a message.
  • TBSn (Transmit Buffer Status n) is set when all 3 transmit buffers are available to the CPU.
  • TCSn (Transmit Complete Status n) is set when all requested transmissions successfully complete.

RxStatus Group

  • CANRxSR (Central Receive Status Register) contains the receive status for the each CAN controller:
  • RSn (Receive Status n) is set while the specified CAN controller is receiving a message.
  • RBSn (Receive Buffer Status n) is set when a received message is available to the CAN controller.
  • DOSn (Data Overrun Status n) is set when a message is lost because the previous message was not read from the receive buffer in time.

Miscellaneous Status Group

  • CANMSR (Miscellaneous Status Register) contains the following status bits for each CAN controller:
  • ESn (Error Status n) is set when either of the Transmit Error (TXERR) or Receive Error (TXERR) status counters has reached the Error Warning Limit (CANEWL) register limit.
  • BSn (Bus Status n) is set when there is activity on the bus for this CAN controller.

CAN Communication Dialog

CAN Communication

The Controller Area Network (CAN) Communication Dialog displays the CAN communication activity on the CAN bus. The message Number, States, Channel #, Message Identifiers, Message Direction, Data Length and Data content are displayed for each message. To clear the message display, double-click anywhere in the message display area.

CAN Controller n Dialog

CAN Controller <i>n</i>

The Controller Area Network (CAN) Controller n dialog configures on-chip CAN Controller n. Each CAN controller provides storage for up to 15 message objects which can be a maximum of 8 bytes long.

Mode Group

  • CnMOD (Mode Register) controls the basic operating mode of the CAN controller and contains the following control bits:
  • RM (Reset Mode) is set to disable CAN operation and allows register modification. If reset, this bit enables the CAN controller and prevents modification of some registers.
  • TPM (Transmit Priority Mode) is set to transmit the 3 transmit buffers based on their Transmit Priority field definition. If reset, it bases transmit priority on the CAN ID.
  • STM (Self Test Mode) is set to not require an acknowledgment of a transmitted message. If set, each transmitted message requires an acknowledgment.
  • LOM (Listen Only Mode) is set to suppress the acknowledgment after CAN message reception. CAN message transmission is suppressed also.
  • RPM (Reverse Polarity Mode) is set make the Rx pin active high. Normally, Rx and Tx are active low.
  • TM (Test Mode) is set to clock the signal on the RX pin to the Tx pin.
  • SM (Sleep Mode) is set to enter sleep mode when there are no pending CAN interrupts and no activity on the CAN bus.

Command Group

  • CnCMR (Command Register) is a write-only register than contains the following control bits:
  • TR (Transmission Request) is set to queue the current message for transmission.
  • AT (Abort Transmission) is set to cancel a pending transmission. If set with the TR bit, the transmission is attempted only once.
  • RB8 (Release Receive Buffer) is set to release the current frame status (CANRFS) and ID (CANRID) information and allow new receive data to occupy the receive buffer.
  • CD0 (Clear Data Overrun) resets the Data Overrun status (DOS) in the CAN status register (CANSR).
  • SRR (Self Reception Request) is set to queue the current message for transmission, but does not disable the receiver. It will receive the message if the Acceptance Filter recognizes the message ID.
  • STBn (Select Transmit Buffer 1-3) selects buffer 1, 2 or 3 for transmission.

Interrupt Enable Group

  • CnIER (Interrupt Enable Register) controls which CAN controller events result in an interrupt. CANIER contains the following control bits:
  • RIE (Receiver Interrupt Enable) is set to trigger an interrupt when a CAN message data is received..
  • DOIE (Data Overrun Interrupt Enable) is set to trigger an interrupt when Data Overrun errors occur.
  • IDIE (ID Ready Interrupt Enable) is set to trigger an interrupt when a CAN identifier is received.
  • TIEn (Transmit Interrupt Enable 1 - 3) is set to trigger an interrupt when the TBSn in CANSR goes from 0 to 1, indicating that Transmit buffer n is available.
  • EIE (Error Warning Interrupt Enable) is set to trigger an interrupt when Error Status (ES) or Bus Status (BS) in the Status register (CANSR) changes.
  • EPIE (Error Passive Interrupt Enable) is set to trigger an interrupt when the CAN controller switches between Error Passive (LOM enabled) and Error Active mode (LOM disabled).
  • ALIE (Arbitration Lost Interrupt Enable) is set to trigger an interrupt when the CAN controller loses arbitration while attempting to transmit.
  • BEIE (Bus Error Interrupt Enable) is set to trigger an interrupt when the CAN controller detects an error on the CAN bus.
  • WUIE (Wake-Up Interrupt Enable) is set to trigger an interrupt when the CAN bus activity is detected while the CAN controller is in Sleep mode.

Interrupt & Capture Status Group

  • CnICR (Interrupt and Capture Register) contains the status of the following interrupt events:
  • RI (Receive Interrupt) is set when a received message is available.
  • DOI (Data Overrun Interrupt) is set when a message is lost because the preceding message wasn't read from the receive buffer in time.
  • IDI (ID Ready Interrupt) is set when a CAN identifier is received.
  • TIn (Transmit Interrupt 1 - 3) is set when Transmit buffer n is available.
  • EI (Error Warning Interrupt) is set when Error Status (ES) or Bus Status (BS) in the Status register (CANSR) changes.
  • EPI (Error Passive Interrupt) is set when the CAN controller switches between Error Passive (LOM enabled) and Error Active mode (LOM disabled).
  • ALI (Arbitration Lost Interrupt) is set when arbitration is lost during a transmit.
  • BEI (Bus Error Interrupt) is set when the CAN controller detects an error on the CAN bus.
  • WUI (Wake-Up Interrupt) is set when there is CAN bus activity while the controller is in Sleep mode.
  • ERRDIR (Error Direction) is set when the CAN controller detects a bus error while receiving. It is reset if the bus error happens while transmitting.
  • ERRBIT (Error Code Capture) contains the location of the error with the frame after a bus error.
  • ERRC (Error Type) contains the type of bus error detected (Bit error, Form error, Stuff error or Other error).
  • ALCBIT (Arbitration Lost Bit) contains the bit number within the frame when arbitration was lost when trying to send a message.

Global Status Group

  • CnGSR (Global Status Register) contains the following CAN controller status bits:
  • RXERR (Rx Error Counter) contains the number of messages received in error. Setting the RM bit in the Mode register (CANMOD) allows clearing of this counter.
  • TXERR (Tx Error Counter) contains the number of messages transmitted in error. Setting the RM bit in the Mode register (CANMOD) allows clearing of this counter.
  • BS (Bus Status) is set when the Transmit Error Counter (TXERR) reaches 255. Bus activity is not allowed when this bit is set.
  • ES (Error Status) is set when the one or both of the Receive or Transmit Error Counter (RXERR or TXERR) reaches the Error Warning Limit. Bus activity is not allowed when this bit is set.
  • RBS (Receive Buffer Status) is set when a received message is available.
  • TBS (Transmit Buffer Status) is set when no transmit message is pending in any of the 3 buffers.
  • DOS (Data Overrun Status) is set when a message is lost because the preceding message wasn't read from the receive buffer in time.
  • TCS (Transmit Complete Status) is set when there are no requested transmissions pending.
  • RS (Receive Status) is set while a CAN controller is receiving a message.
  • TS (Transmit Status) is set while a CAN controller is sending a message.

Status Group

  • CnSR (Status Register) contains the following CAN controller status bits:
  • BS (Bus Status) See BS in the Global Status group.
  • ES (Error Status) See ES in the Global Status group.
  • RBS (Receive Buffer Status) See RBS in the Global Status group.
  • DOS (Data Overrun Status) See DOS in the Global Status group.
  • RS (Receive Status) See RS in the Global Status group.
  • TBSn (Transmit Buffer Status) is set when a new message may be written to transmit buffer n.
  • TCSn (Transmit Complete Status) is set when transmission of the previous message for buffer n completes.
  • TSn (Transmit Status) is set while the transmission is active for buffer n.

Bus Timing Group

  • CnBTR (Bus Timing Register) controls timing on the CAN bus based on the VLSI Peripheral Bus (VPB) clock. It contains the following controls:
  • BRP (Baud Rate Prescaler) is the value (plus 1) divided into the VPB clock to produce the CAN clock.
  • SAM (Sample Rate) is set to sample the bus 3 times. If reset, the bus is sampled only once.
  • SJW (Synchronization Jump Width) is this number of CAN clocks (1 - 4).
  • TSEG1 (Sync to Sample Delay) is the number of CAN clocks (minus 1) delay from the nominal sync point to the sample point.
  • TSEG2 (Sample to Sync Delay) is the number of CAN clocks (minus 1) delay from the sample point to the next nominal sync point.

Rx Frame Status Group

  • CnRFS (Rx Frame Status Register)
  • ID Index contains the number of the Lookup Table entry which matched the received message identifier.
  • DLC (Data Length Code) contains the length (DLC) field of the current received message.
  • BP (Bypass) is set when the current message is received in AF Bypass mode. If set, the ID Index field has no meaning.
  • FF (Frame Format) is set when the received message has a 29-bit ID. If reset, this message has an 11-bit ID.
  • RTR (Remote Transmission Request) from the received message. If set, it indicates the number of data bytes to be sent back to the sender using the same ID.

Rx ID & Data Group

  • CnRID (Rx Identifier Register) contains the Identifier field of the current received message. This is either an 11-bit or 29-bit field depending on the state of the Frame Format (FF) bit.
  • CANRDA (Rx Data Register A) contains bytes 1 - 4 of the current received message.
  • CANRDB (Rx Data Register B) contains bytes 5 - 8 of the current received message.

Txn Frame Information Group

  • CnTFI1 - CnTFI3 (Tx Frame Information Registers) contain the following frame definition information for the message to be transmitted:
  • PRIO (Priority) contains the priority value used for message arbitration when the Transmit Priority Mode (TPM) bit is set in CANMOD. Lower values have higher priority.
  • DLC (Data Length Code) contains the length (DLC) field of the next message to transmit when RTR is reset. If RTR is set, this is a request for a number of bytes to be returned.
  • FF (Frame Format) is set to transmit the next message with a 29-bit ID. If reset, transmit this message with an 11-bit ID.
  • RTR (Remote Transmission Request) is set to request a number of data bytes be sent back to this ID.

Txn ID & Data Group

  • CnTID1 - CnTID3 (Tx Identifier Register 1 - 3) contains the Identifier field of the next message to transmit for buffer n. This is either an 11-bit or 29-bit field depending on the state of the Frame Format (FF) bit.
  • CANTDAn (Tx Data Register A 1 - 3) contains bytes 1 - 4 of the next message to transmit for buffer n.
  • CANTDBn (Tx Data Register B 1 - 3) contains bytes 5 - 8 of the next message to transmit for buffer n.

CANnBx VTREG
Data Type: unsigned char

The CANnBx VTREGs contains the eight bytes of the CAN message for CAN controller n. CANnB0 is the first byte, CAN1B1 is the second byte, and so on.

  • When the simulated MCU transmits a CAN message, these VTREGs contain the message data bytes.
  • To simulate a received CAN message, these VTREGs must be initialized with the message data bytes.

CANnID VTREG
Data Type: unsigned long

The CANnID VTREG specifies the ID of the CAN message for CAN controller n. For example, CAN1ID is the ID of the CAN message for CAN controller 1.

  • When the simulated MCU transmits a CAN message, this VTREG contains the message ID.
  • To simulate a received CAN message, this VTREG must be initialized with the message ID.

CANnIN VTREG
Data Type: unsigned int

The CANnIN VTREG specifies the type of CAN message that CAN controller n will receive. The values 1-5 may be assigned to this VTREG:

  • 1: Message with 11-bit ID.
  • 2: Message with 29-bit ID.
  • 3: Message Request with 11-bit ID.
  • 4: Message Request with 29-bit ID.
  • 5: Bus Activity Start

For example:

CAN1IN=2;  // Input a 29-bit ID message

The following debugger function shows how you can receive CAN messages into your application.

func void CAN1_Send (unsigned char msgno) {

switch (msgno)
  {
  case 0:
    CAN1B0=' '; CAN1B1=' '; CAN1B2='K'; CAN1B3='E';
    CAN1B4='I'; CAN1B5='L'; CAN1B6=' '; CAN1B7=' ';
    CAN1L=8;
    break;

  case 1:
    CAN1B0='S'; CAN1B1='o'; CAN1B2='f'; CAN1B3='t';
    CAN1B4='w'; CAN1B5='a'; CAN1B6='r'; CAN1B7='e';
    CAN1L=8;
    break;

  default:
    CAN1B0='H'; CAN1B1='e'; CAN1B2='l'; CAN1B3='l';
    CAN1B4='o'; CAN1B5='!'; CAN1B6=' '; CAN1B7=' ';
    CAN1L=6;
    break;
  }

CAN1ID = 456;
CAN1IN = 1;
}

CANnL VTREG
Data Type: unsigned char

The CANnL VTREG specifies the length of the CAN message in bytes for CAN controller n.

  • When the simulated MCU transmits a CAN message, this VTREG contains the number of bytes in the message.
  • To simulate a received CAN message, this VTREG must be initialized with the number of bytes in the message.

CANnOUT VTREG
Data Type: unsigned int

The CANnOUT VTREG specifies the type of CAN message that was transmitted by CAN controller n. This VTREG may have the values 1-5:

  • 1: Message with 11-bit ID was sent.
  • 2: Message with 29-bit ID was sent.
  • 3: Message Request with 11-bit ID was sent.
  • 4: Message Request with 29-bit ID was sent.
  • 5: Bus Activity Start.

The following debugger signal function shows how you can monitor and report on CAN messages transmitted by your application.

signal void CAN1_Recv (void) {
while (1)
  {
  wwatch(CANOUT);

  printf ("Received CAN Message\n");
  printf ("CAN ID %4.4lX (%u): ", CAN1ID, (unsigned) CAN1L);
  printf ("%2.2X %2.2X %2.2X %2.2X %2.2X %2.2X %2.2X %2.2X ",
    (int)CAN1B0, (int)CAN1B1, (int)CAN1B2, (int)CAN1B3,
    (int)CAN1B4, (int)CAN1B5, (int)CAN1B6, (int)CAN1B7);
  printf ("\n");
  }
}
Get more information about the
Peripheral Simulation Capabilities
of the µVision Debugger.
  Arm logo
Important information

This site uses cookies to store information on your computer. By continuing to use our site, you consent to our cookies.

Change Settings

Privacy Policy Update

Arm’s Privacy Policy has been updated. By continuing to use our site, you consent to Arm’s Privacy Policy. Please review our Privacy Policy to learn more about our collection, use and transfers
of your data.