MAX3491E RS485 Full Duplex Half Duplex - Cant Send!

Hello,
Hopefully someone out there has experience with MAX3491E chips.

I am hacking on some devices that use RS485 to communicate. Looking inside the devices, they use MAX3491E chip transceivers between them to communicate. They are full duplex and have enable pins.. Documentation uses A+B, Y+Z designations .. It appears they have the Enable pins sent to ground but don't take my word for it.

To get packet captures I've tapped into the RO and DI pins of this chip on the devices and use a serial adapter or logic analyzer. I have avoided using the A+B, Y+Z RS485 signals all together.

Now I have ordered my own MAX3491E chips and want to become a device on the network. Transition from listening to listening and writing... Wired up the chip, wrote some code, I am able to read data but when I go to send data, it seems the bits never make it on the wire. This is where I a stuck.

Do I need to switch from a listening device and flip my RX and TX pins on the RS485 side of the chip? That is, do I cross the R and D lines somewhere? I don't get why I can read but can't write.

Is there something about disabling a driver/receiver or enabling one to allow it to send?
Do I need to flip it from low to high then send? I have both RE and DE going to ground.

They mention high impedance, not really sure what that means when it comes to a 1 or 0.

A sample diagram at the bottom of page 17, seems to show R and D being flipped.

  1. If someone could look at the attached datasheet and confirm the DE pin going to ground is indeed correct for sending and the state does not matter? High Impedance mode.. ?
  2. Do I need to be concerned about enabling / disabling the driver when using/not using it ?
  3. Is there a simple sketch I can use as a test between 2 Arduinos and 2 MAX3491E chips and a hookup diagram that illustrate full duplex conversation?

Meanwhile, I'll cut some wires and see if it is really full duplex ..

Thanks!

MAX3483E-MAX3491E-1291288.zip (1.06 MB)

Actually it is relatively simple assuming you have the termination on the physical ends of the bus and no long stubs in between. Have all the transceivers on Receive and only turn on 1 transmitter at a time. RS485 is a differential bus that is good to about 2000 feet depending on the bit rate. It also works much better if everything is connected to the same ground, I always run a ground wire along with the two signal lines. This response is to help you get started in solving your problem, not solve it for you.
Good Luck & Have Fun!
Gil

Just to confirm, the chip number is MAX3491E and not MAX34891E or MAX38491E and it has a 14 pin package?
Are you using a 3.3 or 5v Arduino?

To make the transmitter active you pull DE high.

@mikb55 Thank you. I made a typo and fixed the OP.

MAX3491E 14 pin package

If I pull DE high while RE is low, I think the chip will go into a shutdown mode...

I ordered new chips without the Enable pins. - MAX3490E
Man, these buggers are expensive!

................................

@gilshultz There are 120ohm resistors in place but they don't make any difference.

I've confirmed I am putting bits on the wire now but I still only see Receive data. Which now makes sense. If I want to see BOTH sides of the conversation I need to tap in to the RS485 side.

Since TX is Driver and not receiver, I will never hear TX from the other side.

I need to finger out how to tap rs485 signals with my analyzer.

If the device shuts down when you pull DE high, then it is likely that the power supply rail is dipping below the 3v minimum required voltage, or you have a short circuit on the output.

The datasheet says

"A low-power shutdown mode is initiated by bringing both RE high and DE low. The devices will not shut down unless both the driver and receiver are disabled (high impedance). "

I don't think using a MAX3490E is going to change the behaviour you are seeing.