第1章 SF1 RISC-V Core 驱动OLED屏幕本次测评采用安路的SF1 RISC-V内核实现对SPI OLED屏幕的驱动,实现在屏幕上显示信息的功能。 1.1 外设串口连接 SF1S60CG1121I引脚 | 串口引脚 | IO_T3_3,CSN(A4) | SF1_UART_TX | IO_T5_3,GCLK0(E4) | SF1_UART_RX |
通过扩展板上的OLED屏幕与SF1 Demo板的连接如下表所示 SF1S60CG1121I引脚 | OLED引脚 | IO_R10P_0,GCLK13,D0(A10) | DC | IO_R11P_0(B9) | RST | IO_R11N_0(B8) | SPI_MOSI | IO_R12P_0,GCLK14,USRCLK(A9) | SPI_SCK |
LED 电路通过一个NMOS管控制,控制引脚输出高电平LED亮,低电平LED灭;LED控制引脚与 FPGA管脚的映射关系为: SF1S60CG121I 管脚位置 | SF1S60CG121I 管脚名称 | | 指示灯IO | J4 | IO_B6N_2,GCLK4 | 1.2V | LED_R | J5 | IO_B6P_2,GCLK5 | 1.2V | LED_B | H5 | IO_B7N_2 | 1.2V | LED_G |
1.2 OLED驱动移植板上的OLED屏幕为中景园的OLED屏幕,官方已经提供了相关的屏幕驱动程序,我们只需要修改其中的DC、RST、SDA、SCL驱动对应的引脚驱动即可。具体的修改如下: - #include "nuclei_sdk_hal.h"
- #define USE_HORIZONTAL 0
- //-----------------OLED引脚驱动----------------
- #define OLED_SCL_Clr() gpio_write(GPIO,SOC_OLED_SCK_MASK,0)//SCL
- #define OLED_SCL_Set() gpio_write(GPIO,SOC_OLED_SCK_MASK,1)
- #define OLED_SDA_Clr() gpio_write(GPIO,SOC_OLED_SDA_MASK,0)//SDA
- #define OLED_SDA_Set() gpio_write(GPIO,SOC_OLED_SDA_MASK,1)
- #define OLED_RES_Clr() gpio_write(GPIO,SOC_OLED_RST_MASK,0)//RES
- #define OLED_RES_Set() gpio_write(GPIO,SOC_OLED_RST_MASK,1)
- #define OLED_DC_Clr() gpio_write(GPIO,SOC_OLED_DC_MASK,0)//DC
- #define OLED_DC_Set() gpio_write(GPIO,SOC_OLED_DC_MASK,1)
- #define OLED_CS_Clr() do{}while(0)//CS
- #define OLED_CS_Set() do{}while(0)
复制代码
为了方便理解,定义相关的宏如下: [code]#define SOC_OLED_DC_OFS 7
#define SOC_OLED_RST_OFS 4
#define SOC_OLED_SDA_OFS 5
#define SOC_OLED_SCK_OFS 6
#define SOC_OLED_DC_MASK (1<
OLED显示
|