MAX3490 dubious datasheet

As the title says, i found what i think is an error in the datasheet for the MAX3490 8 pin IC,
on page 15 of the datasheet it says that i can use the 3490 for multipoint RS485 network, but the 8 pin IC doesn't have the output enable pin, so when the data input pin is in either state, the IC is driving the differential output to either A-high and B-low, or A-low and B-high... and if i daisy chain multiple devices they are in conflict, it seems to me that only the MAX3491 has the capability for a RS485 multipoint network... or am i wrong?
datasheet here

The issue i'm facing is that when i connect 1 master and 1 slave, all works as it should even with 50 meters of cable at 1Mbps,
with 2 slaves it still works but it gets "funky" at times,
with 3 and 4 slaves it outright doesnt work because the voltage swing on the differential lines goes from +3v to +2V (instead of +3 to -3).

is there a workaround or do i need to use the MAX3491 IC?

From the data sheet: Driver Output Enable. The driver outputs are enabled by bringing DE high. They are high impedance when DE is low. If RE is high and DE is low, the device will enter a low-power shutdown mode. If the driver outputs are enabled, the parts function as line drivers. While they are high impedance, they function as line receivers if RE is low.

The problem appears you have termination resistors enabled on all units. Do not do this, just enable the one(s) at the physical end of the bus, the ones in the middle leave termination off.

The termination resistors were placed only on master and last slave, then i removed it all but the issue is the same, plus on page 8 figure 2 you can see that the 3488 and 3490 dont have DE or RE pins, so i dont get what are you trying to say,
I would guess that without the pins they default to enabled, both receiver and driver, and by testing with a voltmeter i get -3V between Z and Y lines with DI low, and +3V with DI high

to clarify... here's some photos

first: the slave board, red and black wires are +5V and GND, followed by A,B,Z,Y.
on the board are: 5V to 3v3 linear, ATmega48pa and MAX3490 (without termination resistors), on the backside ENS160+AHT21

then we have a test board, from USB to UART to RS485 (FT232RL + MAX3490)
the final product is an LCD display but the results are the same, as soon as i connect the 3rd slave, i lose connection with the previously working 2

at last, the connector splitter i made to test if it was a problem in cable length or something else, because when i used 4 cables for 4 slaves, i suspected the length of the wires were the issue...
notice how the A,B,Z,Y connections are flipped as per datasheet.

Looks to me like a pair of drivers/receivers that are not meant for multidrop, just for creating noise-tolerant one- way links.
I.e. intended, not dubious.

1 Like

my issue lies in the following:


why include the MAX3488 and MAX3490 here if they are not intended for this purpose?
when on page 8 fig. 2 it was already explained how to use it in single ended applications

The diagram on page 15 along with the annotations is totally ambiguous. It's not the first time I've seen errors in old Maxim datasheets.

However the 3490 is not for use in multidrop half-duplex systems.

1 Like

I am absolutely NOT and RS-485 expert.

However I was under the impression that each slave had an address and would listen of that address and only "talk" on the buss if:

  • the buss is currently free
  • had received its address from the master.

Being an older part I doubt this type of error would make it to today's documentation.

this is what i was afraid of, because it didn't quite make sense without the high-z outputs , still a shitty way to write a datasheet

They try to include to many variants of the same part and not suprising they make a mistake.

Yes, but with a driver always enabled, only one node talks.

I see the issue with the datasheet, indeed. But it truly is ancient history. I would hope that with no enable, the wary designer would dig deeper before using where enable/disable was needed.

the MAX3490 is just a transreceiver, it doesn't have an address, the ATmega48pa on the other hand was programmed to answer only when his address was called, so i have 4 slaves with 4 different addresses, and it works with any combination as long as I don't connect more than 2 slaves... here's the code

#include "defines.h"

#define DEV_ID '3'

uint16_t tvoc, eco2;
uint8_t aqi;
int32_t out;

enum
{
	step_start=0,
	step_id,
	step_cmd,
};

int main(void)
{
	_delay_ms(100);
	
	UART_init(19200);
	TWI_init(100000);
	
	char buff=0;
	uint8_t cmd_step = step_start;
	
	ENS160_set_opmode(ENS160_OPMODE_STANDARD);
	
	while(1)
	{
		if(UART_RX_ready())
		{
			if(cmd_step == step_start)
			{
				buff = UART_read_char_loop();
				if(buff == '$') cmd_step = step_id;
			}
			else if(cmd_step == step_id)
			{
				buff = UART_read_char_loop();
				if(buff == DEV_ID) cmd_step = step_cmd;
				else if(buff != '$') cmd_step = step_start;
			}
			else if(cmd_step == step_cmd)
			{
				buff = UART_read_char_loop();
				if(buff=='I')
				{
					ENS160_set_opmode(ENS160_OPMODE_STANDARD);
					printf("OK\n");
				}
				else if(buff=='R')
				{
					printf("%li\n", out);
				}
				else if(buff=='S')
				{
					printf("%i\n", ENS160_get_status());
				}
				else if(buff=='W')
				{
					int32_t data = UART_read_int();
					uint16_t rh = data>>16;
					uint16_t temp = data;
					printf("OK\n");
					ENS160_write_RH_RAW(rh);
					ENS160_write_TEMP_RAW(temp);
				}
				else if(buff!='$')
				{
					printf("NOK\n");
				}
				cmd_step = step_start;
				
				if(buff=='$')
				{
					cmd_step = step_id;
				}
			}
		}
		else
		{
			tvoc = ENS160_get_TVOC();
			eco2 = ENS160_get_ECO2();
			if(eco2>0x7FFF) eco2 = 0x7FFF;
			if(tvoc>0x7FFF) tvoc = 0x7FFF;
			eco2 &= 0x3FFE;
			aqi = ENS160_get_AQI();
			out = ((int32_t)aqi<<29) | ((int32_t)eco2<<15) | tvoc;
		}
	}
}


Does this table tell the user the MAX3490 should not used in half duplex?

the thing is, i had to make a multipoint network, cables length around 75 meters, i had a hundred of these MAX3490 lying around, cheched the datasheet, and it said to me: "yeah, you absolutely can, this is how you wire it up"... and so i sketched a couple boards and a couple hours later the prototypes were ready..., it takes little time and effort to change IC, but the 3491 isn't on my hands right now... what would the experts recommend? a CAN network? another RS485 IC?

well, half and full duplex doesn't exclude the possibility of a multipoint network, it just says that only one device can talk on the line at a time (in half duplex), or both master and 1 single slave can talk at the same time (full duplex) ... 2 vs 4 data wires

There are many choices. How many nodes? The venerable MAX485 will do 32, more modern variants (1/4 load) will do 128 apparently. There are selection guides on maxim's website, IIRC.

on this project 4 nodes + master is enough, 75 meters of ethernet cable, but the IC has to be on the bigger side, like the MAX3490 because with the CNC I can make boards with at least 0.2mm of spacing between traces

oh, and forgot to say that the layout is like this
N1 ---- N2 ---- LCD ---- N3 ---- N4,
the master is the LCD and is in the middle of the network,
the farthest node is 25 meters from the next one (N1 to N2)
and the closest is 50cm (LCD to N3)

on another datasheet i found this daisy chained multipoint RS485 network using the full duplex without the enable pins

don't i need to just connect RO and DI together to transfer data across the entire network? (like the repeater example on the maxim datasheet)
or else i could modify the software to echo the incoming data on the output
---edit---
whoops, better not echo the communication with the ATmega, if just one node fails, the whole network goes down with him... if I short the RO and DI pins instead even if the mega stops working the network is still running.
there is still another issue, if i detach one node or the MAX3490 blows up, again... the whole network stops working

but by shorting RO and DI it would become a 1 wire interface, so i would need to add a resistor from TX to the bridge, while the RX can connect freely
1wire

1 Like