前一篇使用 I2C 接口点亮了 SSD1306 驱动的 OLED 屏,https://bbs.elecfans.com/jishu_2474871_1_1.html
这次更进一步,使用 SPI 接口点亮 SSD1327 驱动的 128x128 OLED 屏
SSD1327 是一款 128x128像素的 OLED 控制器,并且能够支持 16 位灰度显示,效果如图:
接口定义如下:
引脚 | 功能 |
---|---|
P3 | SCK |
P207 | MOSI |
P103 | DC |
P104 | RST |
GND | CS |
使能硬件 SPI0 功能,在 RASC 上配置如下:
使能后即可使用以下函数初始化 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;
}
}
更多回帖