3
瑞萨 R7FA4L1BD4CFP 有 1 个 SPI 接口,除此之外,还有 6 个 SCI 接口可以实现 Simple SPI 功能,这次使用 SPI0 接口来驱动 OLED 屏
SSD1327 是一款 128x128像素的 OLED 控制器,并且能够支持 16 位灰度显示,效果如图:

开发板兼容 Arduino UNO 接口,SPI 引脚与 UNO 相关引脚位置对应:


接口定义如下:
| 引脚 |
功能 |
|---|
| P209 |
SCK |
| P211 |
MOSI |
| P600 |
DC |
| P204 |
RST |
| P602 |
CS |
使能硬件 SPI0 功能,在 RASC 上配置如下:
引脚配置:

SPI 外设配置:

配置 SPI0 速率 32Mbps,使能后即可使用以下函数初始化 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;
}
}
设置好 SPI 接口后,就可以进行初始化寄存器配置和图像显示了,效果见视频
|