[原创] EFD0287B09移植到STM32说明
1182 查看
5 回复
 楼主 | 发布于 2019-12-23 | 只看楼主
分享到:
类别
内容
平台移植

将EFD0287B09移植到STM32F10x

1. 产品概述

1.1 技术说明

    EFD(Energy Friendly Display)是一种阳光下可读的显示器,既有极高的显示效率功能和低功耗的特点,由于非易失性存储器功能技术,零功率就可以保存显示器的图像。电源只是更改显示的图像。不需要背光,只需要环境光从周围的照明就可以,或者在暗黑条件下,增加前光,在阳光直射的可读性非常好,而且对比度很高,可以在很宽的角度下观看。

1.2典型的应用

    此模块用于通用图形和字符显示应用程序。建议的用途包括仪器仪表、遥控器、电子产品或价格标签,销售点展示,室内或室外标牌和信息显示。

1.3一般说明

•无源矩阵存储器显示,正,反显模式图形模块

•模式:双稳态

•颜色:黑色和绿色

•显示分辨率:240 x 96点

•接口:4线串口液晶控制器/驱动

•观察角度:所有角度(倾角<70°,CR > 3)

•DPI: 90 DPI

•逻辑电压:+3.0 V

•FPC连接

1.4机械规格

机械细节显示如图1所示,总结如下表1所示。

                                         表 1

Table 1

Parameter

Specifications

Unit

Outline dimensions

80.6(W) x 39.0(H) x 1.4(D)

mm

Viewing area

69.6(W) x 35.0 (H)

mm

Active area

66.95(W) x 29.078(H)

mm

Display format

240(Horizontal) x 96(Vertical)

dots

Dot size

0.269(W) x 0.293(H)

mm

Dot spacing

0.01(W) x 0.01(H)

mm

Dot pitch for characters

0.279(W) x 0.303(H)

mm

Operation Temperature

From -20 to 70

Storage Temperature

From -30 to 80

Weight

TBD

gram

                            

                              图1:模块规范



                              2:框图


1.5 接口信号

                                                                                              2

Pin No.


符号

说明

1

ESD_GND

ESD.

2

VCI

This pin is the system power supply pin of the logic block.

3

VDD

This is the VDD regulator output pin.(NC).

4

VSS

Ground.

5

IDLE

When this pin is at low level, the driver IC will enter Sleep mode. RAM
content and register will be retained in this mode. When this pin is at high
level, the driver IC will resume to IDLE mode.

6

ACK

This is an output pin indicating the status of the chip in the following way.

7

RESET

This pin is the reset signal input. Initialization of the chip is started once this
pin is pulled low. Minimum pulse width for reset sequence is 20us.

8

CSB

These pins are the chip select inputs for communication between MCU.
To select the chip CS# must be low.

9

SCLK

SPI clock signal.

10

SO

SPI data output from IC.

11

SI

SPI data input to IC.

12

ESD_GND

ESD



2.EFD0287B09包含主要文件说明

2.1demo_data.h

该文件是demo_data.c的头文件,在目录inc下。

2.2EFD0287B09_SPI.h

该文件是EFD0287B09_SPI.1ib的头文件,在目录inc下。该文件包含EFD产品EFD0287B09屏幕驱动刷新函数。

2.3demo_data.c

demo_data,c是数据文件,在目录src下,存放显示画面信息数据。数据生成取模的方式是:

取模方式:逐行式

取模走向:顺位(高位在前)

2.4 main.c

main.c是主函数文件,目录在SRC下。    


3.EFD0287B09移植操作

3.1新建文件

我们要新建STM32F10x的工程,首先新建文件夹并起名EFD320287B11-STM32f103x


然后在EFD320287B11-STM32f103x文件下新建个文件夹命名为Listing,0bjects

将文件中的Libraries和User拷贝在EFD320287B11-STM32f103x文件夹下。

   Libraries下的CMSIS文件适用于存放内核函数及启动引导文件。

   Libraries下的FWLIB适用于存放内核函数及启动引导文件。

   User是存放用户自己的函数。

   Listing和0bjects是用于存放输出文件的。

3.2开keil新建工程并移植文件


保存到刚刚新建的EFD320287B11-STM32f103x文件夹下并起名字EFD0287B09。


点击保存后选择自己芯片。


依次添加并修改工程栏中的名字为STARTUP,CMSIS,FWLIB,USER。


keil5工程栏中双击STARTUP文件,打开Libraries->CMSIS->startup,文件类型选择All feiles(*.*),添加startup_stm32f10x_hd.s文件。


keil5工程栏中双击CMSIS文件,打开Libraries->CMSIS,文件类型选择All feiles(*.*),添加core_cm3.c,system_stm32f10x.c文件。

keil5工程栏中双击CMSIS文件,打开Libraries->FWLIB->src下,添加所有.c文件。


keil5工程栏中双击USER文件,打开User添加main.c文件和User->src下的所有.c文件。



点击属性,在Defile中添加STM32F10X_HD, USE_STDPERIPH_DRIVER。


Include Path中添加对应的路径。


我们所使用的是C99,所以在Misc Controls中添加—c99。



4.函数的

     我们在函数中主要采用的是回调函数,这样可以更加方便程序移植到不同的平台。只需要修改驱动函数,即可使工程移植,正常运行。
4.1在main.c:

EFD_Cbs回调函数是定义GPIO引脚的输出的,在EFD0287B09_SPI.lib中调用的。

efdIFSet()、efdIFClear ()、efdIFGet()、efdDelay()这4个函数分别是用于设置GPIO的高、低、获取和延时的函数,它里面的函数是开发板中自带的GPIO的设置函数。

4. 2在EFD0287B09_SPI.h:

模块接口结构的定义。

模块操作结构的定义,这里的端口是指针类型

模块引脚操作回调结构的回调函数定义。


5. 修改函数及验证

5.1修改GPIO

   每一个平台初始化GPIO是不一样的,所以先要知道自己平台如何初始化GPIO,需要通过阅读所使用平台的入门手册,来确定如何初始化GPIO。注意,我们在EFD0287B09_SPI.lib文件中定义的port都是指针类型的,如果该平台的port的定义不是指针类型的,要将初始 化的port转化为指针类型的。

    首先我们需要修改GPIO的初始化,我们GPIO的初始化定义是在main.c文件中定义的。

定义port:输出的端口定义为GPIOB,在STM32F103x原函数中可以看到GPIOB的定义,他是(GPIO_TypeDef *)指针类型的,所以需要叫我们的port强转化。如图GPIOB定义修改。

原函数GPIO的定义:

修改前:

修改后:

当我们port定义好后,就是确定pin和使能。


修改前:



修改后:


5.2设置回调函数GPIO的输出和输入

    我们将GPIO的输出和输入写成回调函数的形式,只需要修改main.c中的定义的不同平台的函数,就避免了每次使用,都要去修改他的函数,更加方便了移植。

修改前:


修改后:


5.3验证

    在以上步骤全部完成后,我们需要修改的部分就已经结束了,接下来就是最后一步了,验证我们的修改是否正确,首先通过软件的编译来确定函数是否还有错误,如果有错误,根据错误提示进行修改,当没语法错误会有如下提示。

    当确定没有语法错误后,根据代码中的引脚的定义连接好线路,就可以看到显示屏的刷新,如果没有正常刷新,检查我们GPIO定义是否正确,引脚的输出和清除是否正常。

开发板与产品连接:






















































(0 ) (0 )
回复 举报

回复于 2019-12-24 沙发

感谢分享
(0 )
评论 (0) 举报

回复于 2019-12-28 2#

感谢分享!!!!
(0 )
评论 (0) 举报

回复于 2019-12-28 3#

感谢分享!!!!
(0 )
评论 (0) 举报

回复于 2020-02-23 4#

感谢分享
(0 )
评论 (0) 举报

回复于 2020-03-09 5#

感谢分享
(0 )
评论 (0) 举报
  • 发表回复
    0/3000





    举报

    请选择举报类别

    • 广告垃圾
    • 违规内容
    • 恶意灌水
    • 重复发帖

    全部板块

    返回顶部