找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: 活动 交友 discuz
查看: 19|回复: 0

如何驱动电子墨水屏 2

[复制链接]

2

主题

0

回帖

8

积分

新手上路

积分
8
发表于 昨天 11:44 | 显示全部楼层 |阅读模式



接下来介绍硬件接口程序
1、首先您需要把我们已经定义好的硬件接口在程序中体现出来
void EPD_GPIO_Init(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOD|RCC_APB2Periph_GPIOE, ENABLE);
//CS-->PD8 SCK-->PD9 SDO--->PD10
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8|GPIO_Pin_9|GPIO_Pin_10; //Port con
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_2MHz;
GPIO_Init(GPIOD, &GPIO_InitStructure);
// D/C--->PE15 RES-->PE14
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_14|GPIO_Pin_15; //Port configuration
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_2MHz;
GPIO_Init(GPIOE, &GPIO_InitStructure);
// BUSY--->PE13
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_13;

2、接下是各个硬件接口的程序
a、首先就是通信方式SPI
SPI时序图
void SPI_Write(unsigned char value)
{
unsigned char i;
for(i=0; i<8; i++)
{
EPD_W21_CLK_0;
if(value & 0x80)
EPD_W21_MOSI_1;
else
EPD_W21_MOSI_0;
value = (value << 1);
EPD_W21_CLK_1;
}
}

这段代码实现的是通过SPI通信协议写数据,每次写一个字节也就是8位所以利用了for循环,
根据上边的时序图,循环8次,这里的 value & 0x80就是在判断最高位是1还是0,
是1 代表MOSI=1,是0 代表MOSI=0。因为SPI写数据是从最高位开始但是数据保存在最低位,
所以要往左移一位即value = (value << 1)这样循环8次就得到了一个字节。

b: CS和DC了
CS和DC就是要用到写数据和写命令里(时序图中CS低电平的时候开始写数据或者命令;DC=0的时候写命令,DC=1的时候写数据。结束后CS重新回到高电平。)
void EPD_W21_WriteCMD(unsigned char command)//写命令
{
EPD_W21_CS_0;
EPD_W21_DC_0; // command write
SPI_Write(command);
EPD_W21_CS_1;
}
void EPD_W21_WriteDATA(unsigned char data)//写数据
{
EPD_W21_CS_0;
EPD_W21_DC_1; // data write
SPI_Write(data);
EPD_W21_CS_1;
}
c: RST通常只用在初始化部分,0,1代表电平
EPD_W21_RST_0; // Module reset
delay_xms(10);//At least 10ms delay
EPD_W21_RST_1;
delay_xms(10); //At least 10ms delay

d:读取BUSY的电平,busy=1代表忙状态,就会一直在while(1)的死循环里;busy=0才会跳出循环执行接下来的程序
void Epaper_READBUSY(void)
{
while(1)
{ //=1 BUSY
if(isEPD_W21_BUSY==0) break;;
}
}

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|电子纸论坛

GMT+8, 2025-12-20 01:03 , Processed in 0.020163 second(s), 18 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表