Peripheral Simulation
For Infineon C505CA-4E — CAN Controller
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 Controller Configuration Dialog
The Controller Area Network (CAN) Controller Configuration tab configures the on-chip CAN controller. The CAN controller provides storage for up to 15 message objects which can be a maximum of 8 bytes long.
Power Group
- CSWO (CAN Switch Off) is set if the CAN controller is disabled. If reset, the CAN controller is enabled (default after a reset).
Control Group
- CR (CAN Control Register) contains the Test mode (TEST), Initialization (INIT) and Configuration Change Enable (CCE) control bits.
- TEST (Test Mode) is used only during chip production testing. This bit must always be reset when writing to the CAN Control Register.
- INIT (Initialization) is set to to perform a software initialization the CAN Controller.
- CCE (Configuration Change enable) is set to allow the microcontroller access to the bit timing register.
Bit Timing Group
- BTR0 (CAN Bit Timing Register Low) contains the Synchronization Jump Width (SJW) and Baud Rate Prescaler (BRP) settings.
- BTR1 (CAN Bit Timing Register High) contains the Time Segment Before Sample Point (TSEG1) and Time Segment After Sample Point (TSEG2) settings.
- CMOD (CAN Controller Prescaler Selection) is set to disable the divide by 2 prescaler. If reset, enables the divide by 2 prescaler.
- Baudrate displays the current baud rate based on the Baud Rate Prescaler (BRP) value.
- BRP (Baud Rate Prescaler) contains the value-1 to be divided into the oscillator frequency to generate the desired baud rate.
- TSEG1 (Time Segment Before Sample Point) contains the number of time segments (from 1 to 7) within 1 bit time to wait before sampling 1 bit of data.
- TSEG2 (Time Segment After Sample Point) contains the number of time segments (from 2 to 15) within 1 bit time to wait after sampling 1 bit of data.
- SJW (Synchronization Jump Width) contains the maximum number of time segments 1 bit time may be reduced or lengthened during message re-synchronization.
Status Group
- SR (CAN Status Register SR) contains the Busoff (BOFF), Error Warning Status (EWRN), Received Message Successfully (RXOK), Transmitted Message Successfully (TXOK) and Last Error Code (LEC) status information.
- LEC (Last Error Code) displays the last error code reported on the CAN bus.
- TXOK (Transmitted Message Successfully) is set when the last message was sent with no errors.
- RXOK (Received Message Successfully) is set when a message was received with no errors.
- EWRN (Error Warning Status) is set when the error counter limit reaches 96.
- BOFF (Busoff Status) is set when the bus off state of the CAN Controller is set.
Global Mask Group
- GMS (Global Mask Status) contains the 11-bit identifier mask. Bits 0-4 of the upper byte of this register are always set. Disable the Extended Identifier (XTD) bit to use this mask.
- UGML (CAN Upper Global Mask Long Register) contains bits 28-13 of the 29-bit identifier mask. Enable the Extended Identifier (XTD) bit to use this mask.
- LGML (CAN Lower Global Mask Long Register) contains bits 12-0 of the 29-bit identifier mask. Enable the Extended Identifier (XTD) bit to use this mask. Bits 0-2 of the upper byte of this register are always reset.
- Mask(11-bit) displays the 11-bit identifier mask value.
- Mask(29-bit) displays the 29-bit identifier mask value.
Interrupts Group
- IR (CAN Interrupt Register) contains the identifier of a CAN interrupt request. If zero, no CAN interrupts are pending.
- IE (CAN Interrupt Enable) is set to allow the CAN controller to generate interrupts. If reset, the CAN controller cannot generate interrupts.
- SIE (CAN Status Change Interrupt Enable) is set to generate an interrupt when a message transfer completes, or when the controller detects a CAN bus error.
- EIE (CAN Error Interrupt Enable) is set to generate an interrupt when either Busoff (BOFF) or Error Warning Status (EWRN) status bits change.
Mask of Last Message (Channel 15) Group
- UMLM (Upper Mask of Last Message Register) holds bits 28-13 of the mask value used for the last incoming message.
- LMLM (Lower Mask of Last Message Register) holds bits 12-0 of the mask value used for the last incoming message.
- Mask (11-bit) displays the 11-bit last message mask.
- Mask (29-bit) displays the 29-bit last message mask.
CAN Controller - Channel Dialog
The Controller Area Network (CAN) Controller Channel tab displays and configures the channel settings for the 15 message channels on the on-chip CAN controller. The list box displays the current setting for each channel. Use the Select Channel group below the change channel settings.
Select Channel Group
- ID (Message Identifier) displays the 11-bit or 29-bit message identifier, depending on the state of the Extended Identifier (XTD) bit.
- XTD (Extended Identifier) is set if the message contains 29-bit identifiers, or reset if the message contains 11-bit identifiers.
- DIR (Message Direction) is set for transmitted messages, and reset for received messages.
- UAR (Upper Arbitration Register) contains bit 28-13 of the identifier mask used for bus arbitration.
- LAR (Lower Arbitration Register) contains bit 12-0 of the identifier mask used for bus arbitration.
- Length (Data Length) contains the length of the data in this message. Data can be from 0 to 8 bytes long.
- Data displays the data for this message in hexadecimal format.
- MSGVAL (Message Valid) is set when a message object is valid. Software resets this bit to indicate a message is no longer needed.
- INTPND (Interrupt Pending) is set when a message object generates an interrupt.
- RXIE (Receive Interrupt Enable) is set when a frame is received without error.
- TXIE (Transmit Interrupt Enable) is set when a frame is sent without error.
- NEWDAT (New Data) is set when the data portion of the message object is updated.
- MSGLST / CPUUPD (Message Lost / CPU Update) If receiving a message, this bit is set if the data portion of the message object is updated while the NEWDAT flag was set. This means the previously stored data was lost. If transmitting a message, the CPU sets this bit to indicate a message may not be transmitted at this time.
- TXRQ (Transmit Request) is set to indicate the CPU or remote node requested a message transmission, but not completed it.
- RMTPMD (Remote Pending) is set to indicate that the CAN controller received a requested for a message transmission, but it has not been transmitted. When this bit is set, the CAN controller sets TXRQ.
CANBx VTREG
Data Type: unsigned char
The CANBx VTREGs contains the eight bytes of the CAN message. CANB0 is the first byte, CANB1 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.
CANID VTREG
Data Type: unsigned long
The CANID VTREG specifies the ID of the CAN message.
- 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.
CANIN VTREG
Data Type: unsigned char
The CANIN VTREG specifies the type of CAN message the simulated MCU will receive. The values 1-4 are used:
- 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.
For example:
CANIN=2; // Input a 29-bit ID message
The following debugger function shows how you can receive CAN messages into your application.
func void CAN_Send (unsigned char msgno) {
switch (msgno)
{
case 0:
CANB0=' '; CANB1=' '; CANB2='K'; CANB3='E';
CANB4='I'; CANB5='L'; CANB6=' '; CANB7=' ';
CANL=8;
break;
case 1:
CANB0='S'; CANB1='o'; CANB2='f'; CANB3='t';
CANB4='w'; CANB5='a'; CANB6='r'; CANB7='e';
CANL=8;
break;
default:
CANB0='H'; CANB1='e'; CANB2='l'; CANB3='l';
CANB4='o'; CANB5='!'; CANB6=' '; CANB7=' ';
CANL=6;
break;
}
CANID = 456;
CANIN = 1;
}
CANL VTREG
Data Type: unsigned char
The CANL VTREG specifies the length of the CAN message in bytes.
- 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.
CANOUT VTREG
Data Type: unsigned char
The CANOUT VTREG specifies the type of CAN message that was transmitted by the simulated MCU. The values 1-4 are used:
- 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.
The following debugger signal function shows how you can monitor and report on CAN messages transmitted by your application.
signal void CAN_Recv (void) {
while (1)
{
wwatch(CANOUT);
printf ("Received CAN Message\n");
printf ("CAN ID %4.4lX (%u): ", CANID, (unsigned) CANL);
printf ("%2.2X %2.2X %2.2X %2.2X %2.2X %2.2X %2.2X %2.2X ",
(int)CANB0, (int)CANB1, (int)CANB2, (int)CANB3,
(int)CANB4, (int)CANB5, (int)CANB6, (int)CANB7);
printf ("\n");
}
}