¿Cuáles son las ventajas de los métodos de comunicación en serie spi e i2c (en qué situaciones son adecuados para su uso) y qué método es mejor para conectar dos microcontroladores en la placa?
1. Hay tres autobuses SPI. Seleccione el chip CS uno, esto está determinado por el chip respectivo, hay nivel alto o nivel bajo. En realidad, esto es imprescindible, porque sólo podrás encontrarlo cuando hayas seleccionado la película. Es el mismo que el pestillo del autobús 74HC573 (o 74LS373) que uso. Si la selección del chip es exitosa, vaya a la segunda línea SCL, que es el reloj. Este reloj se puede simular por completo. Por supuesto, el reloj tiene sincronización. Utilice el retraso del programa para ajustar la sincronización y la simulación no será un problema. El último es el puerto de E/S. Si es un SPI de tres cables, entonces este cable transmite datos en ambas direcciones. Si es un SPI de cuatro cables, todavía no lo he usado. , pero creo que es completamente innecesario, solo una línea de datos que va y viene es bastante buena. Como se trata de uno o dos cables, los datos van y vienen en serie. 2. Hay dos autobuses I2C. Hay un reloj SCL y el otro SDA transmite datos. Solo hay dos y no hay un terminal CS de selección de chip I2C. Por lo tanto, para transmitir datos sobre este, se deben utilizar las dos líneas únicas de I2C para indicar inicio, transmisión, parada, etc. Los únicos niveles son alto y bajo, entonces, ¿qué más se puede usar? Es decir, el flanco ascendente y el flanco descendente. En resumen, en realidad hay muchas combinaciones de estas dos líneas. El primer tipo, el tipo de combinación de niveles SCL y SDA, tiene cuatro combinaciones: nivel alto + nivel alto, nivel alto + nivel bajo, nivel bajo + nivel alto, nivel bajo + nivel bajo; el segundo tipo, la combinación de nivel SCKL y SDA de borde; tipo: nivel alto + flanco ascendente, nivel alto + flanco descendente, nivel del suelo + flanco ascendente, nivel bajo + flanco descendente. Se puede ver que hay muchas cosas que se pueden usar en solo dos cables. Estas combinaciones se pueden usar para expresar inicio, parada, etc., o incluso no se usan tantas. Dando un paso atrás, incluso si se usan todos, ¿se puede continuar con la combinación en serie? ¿Se puede usar SDA primero y luego SCL? En resumen, ambas líneas se pueden profundizar tanto que tengo que admirar la creatividad de los ingenieros de Philips. . De lo anterior se desprende claramente que la forma de indicar el inicio del chip seleccionado depende de estas combinaciones. Por ejemplo: el flanco ascendente o descendente de SDA en SCL demuestra que el host ha enviado la solicitud de inicio del chip. Otro problema es que si hay varios dispositivos I2C conectados a I2C, ¿cómo puedo saber cuál iniciar? Porque no tienen el pin CS de selección del chip SPI. Este pin se puede encontrar a través de un decodificador 38 similar. ¿Si hay chips del mismo tipo pero de diferentes tipos pero no hay I2C? Hay varios pines en el dispositivo I2C que están conectados a tierra o colgados en alto (AT24C02 se llama pines programables), que son las direcciones. Además, el fabricante del dispositivo también estipula que el primer byte enviado en el I2C es la dirección del chip. cuatro bits 0000~11111, esto puede representar hasta 16 tipos diferentes de dispositivos I2C (en realidad no hay tantos dispositivos I2C y 0000 y 1111 no se pueden usar, por lo que solo quedan 14. Esta regulación unificada internacionalmente es la Protocolo I2C, "Concurso nacional de diseño electrónico para estudiantes universitarios: habilidades de aplicación de microcontroladores" P171 tiene instrucciones, regulaciones del "Comité de bus I2C"). Los 3 bits restantes son la dirección del dispositivo. Cuando esta dirección coincide con la dirección enviada por I2C, se encuentra el último bit restante para lectura y escritura. Luego escriba datos en las dos líneas en I2C, primero escriba la dirección del chip, luego escriba la dirección interna encontrada del chip y finalmente lea o escriba esta dirección, y cada vez que se envía un byte, el esclavo debe dar una respuesta, que es El dispositivo I2C vinculado envía una respuesta al host (generalmente un microcontrolador o interfaz I2C), y la respuesta debe alternar entre recibir un byte y luego responder. Entonces, desde este punto de vista, el protocolo I2C es en realidad bastante complicado de implementar. Solo para ahorrar un cable, se crearon múltiples protocolos y el programa se volvió más complicado que SPI. El punto más importante es que un tipo de I2C puede conectar hasta 8 dispositivos conectados al bus I2C (porque los primeros cuatro bits de la palabra de control son el tipo, el último bit es de lectura y escritura y solo quedan tres bits para la dirección). Si son diferentes Contando todos los tipos de I2C, el número total de dispositivos conectados al I2C es 14*8=112. Aunque ya es mucho, al menos muestra los dispositivos que se pueden conectar al I2C. autobús son limitados.
3. Sin embargo, si lo compara con SPI, encontrará que aunque I2C es un poco más complicado y tiene dispositivos limitados, todavía tiene muchas ventajas, porque solo SCK y E/S en el bus SPI de tres cables son buses reales. y se puede compartir, pero el chip CS selecciona Las señales son uno a uno. Si se conectan 112 dispositivos SPI al bus SPI, los buses SCK y E/S se pueden utilizar por completo. Pero cómo manejar el 112 CS. ¿El chip selecciona? ¿Es posible utilizar CPLD para expandir las puertas lógicas? Obviamente no es posible. Además, la selección de chip CS de cada dispositivo es alta o baja, lo que también es un problema. Desde este punto de vista, aunque la programación SPI es más simple que I2C, el hardware es problemático. El software I2C es complejo, pero el hardware es simple. En términos generales, I2C tiene más beneficios, porque los problemas de software siempre son más fáciles de solucionar que los problemas de hardware. 4. El mismo problema al simular el bus I2C o SPI en algunos microcontroladores simples como AT89S51, los niveles alto y bajo en la sincronización están relacionados con el oscilador de cristal. Por lo tanto, cuando se utiliza un oscilador de cristal o microcontrolador diferente, la sincronización debe. Medium controla el factor de retardo de los niveles alto y bajo.
I2C tiene las siguientes ventajas: 1. Hardware simple y bajo consumo de recursos. Sólo líneas de reloj y datos. 2. El principio de implementación de la sincronización y el arbitraje del reloj también es muy simple: simplemente se implementa con puertas de drenaje abierto/colector abierto y lógica de línea. 3. El protocolo está exquisitamente diseñado, es fácil de usar y flexible. Se pueden transferir datos, direcciones e instrucciones. 4. Ampliamente utilizado, casi todos los fabricantes de circuitos integrados ahora integran I2C en el chip. 5. La IP de Philips para el protocolo I2C ha caducado, por lo que casi no es necesario considerar la licencia.