本帖最后由 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);
下面附上测试工程:
n32-g430-eval.rar
(5.4 MB)
显示结果如下:
@安小芯
|