Red de conocimiento informático - Conocimiento del nombre de dominio - ¿Cómo realizar la comunicación SPI entre el microcontrolador y la PC?

¿Cómo realizar la comunicación SPI entre el microcontrolador y la PC?

Método de comunicación SPI entre el microcontrolador y la PC:

1: Diseño del circuito

El circuito diseñado utiliza dos chips AT89C52, uno como módulo emisor y otro como módulo receptor. Escriba programas de envío y recepción por separado para implementar el envío y recepción de datos. Los datos recibidos se muestran mediante LED. Observe la forma de onda de salida a través de un osciloscopio.

2. Escribir programas

Según el circuito diseñado y los requisitos del proyecto, escribir el programa de envío de datos y el programa de recepción de datos respectivamente. ①: Remitente de datos #Definición

Carácter sin signo

#Definición uint entero sin signo

#Definición ulong entero largo sin signo

/// -# incluir

# incluye ltSTDIO. H gt

//-sbit spiclk = p1^0; //Señal de reloj sbitmosi = p 1 1; //Salida de datos del dispositivo maestro, entrada de datos del dispositivo esclavo SBITMISO = p 1 2; Entrada de datos, salida de datos del dispositivo esclavo

sbit ss = p1^3; //Señal de habilitación del dispositivo esclavo

Void Dat_Transmit(uchar dat) //Enviar programa de datos

{ uchar i, datbuf

datbuf = dat

SS = 1; while(SS){;} for(I = 0;ilt8;i) {

p>

mientras(SPICLK){;} if(dat buf amp;0x 80)MISO = 1;otro

MISO = 0;

dat buf =(dat buf lt; lt1); while(~ SPICLK){;}

}

}

Gerente general no válido (no válido)

{ uchar I; while(1) {

for(I = 0;ilt10;i) {

dat _ Transmitir(I);

}

}

}

②: Programa de recepción de datos #define uchar carácter sin firmar

# define uint unsigned int # define ulong

Long sin firmar

///-# include lt; H gt

# incluye ltSTDIO.

H gt

//-sbit spiclk = p1^0; //Señal de reloj sbitmosi = p 1 1; //Salida de datos del dispositivo maestro, entrada de datos del dispositivo esclavo SBITMISO = p 1 2; Entrada de datos y salida de datos del dispositivo esclavo SBITSS = p 1 3 //Señal de habilitación del dispositivo esclavo

// - void Nop(void)

{ ;

}

void Delay(uchar t){ while(t-){;}

}

Uchar Data_Receive(void) //Receptor de datos

{ uchar i, dat=0, temp pequeña cantidad

Bt;

SPICLK = 1; //Dispositivo seleccionado

nop();nop();

for(I = 0;ilt8;i){ SPICLK = 1;

Nop( )

nop();nop();SPI clk = 0;nop();nop();

bt = MISO if(bt)

temp = 0x 01;

Otro

temp = 0x00

dat =(dat lt; lt1);

dat =(dat | temp);

}

SS = 1; SPICLK = 1;

Devolver dat

}

Gerente general no válido (no válido)

{ uchar exdatuchar I = 0

código uchar

table[10]={0x3F, 0x06, 0x5B, 0x4F , 0x66, 0x6D, 0x7D, 0x07,

0x7F, 0x6F }; P2 = 0;

mientras(1){ ex dat = Datos _ Recibir(); ex dat];

for(I = 0;ilt200;i)

retraso(200);

}

}

3. Simulación de circuito

Cargue el archivo hexadecimal generado por el programa de envío de datos en el módulo de envío de datos y cargue el archivo hexadecimal generado por el programa de recepción de datos en el módulo de recepción de datos. . Conecte la luz LED al puerto de salida y espere la información de salida, y use un osciloscopio para observar la forma de onda de salida.

4.4: Introducción al bus SPI

El bus SPI (Serial Peripheral Interface) es una tecnología de interfaz serial síncrona lanzada por Motorola. El sistema de bus SPI es una interfaz periférica en serie síncrona que permite que la MCU se comunique e intercambie datos con varios periféricos en serie. Los dispositivos periféricos incluyen FLASHRAM, convertidores A/D, controladores de red, MCU, etc. SPI es un bus de comunicación síncrono, full-duplex y de alta velocidad que solo ocupa cuatro líneas en los pines del chip, lo que ahorra pines del chip y brinda comodidad para el diseño de PCB. Precisamente gracias a esta característica sencilla y fácil de usar, cada vez más chips integran este protocolo de comunicación. Hay dos modos de trabajo: modo maestro y modo esclavo. El protocolo SPI permite que el maestro y el esclavo inicien una comunicación síncrona para completar el intercambio de datos. En otras palabras, SPI es un método de comunicación prescrito. La ventaja de este método de comunicación es que ocupa menos puertos. Generalmente, 4 son suficientes para una comunicación básica (sin contar el cable de alimentación). Al mismo tiempo, la velocidad de transmisión también es muy alta. En términos generales, el host necesita tener un controlador SPI (que también se puede emular) para poder comunicarse con el chip basado en SPI.

Utilizando el bus SPI se pueden construir varios sistemas bajo control de software. Por ejemplo, una MCU maestra, varias MCU esclavas y varias MCU esclavas están interconectadas para formar un sistema multihost (sistema distribuido), una MCU maestra y uno o varios dispositivos de E/S esclavos, etc. En la mayoría de las aplicaciones, 1 MCU puede actuar como controlador maestro para controlar datos y transferir datos a 1 o varios periféricos esclavos. Cuando el maestro envía un comando, el esclavo solo puede recibir o enviar datos. El formato de transmisión de datos es el bit de orden superior (MSB) primero y el bit de orden inferior (LSB) al final.

Cuando un host está conectado a varios chips de E/S serie diferentes a través de SPI, se debe utilizar el extremo de control permitido de cada chip. Esto se puede lograr a través de la línea de salida del puerto de E/S de la MCU. . Pero se debe prestar especial atención a las características de entrada y salida de estos chips de E/S en serie: la primera es si la salida de datos en serie del chip de entrada tiene un terminal de control de tres estados. Cuando no se selecciona el chip, el terminal de salida debe estar en un estado de alta impedancia.

Si no hay una terminal de control de tres estados, se debe agregar una puerta de tres estados. De lo contrario, solo se puede conectar un chip de entrada al extremo MISO de la MCU. En segundo lugar, si la entrada de datos en serie del chip de salida tiene un terminal de control permitido. Porque solo cuando el chip está habilitado, el pulso SCK mueve datos en serie al chip; cuando está deshabilitado, SCK no tiene ningún efecto en el chip; Si el terminal de control no lo permite, entonces SCK debe ser controlado por un circuito de puerta periférico y luego agregado a la entrada de reloj del chip. Por supuesto, también es posible conectar solo un chip al bus SPI sin conectar otra entrada; o chips de salida.

La interfaz SPI es una transmisión de datos en serie síncrona entre la CPU y dispositivos periféricos de baja velocidad. Bajo el pulso de cambio del dispositivo maestro, los datos se transmiten bit a bit, con el bit alto al frente y el bit bajo detrás. Es una comunicación full-duplex y la velocidad de transmisión de datos es generalmente más rápida que la del bus I2C y la velocidad puede alcanzar varios Mbps.

5. Principio de funcionamiento del bus SPI

El sistema de bus SPI es una interfaz periférica serie síncrona, que permite a la MCU comunicarse con varios periféricos en serie para intercambiar información. SPI tiene tres registros: registro de control SPCR, registro de estado SPSR y registro de datos. Dispositivos periféricos, controladores de red, controladores de pantalla LCD, convertidores A/D y MCU, etc.

La interfaz incluye las siguientes cuatro señales:

(1)Salida de datos del dispositivo maestro MOSI, entrada de datos del dispositivo esclavo;

(2)Maestro MISO Entrada de datos del dispositivo y salida de datos del dispositivo esclavo;

(3) señal de reloj SCLK generada por el dispositivo maestro;

(4) SS: señal de habilitación del dispositivo esclavo, aceptada por el Control del dispositivo maestro, algunos circuitos integrados se marcarán como CS (selección de chip). En la comunicación punto a punto, la interfaz SPI no requiere operaciones de direccionamiento y es una comunicación full-duplex, que es simple y eficiente.