cancel
Showing results for 
Search instead for 
Did you mean: 

CAN1 TX sending continuous messages

RN
Senior
Posted on July 02, 2018 at 15:27

Hello, 

I have 2 CAN nodes ( both are nucleo f446re boards) and both connected to separate transceivers . 

I am exploring CAN_Networking ( NORMAL MODE) given in the ST example .

even if i Tx only one time, the Transmitter sending continuous same messages, and receiver node continuously getting Rx interrupt . 

i have connected CANH ( NODE 1 ) ---> CANH(NODE2) , CANL(NODE 1) ---> CANL(NODE 2 ) using jumper wires. 

also in the documentation it is mentioned that bus has to be terminated with 120ohm resistor which i have not used. is that causing any issues. ? can anyone please help me understand the problem ?

Thank you

#stm32-discovery
1 ACCEPTED SOLUTION

Accepted Solutions
Ben K
Senior III
Posted on July 02, 2018 at 21:31

I recommend reading about the CAN bus, e.g. the

https://en.wikipedia.org/wiki/CAN_bus#Layers

. A CAN bus without termination is like an I2C bus without pull-up resistor, there is nothing to provide the idle/recessive bit state, so the recessive bit symbol is missing. Being a bus also means that there are no directions on the physical level, every node receives the same common bus symbols. Just as I2C, CAN also has an ACK bit, which is set by a receiver node instead of the transmitter of the frame, this ensures that at least one other node received the frame successfully. Without this bit set, the transmission is considered failed, and the transmitter will try to resend it unless it has the NART bit set.

View solution in original post

3 REPLIES 3
Ben K
Senior III
Posted on July 02, 2018 at 21:31

I recommend reading about the CAN bus, e.g. the

https://en.wikipedia.org/wiki/CAN_bus#Layers

. A CAN bus without termination is like an I2C bus without pull-up resistor, there is nothing to provide the idle/recessive bit state, so the recessive bit symbol is missing. Being a bus also means that there are no directions on the physical level, every node receives the same common bus symbols. Just as I2C, CAN also has an ACK bit, which is set by a receiver node instead of the transmitter of the frame, this ensures that at least one other node received the frame successfully. Without this bit set, the transmission is considered failed, and the transmitter will try to resend it unless it has the NART bit set.
Posted on July 08, 2018 at 15:54

Thanks Ben for the reply . i actually found out that my transceiver is not working properly . i need to test with different one. 

Posted on July 09, 2018 at 02:31

Yes, without a connected(properly) receiver, the TX will run continuously until acknowledged by a receiver ( not connected in your case)

Yes, you must must have a Terminator.

the CanBus output stage can only pull the wire one way, the resistor pulls it back.

the lower the value of the resistor the faster the CanBus can go.

60ohms is the smallest value specified over the bus.