ZHI123456 发表于 2025-4-26 23:09

N32 SPI驱动不了0.96tft屏幕(ST7735)

    GPIO_InitStructure.Pin            = SPI_MASTER_MOSI_PIN | SPI_MASTER_CLK_PIN ;
    GPIO_InitStructure.GPIO_Mode      = GPIO_MODE_AF_PP;
    GPIO_InitStructure.GPIO_Slew_Rate = GPIO_SLEW_RATE_FAST;
    GPIO_InitStructure.GPIO_Alternate = SPI_MASTER_GPIO_ALTERNATE;
    GPIO_Peripheral_Initialize(SPI_MASTER_GPIO, &GPIO_InitStructure);
    /* If CLKPOL is HIGH, set SPI_SCK GPIO to GPIO_PULL_UP, otherwise set to GPIO_PULL_DOWN */
    GPIO_InitStructure.Pin            = SPI_MASTER_CLK_PIN;
    GPIO_InitStructure.GPIO_Mode      = GPIO_MODE_AF_PP;
    GPIO_InitStructure.GPIO_Slew_Rate = GPIO_SLEW_RATE_FAST;
    GPIO_InitStructure.GPIO_Pull      = GPIO_PULL_UP;
    GPIO_InitStructure.GPIO_Alternate = SPI_MASTER_GPIO_ALTERNATE;
    GPIO_Peripheral_Initialize(SPI_MASTER_GPIO, &GPIO_InitStructure);

    SPI_Initializes_Structure(&SPI_InitStructure);
    SPI_InitStructure.DataDirection = SPI_DIR_SINGLELINE_TX;
    SPI_InitStructure.SpiMode       = SPI_MODE_MASTER;
    SPI_InitStructure.DataLen       = SPI_DATA_SIZE_8BITS;
    SPI_InitStructure.CLKPOL      = SPI_CLKPOL_HIGH;
    SPI_InitStructure.CLKPHA      = SPI_CLKPHA_SECOND_EDGE;
    SPI_InitStructure.NSS         = SPI_NSS_SOFT;
    /* It is recommended that the SPI master mode of the C version chips should not exceed 18MHz */
    SPI_InitStructure.BaudRatePres= SPI_BR_PRESCALER_16;
    SPI_InitStructure.FirstBit      = SPI_FB_MSB;
    SPI_InitStructure.CRCPoly       = 7;
    SPI_Initializes(SPI_MASTER, &SPI_InitStructure);
    SPI_SS_Output_Enable(SPI_MASTER);



   
    /* Enable SPI_MASTER */
    SPI_ON(SPI_MASTER);

    RCC_Pclk2_Config(RCC_HCLK_DIV2);

    /* Enable peripheral clocks --------------------------------------------------*/
    /* spi clock enable */
    RCC_APB2_Peripheral_Clock_Enable(SPI_MASTER_PERIPH);
    /* GPIO Periph clock enable */
    RCC_AHB_Peripheral_Clock_Enable(SPI_MASTER_PERIPH_GPIO );




void LCD_Writ_Bus(u8 dat)
{       
//        u8 i;
//        LCD_CS_Clr();
//        for(i=0;i<8;i++)
//        {                          
//                LCD_SCLK_Clr();
//                if(dat&0x80)
//                {
//                   LCD_MOSI_Set();
//                }
//                else
//                {
//                   LCD_MOSI_Clr();
//                }
//                LCD_SCLK_Set();
//                dat<<=1;
//        }       
// LCD_CS_Set();       
              LCD_CS_Clr();
        //        LCD_CS_Set();       
             while (SPI_I2S_Flag_Status_Get(SPI1, SPI_I2S_FLAG_TE) == RESET);
      /* Send SPI_SLAVE data */
   SPI_I2S_Data_Transmit(SPI1,dat);
                                LCD_CS_Set();       
}

技术工程师 发表于 2025-5-9 13:51

SPI_BR_PRESCALER_16要不改小一些试下
页: [1]
查看完整版本: N32 SPI驱动不了0.96tft屏幕(ST7735)