瑞萨单片机论坛
直播中

吉吉

12年用户 261经验值
擅长:可编程逻辑 嵌入式技术
私信 关注
[经验]

【瑞萨RA2L1入门学习】SPI点亮16级灰阶OLED显示屏

前一篇使用 I2C 接口点亮了 SSD1306 驱动的 OLED 屏,https://bbs.elecfans.com/jishu_2474871_1_1.html

这次更进一步,使用 SPI 接口点亮 SSD1327 驱动的 128x128 OLED 屏

SSD1327 是一款 128x128像素的 OLED 控制器,并且能够支持 16 位灰度显示,效果如图:

4.jpg

接口定义如下:

引脚 功能
P3 SCK
P207 MOSI
P103 DC
P104 RST
GND CS

使能硬件 SPI0 功能,在 RASC 上配置如下:

1.png

使能后即可使用以下函数初始化 SPI0 接口:

fsp_err_t err = R_SPI_Open(&g_spi0_ctrl, &g_spi0_cfg);

使用以下函数发送数据:

fsp_err_t err = R_SPI_Write(&g_spi0_ctrl, &dat, 1, SPI_BIT_WIDTH_8_BITS);

未使用 DMA,采用的是中断清除标志位方式进行 SPI 数据发送,代码如下:

void SPI0_Tx1B(u16 dat)
{
    while (gf_SPI0_Busy);
    gf_SPI0_Busy = 1;
    fsp_err_t err = R_SPI_Write(&g_spi0_ctrl, &dat, 1, SPI_BIT_WIDTH_8_BITS);
    assert(err == FSP_SUCCESS);
}

中断函数只会清除发送忙标志位:

void spi_callback (spi_callback_args_t * p_args)
{
    if (SPI_EVENT_TRANSFER_COMPLETE == p_args->event)
    {
        gf_SPI0_Busy = 0;
    }
}

2.png

更多回帖

发帖
×
20
完善资料,
赚取积分