|
发表于 2023-9-15 17:18:46
|
显示全部楼层
你还没能点亮?我上面已经说明了。G0的SPI Arduino封装有bug: MISO被占用后,你必须指定一个。
缺省的SPI(SPI1)的定义。
STMicroelectronics\hardware\stm32\2.4.0\variants\STM32G0xx\G030C(6-8)T\variant_generic.h
// SPI definitions
#ifndef PIN_SPI_SS
#define PIN_SPI_SS PA4
#endif
#ifndef PIN_SPI_SS1
#define PIN_SPI_SS1 PA15
#endif
#ifndef PIN_SPI_SS2
#define PIN_SPI_SS2 PB0
#endif
#ifndef PIN_SPI_SS3
#define PIN_SPI_SS3 PNUM_NOT_DEFINED
#endif
#ifndef PIN_SPI_MOSI
#define PIN_SPI_MOSI PA2
#endif
#ifndef PIN_SPI_MISO
#define PIN_SPI_MISO PA6
#endif
#ifndef PIN_SPI_SCK
#define PIN_SPI_SCK PA1
#endif
你的PA6(MISO),变成了LCD的D/C(GPIO),需要指定一个MISO。
STMicroelectronics\hardware\stm32\2.4.0\variants\STM32G0xx\G030C(6-8)T\PeripheralPins.c
#ifdef HAL_SPI_MODULE_ENABLED
WEAK const PinMap PinMap_SPI_MISO[] = {
{PA_3, SPI2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF0_SPI2)},
{PA_6, SPI1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF0_SPI1)},
{PA_9, SPI2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF4_SPI2)},
{PA_9_R, SPI2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF4_SPI2)},
{PA_11, SPI1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF0_SPI1)},
{PB_2, SPI2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_SPI2)},
{PB_4, SPI1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF0_SPI1)},
{PB_6, SPI2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF4_SPI2)},
{PB_14, SPI2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF0_SPI2)},
{PD_3, SPI2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_SPI2)},
{NC, NP, 0}
};
#endif
SPI1的MISO还可以选择 PA11,PB4
#####################################
#include <U8g2lib.h>
#include <SPI.h>
#define TFT_MISO PA11
U8G2_ST7567_OS12864_1_4W_HW_SPI u8g2(U8G2_R2, /* cs=*/ PA4, /* dc=*/ PA6, /* reset=*/ PB1);
//U8G2_ST7567_OS12864_1_4W_SW_SPI u8g2(U8G2_R2, /* clock=*/PA1, /* data=*/ PA2, /* cs=*/ PA4, /* dc=*/ PA6, /* reset=*/ PB1);
void setup(void) {
SPI.setMISO(TFT_MISO); //<-------
u8g2.begin();
}
|
打赏
-
查看全部打赏
|