One spike on the clock line will screw up an entire message
As will a corrupted start bit on RS232.
Noise is noise. The real solution is in cable shielding and checksums and ACK/NACK packets, not a different bus.
PS: I2C has an ACK/NACK bit after every byte sent. The master can detect if the slave is out of sync.
the motor is not shielded, the wiring they are using for there communications nearby to the motors are, speed controlled motors are some of the loudest electrical noise sources i am aware of,
Well, that has to change or it will affect more than just the I2C bus eventually. If you care, I can post my short-term fix until I source a better-designed brushed motor.
One spike on the clock line will screw up an entire message
As will a corrupted start bit on RS232.
Noise is noise. The real solution is in cable shielding and checksums and ACK/NACK packets, not a different bus.
Wrong! A 1us pulse on the clock of a 10kHz I2C bus will screw it up. A 1us pulse on a 9600 baud RS232 connection will go unnoticed. Remember RS232 has been designed from the start to deal with noise on long wires; I2C is not.
Wrong! A 1us pulse on the clock of a 10kHz I2C bus will screw it up. A 1us pulse on a 9600 baud RS232 connection will go unnoticed. Remember RS232 has been designed from the start to deal with noise on long wires; I2C is not.
10KHZ is not an i2c clock ! it's either 100K 400K 1M or 3.2M
the new transceivers have noise rejecting circuitry. any pulse shorter than 1/3 of the clock is rejected. combine that with an active pull up circuit with ciurrent injecters in the modern transceivers and you end up with something pretty rugged.
A 1us pulse on a 9600 baud RS232 connection will go unnoticed.
That will depend on the RS232 chip, and ... guess what? There's I2C chips that can do exactly the same thing.
You still have to add checksums and packet management in very noisy environments.
Remember RS232 has been designed from the start to deal with noise on long wires; I2C is not.
Sure - back in the days when it was +/-12V and 1200 baud. These days it's generally TTL and much higher baud rates.
10KHZ is not an i2c clock ! it's either 100K 400K 1M or 3.2M
There's no lower limit. It can be 10KHz if you want it to.
10KHZ is not an i2c clock ! it's either 100K 400K 1M or 3.2M
There's no lower limit. It can be 10KHz if you want it to.
There is indeed no lower limit. But, the pulse rejectors in the newer chips only work at the 'official' I2C frequencies. Ther eis a circuit that detects what speed you are running at and adjusts the noise filter accordingly. it only works in small bands