Fiarse del I2C y USB??

Hola a todos. Tengo una dudota con respecto al Bit Error Rate de los protocolos I2C y USB en particular.
Hasta donde sé, todos los protocolos de comunicación entre micros tienen un Bit Error Rate, que puede depender también de si hay fuentes, bobinas, etc. etc. cerca del micro que le metan ruido. Pero entonces, qué puedo hacer para garantizar que todos los datos que mando llegan íntegros al otro micro??
Si por ejemplo dice que hay un BER del 1%, tengo que resignarme a perder datos en la comunicación???
En particular: ¿El protocolo I2C contiene ya una manera de asegurar la integridad de los datos? (con el bit de ACK o algo así).
¿Y el USB? Estoy usando la mpusbapi de microchip para la pc y las librerías de CCS para el micro. ¿Éstas librerías ya tienen un mecanismo para verificar los datos?
Si no, ¿me recomiendan hacerlo manual?

muchísimas gracias
 
Los USB si son fiables, ya de por si llevan un cable apantallado para evitar los ruidos. Pero se utilizan para conexiones importantes de datos, y con buenas velocidades.
El I2C tambien es fiable, tiene un cable unicamente para el SCL (reloj) con esto te evitas sincronizar a la misma velocidad varios micros, es decir, el maestro le manda al esclavo el reloj junto con el bit (0,1) el esclavo recoje el bit cuando le llega el SCL del maestro dependiendo si es de 0->1 ó 1->0.

Eso si, el I2C no acepta mucha distancia entre dispositivos, realmente es para usarlo en la misma placa.

El control de errores ya lo deberias hacer tu, por ejemplo contando el numero de 1's y enviandolo como un checksum, control de paridad...

Si quieres un protocolo fiable es el CAN BUS, la deteccion de errores va toda por hardware, es algo complicadillo, pero te aseguras al 100% que los datos que envias son los que recibe el esclavo, sin contar que tiene mucha distancia. Lo unico es que no es de mucha velocidad 1Mbps maximo.
 
Última edición:
Tambien puedes añadir tecnicas basicas de deteccion de errores... en el caso de los protocolos seriales simples se acostumbra el bit de paridad, un bit que cuenta el numero de 1s o 0s encendidos o apagados (eso lo decides tu) y se envia al principio o al final de la trama, posteriormente el receptor recibe el dato y lo compara contra la paridad, si todo coincide el dato se acepta como valido, si no se descarta y se repite la transmision

Tambien hay tecnicas de deteccion y correccion de errores, el dato "se encapsula" con bits extras y se envia todo el paquete, el receptor recibe el paquete y hay algoritmos que detectan si el paquete es valido o no y ademas en caso de recibir un paquete invalido permiten reconstruirlo completamente sin necesidad de una retransmision, pero esa tecnica solo se usa en redes muy grandes donde no siempre es posible una retransmision, o tomaria mucho tiempo solicitarla...
 
Atrás
Arriba