aple0807 发表于 2022-7-2 20:07

【N32G430开发板试用】OLED

本帖最后由 aple0807 于 2022-7-2 20:06 编辑

通过几天的学习,对G430的用法也比较熟悉的,再之前的基础上加个OLED屏测试一下,以后调试过程中需要的简单显示不用每次都通过串口打印了。手上的屏幕是SPI接口的,本程序使用SPI1连接显示屏,测试程序占用以下管脚:

控制脚配置
port_out_pin_make(oled_cs, PB, 6);
port_out_pin_make(oled_rst, PB, 7);
port_out_pin_make(oled_dc, PB, 8);

SPI脚配置
{GPIOB, GPIO_MODE_AF_PP, GPIO_NO_PULL, GPIO_SLEW_RATE_FAST, GPIO_DS_8MA, GPIO_AF2_SPI1, 1, GPIO_PIN_3},//SCK
{GPIOB, GPIO_MODE_AF_PP, GPIO_NO_PULL, GPIO_SLEW_RATE_FAST, GPIO_DS_8MA, GPIO_AF2_SPI1, 1, GPIO_PIN_4},//MISO
{GPIOB, GPIO_MODE_AF_PP, GPIO_NO_PULL, GPIO_SLEW_RATE_FAST, GPIO_DS_8MA, GPIO_AF1_SPI1, 1, GPIO_PIN_5},//MOSI

调试过程中出现了点状况,G430的SPI用法与其他有些区别,具体如下:void bsp_spi_init(void)
{
      SPI_InitType SPI_InitStructure;
      intx_alloc();

      // 开启时钟
      intx_disable();
      RCC_APB2_Peripheral_Clock_Enable(RCC_APB2_PERIPH_SPI1);
      intx_enable();

      // SPI 配置
      SPI_InitStructure.DataDirection = SPI_DIR_DOUBLELINE_FULLDUPLEX;
      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;
      SPI_InitStructure.FirstBit = SPI_FB_MSB;
      SPI_InitStructure.CRCPoly = 7;
      SPI_InitStructure.BaudRatePres = SPI_BR_PRESCALER_128;

      SPI_Initializes(OLED_SPI, &SPI_InitStructure);
      // SPI_SS_Output_Enable(OLED_SPI);
      SPI_Set_Nss_Level(OLED_SPI, SPI_NSS_HIGH);
      SPI_ON(OLED_SPI);
}



软件SS模式,调用初始化后,需要调用以下两行之一才能正常开启SPI_ON。此处要特别注意,否则调用SPI_ON将开启失败。
SPI_SS_Output_Enable(OLED_SPI);
SPI_Set_Nss_Level(OLED_SPI, SPI_NSS_HIGH);

下面附上测试工程:

显示结果如下:


@安小芯


chenjun89 发表于 2022-7-3 09:41

恭喜楼主喜提开发板

trucyw 发表于 2022-7-3 15:49

恭喜楼主喜提开发板
页: [1]
查看完整版本: 【N32G430开发板试用】OLED