EmbeddedRelated.com
Forums
Memfault Beyond the Launch

CAN without transceivers

Started by DaveN September 13, 2005
Hi all.

I've been working with CAN for a few years and very good it is too.  I
currently have a project where we need to implement two micros on one
PCB and implementing CAN between them seems the easiest way for them to
communicate.

As far as I know all I need is to cross connect the Tx and Rx lines and
everyting should work OK, no need for transceivers as it's a short
connection and only requires 2 devices.

Does anyone have any reasons why this is not a good idea maybe from
similar experiences?


Dave.

DaveN wrote:
> Hi all. > > I've been working with CAN for a few years and very good it is too. I > currently have a project where we need to implement two micros on one > PCB and implementing CAN between them seems the easiest way for them to > communicate. > > As far as I know all I need is to cross connect the Tx and Rx lines and > everyting should work OK, no need for transceivers as it's a short > connection and only requires 2 devices. > > Does anyone have any reasons why this is not a good idea maybe from > similar experiences? > > > Dave. >
That's not going to work - each CAN controller also needs to be able to "hear" itself on the bus. But you can put together a simple bus with the help of a couple of diodes and a resistor. Connect each controller's Rx pin together with a single "Can" line, which is pulled up with a resistor (say, 4k7). Connect each Tx pin to the "Can" line with a diode, so that the Tx pin can pull the line low but only the resistor can pull it high again. I haven't tried this myself, but I believe it should work.
David Brown schrieb:
> DaveN wrote: > >> Hi all. >> >> I've been working with CAN for a few years and very good it is too. I >> currently have a project where we need to implement two micros on one >> PCB and implementing CAN between them seems the easiest way for them to >> communicate. >> >> As far as I know all I need is to cross connect the Tx and Rx lines and >> everyting should work OK, no need for transceivers as it's a short >> connection and only requires 2 devices. >> >> Does anyone have any reasons why this is not a good idea maybe from >> similar experiences? >> >> >> Dave. >> > > That's not going to work - each CAN controller also needs to be able to > "hear" itself on the bus. But you can put together a simple bus with > the help of a couple of diodes and a resistor. Connect each > controller's Rx pin together with a single "Can" line, which is pulled > up with a resistor (say, 4k7). Connect each Tx pin to the "Can" line > with a diode, so that the Tx pin can pull the line low but only the > resistor can pull it high again. I haven't tried this myself, but I > believe it should work.
The HW works. I think you can found about it by CiA. But the low level on the bus is bigger as GND (Vf diode). You must test the PCB communication by EMV and other disturbance.
efim wrote:
> David Brown schrieb: > >> DaveN wrote: >> >>> Hi all. >>> >>> I've been working with CAN for a few years and very good it is too. I >>> currently have a project where we need to implement two micros on one >>> PCB and implementing CAN between them seems the easiest way for them to >>> communicate. >>> >>> As far as I know all I need is to cross connect the Tx and Rx lines and >>> everyting should work OK, no need for transceivers as it's a short >>> connection and only requires 2 devices. >>> >>> Does anyone have any reasons why this is not a good idea maybe from >>> similar experiences? >>> >>> >>> Dave. >>> >> >> That's not going to work - each CAN controller also needs to be able >> to "hear" itself on the bus. But you can put together a simple bus >> with the help of a couple of diodes and a resistor. Connect each >> controller's Rx pin together with a single "Can" line, which is pulled >> up with a resistor (say, 4k7). Connect each Tx pin to the "Can" line >> with a diode, so that the Tx pin can pull the line low but only the >> resistor can pull it high again. I haven't tried this myself, but I >> believe it should work. > > > The HW works. I think you can found about it by CiA. But the low level > on the bus is bigger as GND (Vf diode). You must test the PCB > communication by EMV and other disturbance.
The diode drop should not cause a problem, but you can use low voltage drop diodes to be sure.
David Brown schrieb:
> efim wrote: > >> David Brown schrieb: >> >>> DaveN wrote: >>> >>>> Hi all. >>>> >>>> I've been working with CAN for a few years and very good it is too. I >>>> currently have a project where we need to implement two micros on one >>>> PCB and implementing CAN between them seems the easiest way for them to >>>> communicate. >>>> >>>> As far as I know all I need is to cross connect the Tx and Rx lines and >>>> everyting should work OK, no need for transceivers as it's a short >>>> connection and only requires 2 devices. >>>> >>>> Does anyone have any reasons why this is not a good idea maybe from >>>> similar experiences? >>>> >>>> >>>> Dave. >>>> >>> >>> That's not going to work - each CAN controller also needs to be able >>> to "hear" itself on the bus. But you can put together a simple bus >>> with the help of a couple of diodes and a resistor. Connect each >>> controller's Rx pin together with a single "Can" line, which is >>> pulled up with a resistor (say, 4k7). Connect each Tx pin to the >>> "Can" line with a diode, so that the Tx pin can pull the line low but >>> only the resistor can pull it high again. I haven't tried this >>> myself, but I believe it should work. >> >> >> >> The HW works. I think you can found about it by CiA. But the low level >> on the bus is bigger as GND (Vf diode). You must test the PCB >> communication by EMV and other disturbance. > > > The diode drop should not cause a problem, but you can use low voltage > drop diodes to be sure.
I have used such hardware for test. The problem is we know nothing about which microcontroller is used , the application and in which environment. The differential inputs of CAN transceiver is not available, we have only digital input. The input low level for microcontroller is possibly max. 0.8V. I think a silizium diode is used. Vf is about 0.7V or 0.3V for some shottky diodes. In this case you have max. 0.5V reserve. If the disturbance by environment are heavy, or PCB has a problem i.e. GND drop voltage by fast edges we are more or less sensibel to recognising low level as high depend on Vf diode. I only mean the developer must think about parts are used and Hardware must be tested by disturbance. CAN use CRC but repeat the messages need a time, and as I understand this channel is used for transfer of big data volumes. The problem is not is it able to work but how it works in the real environment.
efim wrote:
> David Brown schrieb: > >> efim wrote: >> >>> David Brown schrieb: >>> >>>> DaveN wrote: >>>> >>>>> Hi all. >>>>> >>>>> I've been working with CAN for a few years and very good it is too. I >>>>> currently have a project where we need to implement two micros on one >>>>> PCB and implementing CAN between them seems the easiest way for >>>>> them to >>>>> communicate. >>>>> >>>>> As far as I know all I need is to cross connect the Tx and Rx lines >>>>> and >>>>> everyting should work OK, no need for transceivers as it's a short >>>>> connection and only requires 2 devices. >>>>> >>>>> Does anyone have any reasons why this is not a good idea maybe from >>>>> similar experiences? >>>>> >>>>> >>>>> Dave. >>>>> >>>> >>>> That's not going to work - each CAN controller also needs to be able >>>> to "hear" itself on the bus. But you can put together a simple bus >>>> with the help of a couple of diodes and a resistor. Connect each >>>> controller's Rx pin together with a single "Can" line, which is >>>> pulled up with a resistor (say, 4k7). Connect each Tx pin to the >>>> "Can" line with a diode, so that the Tx pin can pull the line low >>>> but only the resistor can pull it high again. I haven't tried this >>>> myself, but I believe it should work. >>> >>> >>> >>> >>> The HW works. I think you can found about it by CiA. But the low >>> level on the bus is bigger as GND (Vf diode). You must test the PCB >>> communication by EMV and other disturbance. >> >> >> >> The diode drop should not cause a problem, but you can use low voltage >> drop diodes to be sure. > > > I have used such hardware for test. The problem is we know nothing about > which microcontroller is used , the application and in which > environment. The differential inputs of CAN transceiver is not > available, we have only digital input. > The input low level for microcontroller is possibly max. 0.8V. I think > a silizium diode is used. Vf is about 0.7V or 0.3V for some shottky diodes. > In this case you have max. 0.5V reserve. If the disturbance by > environment are heavy, or PCB has a problem i.e. GND drop voltage by > fast edges we are more or less sensibel to recognising low level as high > depend on Vf diode. > I only mean the developer must think about parts are used and Hardware > must be tested by disturbance. CAN use CRC but repeat the messages need > a time, and as I understand this channel is used for transfer of big > data volumes. The problem is not is it able to work but how it works in > the real environment.
You are right that it is important to check these things. But if the micro's low input limit is 0.8V, and you use a 0.3V shottky, then your 0.5V noise level should be fine. If not, then you have far more important things to worry about on the card than the CAN bus!

Memfault Beyond the Launch