Hardware Validation
After programming the FPGA, it’s time to validate CAN communication and UART output in the physical environment.
a) CAN Bus Connection
-
Connect FPGA pins IO71 (TX) and IO70 (RX) to the CAN transceiver (e.g., MCP2551 or TJA1050).
→ The transceiver interfaces with the physical CANH and CANL bus lines. -
Ensure 120 Ω termination resistors are placed at both ends of the CAN bus to avoid signal reflections and maintain signal integrity.
b) Status LEDs Check
-
LED0 (transmit_irq_o): Blinks when a CAN frame is sent.
-
LED1 (transmit_ack_irq_o): Lights up when the sent frame receives an ACK on the bus.
-
LED5 (txDone): Indicates that the received message has been successfully transmitted via UART.
c) UART Output Monitoring
-
Open the Serial Console in ChipInventor or use a serial terminal program (e.g., Putty, TeraTerm).
-
Set the baud rate according to the configuration in uart_can_std_printer (example: 115200 bps).
-
Observe the received messages printed on the UART terminal. Example of expected output:
makefile
CopiarEditar
RTR:0 ID:0x257 LENGTH:5 DATA: 0x48 0x45 0x4C 0x4C 0x4F -
(This corresponds to the "HELLO" message in ASCII.)
d) Reception Test
-
If there is another CAN device sending data with the same packet_id (e.g., 0x257), the receive_irq_o signal will be triggered.
-
The uart_can_std_printer will automatically display the received message on the serial terminal.
e) If Something Doesn’t Work
Check the following:
-
The baud rate of can_controller_std and confirm it matches the other devices on the network.
-
Connections between IO70/IO71 and the CAN transceiver.
-
Correct 120 Ω termination on the CAN bus.
-
Power supply and GND signals to the CAN transceiver (MCP2551/TJA1050).
-
If there is no communication:
-
Confirm tx_request_i is generating pulses (e.g., 1 Hz).
-
Try testing with another CAN node for cross-validation.
Implemented Circuit
Can Testing
No Comments