SF1 RISC-V Core 驱动OLED屏幕 - RISC-V MCU技术社区 - 电子技术william hill官网 - 广受欢迎的专业电子william hill官网 - 威廉希尔官方网站
分享 收藏 返回

[文章]

SF1 RISC-V Core 驱动OLED屏幕



第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电源
  
  
指示灯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驱动对应的引脚驱动即可。具体的修改如下:
  1. #include "nuclei_sdk_hal.h"
  2. #define USE_HORIZONTAL 0   
  3. //-----------------OLED引脚驱动----------------
  4. #define OLED_SCL_Clr() gpio_write(GPIO,SOC_OLED_SCK_MASK,0)//SCL
  5. #define OLED_SCL_Set() gpio_write(GPIO,SOC_OLED_SCK_MASK,1)
  6. #define OLED_SDA_Clr() gpio_write(GPIO,SOC_OLED_SDA_MASK,0)//SDA
  7. #define OLED_SDA_Set() gpio_write(GPIO,SOC_OLED_SDA_MASK,1)
  8. #define OLED_RES_Clr() gpio_write(GPIO,SOC_OLED_RST_MASK,0)//RES
  9. #define OLED_RES_Set() gpio_write(GPIO,SOC_OLED_RST_MASK,1)
  10. #define OLED_DC_Clr() gpio_write(GPIO,SOC_OLED_DC_MASK,0)//DC
  11. #define OLED_DC_Set() gpio_write(GPIO,SOC_OLED_DC_MASK,1)
  12. #define OLED_CS_Clr()  do{}while(0)//CS
  13. #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显示

更多回帖

×