Dear all
I make an application used canbus to communication with all boards.Now, i have three boards, two boards is used imx535 chip.The other is m52259demomcu.All boards test can done on loopback mode. Next, i want to make test on normal mode. That boards of imx535 chip can communicates when use wire to connect CANH and CANL. Though the 52259demo board can't communicate with other boards. I have check the programe and wire, all is right.
Here are boards infomation:
imx535 boards :
cpu : imx535
can transceiver: sn65hvd230
CANH and CANL voltage is 2.2v ~ 2.7v ( i use oscilloscope got it)
52259demo boards:
cpu : pcf52259cag80
can transceiver: TJA1050
CANH and CANL voltage is 3.5v ~ 3.7v
I didn't know, why the can transceiver's voltage of 52259 is higher than imx535? Is this cause they doesn't communication ?
How can i resovle this problem?
Thanks
The voltage isn't the problem. Differential can relies on the difference between the voltages on CANH and CANL and not on their absolute voltages. I've seen what you're seeing where I work and it is due to the i.MX transceivers being powered from 3.3V while the MCF one is powered from 5V.
So what's wrong with your MCF programming? Are you ENABLING the transceiver? They usually have an enable pin connected to a CPU GPIO port and that GPIO pin has to be programmed to turn the transceiver on. Check with an oscilloscope to see if the enable pin is in the right state and if that board is transmitting anything.
The "Loopback" mode works inside the CPU controller. It will work even if you don't have the CAN pins on the CPU programmed to be CAN pins, but programmed to be GPIOs. You may have the MCF clocking wrong and may be running at a different bit rate to that the other boards are using. There's a lot of things to get wrong, but the only fast way to solve that is to look at the signals. Make sure the Transmit pin on the CPU is working, then make sure that is getting through the transceiver. Compare the bit rate with what the other devices are using. If the MCF is transmitting, and won't STOP transmitting, then its receive pin isn't working so it isn't seeing the "ACK" signals.
Good luck.
Tom
Tom Evans, thanks for your help.You are right.Different voltage is due to input diference voltage.But, i have a new problem.I have saw the protocol of canbus, that defines voltage is 1.5v to 3.5v.So, the can transceiver doesn't higher that protocol?
Excuse me. I miss some info.The board of imx535 use linux os and libsocketcan library.The 52259mcu use MQX RTOS, and my application is write upon this.At the same time, my test applications difference by modes.I use the "FlexCAN_Select_mode" function to setting it.
Before, i have see the signal with oscilloscope connect to 52259demomcu.