SPMOD - Eink

概述

XXX

SPMOD_Eink(墨水屏模块)采用 GDEW0154M09 电子墨水屏。

SPMOD - Eink 介绍

  • 采用 Sipeed-SPMOD 接口(2.54mm * 8PIN 排针),统一 MaixPy 开发板接口
  • 通过SP-MOD SPI接口与屏幕底板相连
  • 电子墨水屏:GDEW0154M09是一款1.54”,SPI接口控制,拥有24P FPC(0.5mm间距)接口的电子墨水屏。拥有超广可视角。
  • 支持 1 bit 黑/白显示
  • 分辨率:200x200
  • 模块尺寸:35303.8mm

GDEW0154M09 电子墨水屏介绍

功能特点: 参数
工作电压 2.3V~3.6V
工作电流 1~3mA
工作温度范围 -40℃~85℃
休眠电流 <5uA
屏幕大小 1.54英寸
有效显示区域 27.6mm
分辨率 200*200
色彩 1 bit 黑/白显示
对外接口 24P FPC (0.5mm间距)

内部集成电路包含门缓冲器、源缓冲器,接口,时序控制逻辑,振荡器,DC-DC,SRAM,LUT,VCOM

SPMOD_Eink 模块引脚定义:

引脚序号 引脚名称 类型 引脚说明
1 GND G 模块电源地
2 CS I SPI片选引脚
3 D/C I 数据/命令输入切换引脚
4 RES I 模块复位引脚,低有效
5 3V3 V 模块电源输入正
6 SCK I SPI串行时钟引脚
7 SI I/O MOSI数据引脚,主机输出从机输入
8 BSY O BUSY状态输出引脚
  • 接线方式:
MCU:FUN(IO) SP_Eink
GPIOHS(IO_7) RES
SPIOHS(IO_15) D/C
SPIOHS(IO_20) CS
SPI:SCK(IO_21) SCK
SPI:MOSI(IO_8) SI
GPIOHS(IO_6) BSY
2.3-3.6V 3.3V
GND GND

基本指令列表

指令 功能
0x10 开始发送黑白图像
0x13 开始发送红白图像
0x12 刷新图像到屏幕

更多指令信息参考GDEW0154M09.pdf

使用例程

  • 流程

    1. 初始化配置
    2. 创建 Image 并填充
    3. 发送图像并刷新

C 示例:


  spi_init(1, SPI_WORK_MODE_0, SPI_FF_STANDARD, DATALENGTH, 0);

  fpioa_set_function(SPI_Eink_CS_PIN_NUM, FUNC_SPI1_SS0);   // SPI_Eink_CS_PIN_NUM: 20;
  fpioa_set_function(SPI_Eink_SCK_PIN_NUM, FUNC_SPI1_SCLK); // SPI_Eink_SCK_PIN_NUM: 21;
  fpioa_set_function(SPI_Eink_MOSI_PIN_NUM, FUNC_SPI1_D0);  // SPI_Eink_MOSI_PIN_NUM: 8;

  fpioa_set_function(SPI_Eink_DC_PIN_NUM, FUNC_GPIOHS0 + SPI_Eink_DC_GPIO_NUM);   // SPI_Eink_DC_PIN_NUM: 21;
  fpioa_set_function(SPI_Eink_RST_PIN_NUM, FUNC_GPIOHS0 + SPI_Eink_RST_GPIO_NUM); // SPI_Eink_RST_PIN_NUM: 7;
  fpioa_set_function(SPI_Eink_BL_PIN_NUM, FUNC_GPIOHS0 + SPI_Eink_BL_GPIO_NUM);   // SPI_Eink_BL_PIN_NUM: 6;

  gpiohs_set_drive_mode(SPI_Eink_DC_GPIO_NUM, GPIO_DM_OUTPUT);
  gpiohs_set_drive_mode(SPI_Eink_RST_GPIO_NUM, GPIO_DM_OUTPUT);

  gpiohs_set_pin(SPI_Eink_DC_GPIO_NUM, GPIO_PV_HIGH);
  gpiohs_set_pin(SPI_Eink_RST_GPIO_NUM, GPIO_PV_HIGH);

  gpiohs_set_drive_mode(SPI_Eink_BL_PIN_NUM, GPIO_DM_INPUT_PULL_UP);
  gpiohs_set_pin_edge(SPI_Eink_BL_PIN_NUM, GPIO_PE_BOTH);

    EPD_DisplayInit(); //EPD init

  //Paint initialization
  Paint_NewImage(BlackImage, EPD_WIDTH, EPD_HEIGHT, 270, WHITE); //Set screen size and display orientation
  Paint_SelectImage(BlackImage);                                 //Set the virtual canvas data storage location

  Paint_Clear(WHITE); //clear paint
  Paint_DrawString_EN(0, 0, "sipeed", &Font8, WHITE, BLACK);   //5*8
  Paint_DrawString_EN(0, 10, "sipeed", &Font12, WHITE, BLACK); //7*12
  Paint_DrawString_EN(0, 25, "sipeed", &Font16, WHITE, BLACK); //11*16
  Paint_DrawString_EN(0, 45, "sipeed", &Font20, WHITE, BLACK); //14*20
  Paint_DrawString_EN(0, 80, "sipeed", &Font24, WHITE, BLACK); //17*24
  EPD_FullDisplay(BlackImage, BlackImage, 0);                  //display image

MaixPy 例程:


  spi1 = SPI(SPI.SPI1, mode=SPI.MODE_MASTER, baudrate=600 * 1000,
              polarity=0, phase=0, bits=8, firstbit=SPI.MSB, sck=21, mosi=8)

  fm.register(20, fm.fpioa.GPIOHS20, force=True) # SPI_Eink_SS_PIN_NUM: 20;
  fm.register(15, fm.fpioa.GPIOHS15, force=True) # SPI_Eink_DC_PIN_NUM: 15;
  fm.register(6, fm.fpioa.GPIOHS6, force=True) # SPI_Eink_BUSY_PIN_NUM: 6;
  fm.register(7, fm.fpioa.GPIOHS7, force=True) # SPI_Eink_RST_PIN_NUM: 7;

  cs = GPIO(GPIO.GPIOHS20, GPIO.OUT)
  dc = GPIO(GPIO.GPIOHS15, GPIO.OUT)
  busy = GPIO(GPIO.GPIOHS6, GPIO.IN, GPIO.PULL_DOWN)
  rst = GPIO(GPIO.GPIOHS7, GPIO.OUT)

  epd = SPEink(spi1, cs, dc, rst, busy, SPEink_WIDTH, SPEink_HEIGHT, SPEink_ROTATION)
  epd.init()

  img = image.Image()
  img = img.resize(200, 200)
  img.draw_line(0, 0, 100, 100)

  epd.display(img)

运行环境

语言 开发板 SDK/固件版本
C MaixCube kendryte-standalone-sdk v0.5.6
MaixPy MaixCube maixpy v0.5.1

MaixPy固件建议自行从最新源码编译

运行结果

  • C

  • MaixPy

移植

修改以下参数即可

  • C

      // board_config.h
      #define SPI_INDEX 1
      #define SPI_SCLK_RATE 600 * 1000
      #define SPI_CHIP_SELECT_NSS 0 //SPI_CHIP_SELECT_0
    
      #define SPI_Eink_CS_PIN_NUM 20
      #define SPI_Eink_SCK_PIN_NUM 21
      #define SPI_Eink_MOSI_PIN_NUM 8
    
      #define SPI_Eink_DC_PIN_NUM 15
      #define SPI_Eink_BL_PIN_NUM 6
      #define SPI_Eink_RST_PIN_NUM 7
    
      #define SPI_Eink_DC_GPIO_NUM 15
      #define SPI_Eink_BL_GPIO_NUM 6
      #define SPI_Eink_RST_GPIO_NUM 7
    
  • MaixPy

    ################### config ###################
      SPI_Eink_NUM = SPI.SPI1
      SPI_Eink_DC_PIN_NUM = const(15)
      SPI_Eink_BUSY_PIN_NUM = const(6)
      SPI_Eink_RST_PIN_NUM = const(7)
      SPI_Eink_CS_PIN_NUM = const(20)
      SPI_Eink_SCK_PIN_NUM = const(21)
      SPI_Eink_MOSI_PIN_NUM = const(8)
      SPI_Eink_FREQ_KHZ = const(600)
    ##############################################
    

参考设计

  • SPMOD_Eink 尺寸图:

资源链接

资源 ---
官网 www.sipeed.com
SIPEED 官方淘宝店 sipeed.taobao.com
Github https://github.com/sipeed
BBS http://bbs.sipeed.com
MaixPy 文档官网 http://maixpy.sipeed.com
Sipeed 模型平台 https://maixhub.com
SDK 相关信息 https://dl.sipeed.com/shareURL/MAIX/SDK
HDK 相关信息 https://dl.sipeed.com/shareURL/MAIX/HDK
E-mail(技术支持和商业合作) Support@sipeed.com
telgram link https://t.me/sipeed
MaixPy AI QQ 交流群 862340358