Forum: FPGA, VHDL & Co. Opecore CAN: Checking for Receiving Message


von Keller T. (fabito)


Lesenswert?

Hi all,

I have sucessfully checked the initialisationand transmit operations of 
my CAN opencore (Linux PC --- > Laptop+CAN Analyser) with the following 
code:

---------MemoryMap CAN = 0x3000  -----------------------

#define CAN_CONTROL_REG 0x00
#define CAN_COMMAND_REG 0x01
#define CAN_STATUS_REG 0x02
#define CAN_INTERRUPT_REG 0x03
#define CAN_ACCEPTANCE_CODE 0x04
#define CAN_ACCEPTANCE_MASK 0x05
#define CAN_BUSTIMING_0 0x06
#define CAN_BUSTIMING_1 0x07
#define CAN_TX_IDENT_0 0x0A
#define CAN_TX_IDENT_1 0x0B
#define CAN_TX_DATA_1 0x0C
#define CAN_TX_DATA_2 0x0D
#define CAN_TX_DATA_3 0x0E
#define CAN_TX_DATA_4 0x0F
#define CAN_TX_DATA_5 0x10
#define CAN_TX_DATA_6 0x11
#define CAN_TX_DATA_7 0x12
#define CAN_TX_DATA_8 0x13
#define CAN_RX_IDENT_0 0x14
#define CAN_RX_IDENT_1 0x15
#define CAN_RX_DATA_1 0x16
#define CAN_RX_DATA_2 0x17
#define CAN_RX_DATA_3 0x18
#define CAN_RX_DATA_4 0x19
#define CAN_RX_DATA_5 0x1A
#define CAN_RX_DATA_6 0x1B
#define CAN_RX_DATA_7 0x1C
#define CAN_RX_DATA_8 0x1D
#define CAN_CLK_DIVIDER 0x1F
.......

#
# Can Initialisation from Linux PC
#
#
./regWr 0x3000 b 0x1F
./regWr 0x3004 b 0x72
./regWr 0x3005 b 0x58
./regWr 0x3006 b 0x00
./regWr 0x3007 b 0x7F
./regWr 0x301F b 0x05
./regWr 0x3000 b 0x1E
./regWr 0x3003 b 0x04
./regWr 0x3002 b 0x04

#
#
# Cand Send Message from Linux PC
#
#
./regWr 0x300A b 0x08
./regWr 0x300B b 0x48
./regWr 0x300C b 0x09
./regWr 0x300D b 0x09
./regWr 0x300E b 0x08
./regWr 0x300F b 0x08
./regWr 0x3010 b 0x07
./regWr 0x3011 b 0x07
./regWr 0x3012 b 0x06
./regWr 0x3013 b 0x06
./regWr 0x3001 b 0x01


Now my concern is to send a CAN Msg from CAN Analyser and see this on my 
Linux PC. what should I do ?
The first thing I noticed is there is no Rcv Registers (Then I though 
maybe it uses the same Tx by receiving)
So
1) am I rigth by considering that: Rx registers = Tx registers ? which 
registers should I check for a Message send from the CAN Analyser ?
2) In which sequencies should I set those registers in order to activate 
the receiving operation ?

within the CAN_REGISTERS Files there is no mentions about Receive 
registers
/* This section is for BASIC and EXTENDED mode */
wire we_acceptance_code_0       = cs & we &   reset_mode  & 
((~extended_mode) & (addr == 8'd4)  | extended_mode & (addr == 8'd16));
wire we_acceptance_mask_0       = cs & we &   reset_mode  & 
((~extended_mode) & (addr == 8'd5)  | extended_mode & (addr == 8'd20));
wire we_tx_data_0               = cs & we & (~reset_mode) & 
((~extended_mode) & (addr == 8'd10) | extended_mode & (addr == 8'd16)) & 
transmit_buffer_status;
wire we_tx_data_1               = cs & we & (~reset_mode) & 
((~extended_mode) & (addr == 8'd11) | extended_mode & (addr == 8'd17)) & 
transmit_buffer_status;
wire we_tx_data_2               = cs & we & (~reset_mode) & 
((~extended_mode) & (addr == 8'd12) | extended_mode & (addr == 8'd18)) & 
transmit_buffer_status;
wire we_tx_data_3               = cs & we & (~reset_mode) & 
((~extended_mode) & (addr == 8'd13) | extended_mode & (addr == 8'd19)) & 
transmit_buffer_status;
wire we_tx_data_4               = cs & we & (~reset_mode) & 
((~extended_mode) & (addr == 8'd14) | extended_mode & (addr == 8'd20)) & 
transmit_buffer_status;
wire we_tx_data_5               = cs & we & (~reset_mode) & 
((~extended_mode) & (addr == 8'd15) | extended_mode & (addr == 8'd21)) & 
transmit_buffer_status;
wire we_tx_data_6               = cs & we & (~reset_mode) & 
((~extended_mode) & (addr == 8'd16) | extended_mode & (addr == 8'd22)) & 
transmit_buffer_status;
wire we_tx_data_7               = cs & we & (~reset_mode) & 
((~extended_mode) & (addr == 8'd17) | extended_mode & (addr == 8'd23)) & 
transmit_buffer_status;
wire we_tx_data_8               = cs & we & (~reset_mode) & 
((~extended_mode) & (addr == 8'd18) | extended_mode & (addr == 8'd24)) & 
transmit_buffer_status;
wire we_tx_data_9               = cs & we & (~reset_mode) & 
((~extended_mode) & (addr == 8'd19) | extended_mode & (addr == 8'd25)) & 
transmit_buffer_status;

So I would appreciate any advice allowing me to move forward.

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Two problems.
First: you are posting in the /German FPGA/ forum. I can't see any 
correlation between your question and programmable logic.
Second: if you desire english conversation, you should post on 
https://embdev.net
But you may prefer German language. We also...

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.