I am using T89C51CC03 UA right now. while debugging I found out that even if I wanna send a message once ( via interrupt ), the CAN bus is full of the same message with a period of 1.5ms. I am sure that other messages are not sent by the interrrupt routine by placing some debugging code inside it. My question is : Are the other messages sent automatically by the hardware itself if there are no other CAN nodes on the bus to receive them? If so, how could I solve this problem?
I guess I don't really understand your question? So are you asking how to stop a CAN message once you transmit it? Your software should recognize this type of error (AckError) and then take whatever appropriate failsafe action you need. I am not familiar with your CAN peripheral so I would recommend that you follow the procedure in the user's manual to stop a message in this case. The transmitter will leave the bit in the ACK slot as a recessive bit and the receiver(s) will drive a dominant bit in the ACK slot when they receive the data correctly. This is totally done by the CAN hardware peripheral in the microcontrollers. Perhaps you could have a look to this web site for more information or download the CAN specification from Bosch. http://www.can-cia.org/can/protocol http://www.semiconductors.bosch.de/pdf/can2spec.pdf
Thanks Finally, I found out it was the problem of my FPGA, it blocked the CAN bus which I did not expect. Regards vince