ESP32模拟SPI控制0.9存OLED

没有C币的同学请私信我。

本例程参考正点原子在STM32模拟SPI控制0.9寸OLED,主要更改如下

#define PIN_NUM_MISO 25  // 数据 d1
#define PIN_NUM_CLK  19  // 时钟 d0
#define PIN_NUM_CS   22
#define PIN_NUM_DC   21
#define PIN_NUM_RST  18

#define OLED_CS(X)   X?gpio_set_level(PIN_NUM_CS, 1):gpio_set_level(PIN_NUM_CS, 0)  
#define OLED_RST(X)  X?gpio_set_level(PIN_NUM_RST, 1):gpio_set_level(PIN_NUM_RST, 0)      
#define OLED_DC(X)   X?gpio_set_level(PIN_NUM_DC, 1):gpio_set_level(PIN_NUM_DC, 0)  
#define OLED_D0(X)   X?gpio_set_level(PIN_NUM_CLK, 1):gpio_set_level(PIN_NUM_CLK, 0)      
#define OLED_D1(X)   X?gpio_set_level(PIN_NUM_MISO, 1):gpio_set_level(PIN_NUM_MISO, 0)

void OLED_GPIO_Init(void)
{   
 //  GPIO_Init(OLED_PORT_NORMAL, &GPIO_InitStruct);    
    gpio_set_direction(PIN_NUM_MISO, GPIO_MODE_OUTPUT);
    gpio_set_direction(PIN_NUM_CLK, GPIO_MODE_OUTPUT);
    gpio_set_direction(PIN_NUM_CS, GPIO_MODE_OUTPUT);
    gpio_set_direction(PIN_NUM_DC, GPIO_MODE_OUTPUT);
    gpio_set_direction(PIN_NUM_RST, GPIO_MODE_OUTPUT);
}

主要就是改了GPIO初始化程序,其他的基本没有动,不过有一个问题必须强调一下,ESP32的gpio是有限制的,不是所有io口都可以做输出。

(PIN_NUM_MISO)(PIN_NUM_CLK); (PIN_NUM_CS); (PIN_NUM_DC); (PIN_NUM_RST);

这五个是宏定义的io口编号。

发布了8 篇原创文章 · 获赞 18 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/qq_31232793/article/details/88684758