lugl4313820 发表于 2022-1-25 12:03

【国民技术N32G457评测】RT-Thread 驱动SSD1306

<p>RT_Thread的软件包中心方便的给用户提供了常用的驱动,今天我们使用软包中心来驱动SSD1306的OLED屏。</p>

<p>1、新建项目,选用基于开发板:</p>

<p>&nbsp;打开RT-Thread Settings:</p>

<p></p>

<p>选择添加软件包:</p>

<p></p>

<p>打开界面,查找ssd1306,添加软件包:</p>

<p> &nbsp;&nbsp; 在软件包上选择详细配置:</p>

<p>&nbsp;钩选sample</p>

<p></p>

<p>钩选ENABLE I2C</p>

<p>返回界面</p>

<p>启用C++ libc</p>

<p> &nbsp; &nbsp;&nbsp;&nbsp;</p>

<p>关闭配置,并且保存。</p>

<p> &nbsp;&nbsp; 修改SCL SDA 为Pin 92 93</p>

<p>&nbsp; 修改drv_gpio.c 的配置为100pin</p>

<p></p>

<p>修改main.c为:</p>

<pre>
<code>/*
* Copyright (c) 2006-2021, RT-Thread Development Team
*
* SPDX-License-Identifier: Apache-2.0
*
* Change Logs:
* Date         Author       Notes
* 2015-07-29   Arda.Fu      first implementation
*/
#include &lt;stdint.h&gt;
#include &lt;rtthread.h&gt;
#include &lt;rtdevice.h&gt;
#include &lt;board.h&gt;

#include &lt;string.h&gt;
#include &lt;stdio.h&gt;
#include "ssd1306.h"



/* defined the LED1 pin: PB5 */
#define LED1_PIN    91

int main(void)
{
    uint32_t Speed = 200;
    /* set LED1 pin mode to output */
    rt_pin_mode(LED1_PIN, PIN_MODE_OUTPUT);
    rt_kprintf("start ssd1306\r\n");
    ssd1306_Init();
    ssd1306_Fill(Black);
    ssd1306_SetCursor(2,0);
    ssd1306_WriteString("HELLO NG32!", Font_11x18, White);
    ssd1306_SetCursor(2,18);
    ssd1306_WriteString("HAPPY NEW YEAR!", Font_7x10, White);
    ssd1306_UpdateScreen();
    while (1)
    {
      rt_pin_write(LED1_PIN, PIN_LOW);
      rt_thread_mdelay(Speed);
      rt_pin_write(LED1_PIN, PIN_HIGH);
      rt_thread_mdelay(Speed);
    }
}

</code></pre>

<p>&nbsp;然后编译下载:</p>

<p>成功点亮LED</p>

<p>&nbsp;通这几步就可以成功驱动SSD1306,这里主要就是要修改SCL SDA的引脚有点小麻烦,因为软件包给的是23,24,查找drv_gpio.c中,没有23这个引脚,通过查阅数据手册为92(PB6) 93(PB7)。经过半天的折腾,终于点亮屏了!希望给大家引引路。</p>

fxyc87 发表于 2022-1-25 13:44

赞,用的是软I2C还是硬I2C?

wangerxian 发表于 2022-1-25 14:11

fxyc87 发表于 2022-1-25 13:44
赞,用的是软I2C还是硬I2C?

<p>RTThread的IIC一般都是采用软件的。</p>

lugl4313820 发表于 2022-1-25 14:54

fxyc87 发表于 2022-1-25 13:44
赞,用的是软I2C还是硬I2C?

<p>可以硬的,可以软的,都有例程的。U8G2的例程比较明确一些。</p>

annysky2012 发表于 2022-1-25 16:52

RT-THREAD实现起来就是简单点。期待后续
页: [1]
查看完整版本: 【国民技术N32G457评测】RT-Thread 驱动SSD1306