Pantalla Hy28B con STM32

-1

Estoy intentando que esta pantalla Hy28b funcione con mi MCU stm32f103. De alguna manera la pantalla no responde. Descubrí que no puedo comunicarme con él, mi configuración de SPI es la siguiente:

GPIO_InitTypeDef initSPI;
    initSPI.GPIO_Mode = GPIO_Mode_AF_PP;
    initSPI.GPIO_Pin  = GPIO_Pin_5 | GPIO_Pin_7; // sck mosi
    initSPI.GPIO_Speed =  GPIO_Speed_50MHz;
        GPIO_Init(GPIOA, &initSPI);

    initSPI.GPIO_Pin  =  GPIO_Pin_6;
    initSPI.GPIO_Mode =  GPIO_Mode_IN_FLOATING; ///miso
        GPIO_Init(GPIOA, &initSPI);

    SPI_InitTypeDef initStruct;
    SPI_StructInit(&initStruct);
    initStruct.SPI_Mode = SPI_Mode_Master;
    initStruct.SPI_CPHA = SPI_CPHA_2Edge;
    initStruct.SPI_CPOL = SPI_CPOL_Low;
    initStruct.SPI_NSS  = SPI_NSS_Soft;
    initStruct.SPI_BaudRatePrescaler = SPI_BaudRatePrescaler_32;
        SPI_Init(SPI1, &initStruct);

    RCC_APB2PeriphClockCmd(RCC_APB2Periph_SPI1, ENABLE);
    SPI_Cmd(SPI1, ENABLE);

    GPIO_InitTypeDef initGPIO;
    initGPIO.GPIO_Mode  =  GPIO_Mode_Out_PP; 
    initGPIO.GPIO_Pin   =  GPIO_Pin_4;  //CS
    initGPIO.GPIO_Speed =  GPIO_Speed_50MHz;

        GPIO_Init(GPIOA, &initGPIO);

Y modifiqué la función de envío de muestra:

unsigned char STM32_SPI_TxRxByte (unsigned char byte_s)
{
    /* wait for current SPI activity complete */
    while (SPI1->SR&SPI_SR_BSY);

    SPI_I2S_SendData(SPI1, (unsigned short) byte_s);

    while((SPI1->SR&SPI_SR_RXNE));

    return (SPI_I2S_ReceiveData(SPI1););
}

¿Qué me estoy perdiendo aquí?

    
pregunta erbal

1 respuesta

1

Veo dos problemas principales con este código. Lo primero es el modo SPI diferente. La configuración de \ $ \ texttt {SPI_CPHA_2Edge} \ $ y \ $ \ texttt {SPI_CPOL_Low} \ $ significa modo 0,1 mientras que la pantalla espera 1,1.

Otra cosa es que el SS # está constantemente bajo, lo que impide que el controlador de pantalla detecte el inicio de la transacción.

    
respondido por el venny

Lea otras preguntas en las etiquetas