【CW32L052测评】+CW25Q64的读写测试及应用
[复制链接]
尽管CW32L052有64KB的FLASH内存,但对于分辨率为240*320像素点的显示屏来说,要显示一幅满屏的图像还困难的。因为这样的一幅满屏的16位色图像要占用153.6KB的存储空间,这是不小的差距。
那能否解决这个问题呢?
方法还是有的,那就是利用板载的W25Q64,见图1所示。
图1 W25Q64电路
在借助串口的情况下,对W25Q64的读写测试如图2所示。
图2 读写测试
此外,为了进行后续的测试,又添加了TFT屏的显示功能。
该显示屏是一款2.2寸的显示屏,其显示分辨率为240*320像素点,它是采用SPI接口。
该显示屏与开发板的连接关系为:
CS---PF6
RST---PF4
DC---PF5
DIN---PB9
CLK---PB8
BLK---PF7
其输出高低电平的引脚定义为:
#define OLED_CS_Set() PF06_SETHIGH()
#define OLED_CS_Clr() PF06_SETLOW()
#define OLED_RST_Set() PF04_SETHIGH()
#define OLED_RST_Clr() PF04_SETLOW()
#define OLED_DC_Set() PF05_SETHIGH()
#define OLED_DC_Clr() PF05_SETLOW()
#define OLED_SDIN_Set() PB09_SETHIGH()
#define OLED_SDIN_Clr() PB09_SETLOW()
#define OLED_SCLK_Set() PB08_SETHIGH()
#define OLED_SCLK_Clr() PB08_SETLOW()
#define OLED_BLK_Set() PF07_SETHIGH()
#define OLED_BLK_Clr() PF07_SETLOW()
相应的引脚配置函数为:
void test_Configuration(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
GPIO_InitStructure.Pins = GPIO_PIN_8;
GPIO_InitStructure.Mode = GPIO_MODE_OUTPUT_PP;
GPIO_InitStructure.IT = GPIO_IT_NONE;
GPIO_Init(CW_GPIOB, &GPIO_InitStructure);
GPIO_InitStructure.Pins = GPIO_PIN_9;
GPIO_InitStructure.Mode = GPIO_MODE_OUTPUT_PP;
GPIO_InitStructure.IT = GPIO_IT_NONE;
GPIO_Init(CW_GPIOB, &GPIO_InitStructure);
GPIO_InitStructure.Pins = GPIO_PIN_4;
GPIO_InitStructure.Mode = GPIO_MODE_OUTPUT_PP;
GPIO_InitStructure.IT = GPIO_IT_NONE;
GPIO_Init(CW_GPIOF, &GPIO_InitStructure);
GPIO_InitStructure.Pins = GPIO_PIN_5;
GPIO_InitStructure.Mode = GPIO_MODE_OUTPUT_PP;
GPIO_InitStructure.IT = GPIO_IT_NONE;
GPIO_Init(CW_GPIOF, &GPIO_InitStructure);
GPIO_InitStructure.Pins = GPIO_PIN_6;
GPIO_InitStructure.Mode = GPIO_MODE_OUTPUT_PP;
GPIO_InitStructure.IT = GPIO_IT_NONE;
GPIO_Init(CW_GPIOF, &GPIO_InitStructure);
GPIO_InitStructure.Pins = GPIO_PIN_7;
GPIO_InitStructure.Mode = GPIO_MODE_OUTPUT_PP;
GPIO_InitStructure.IT = GPIO_IT_NONE;
GPIO_Init(CW_GPIOF, &GPIO_InitStructure);
}
将W25Q64的读写测试信息显示到TFT屏后,其效果如图3所示,这样就便于后续的测试了。
其中,所显示的图像为16位色160*80像素点,约占25.6KB。经测试在显示屏上要显示2幅这样的图像是无法通过编译的。
图3 读写测试
为此要显示2幅图像,就必须先将图像存放到W25Q64,再通过读取W25Q64来再现图像。
其中实现图像存储到W25Q64的程序为:
if(f)
{
w=0;
for(j=0;j<7;j++)
{
SPI_FLASH_SectorErase(w);
w=w+4096;
}
for(j=0;j<100;j++)
{
w=256*j;
for(i=0;i<256;i++)
{
dBuffer[i]=gImage_hy[i+w];
}
SPI_FLASH_BufferWrite(dBuffer, w, 256);
}
}
读取W25Q64再现图像的程序为:
LCD_Address_Set(40,150,199,229);
for(j=0;j<100;j++)
{
w=256*j;
SPI_FLASH_BufferRead(dBuffer, w, 256);
for(i=0;i<128;i++)
{
if(j<100)
{
LCD_WR_DATA8(dBuffer[i*2]);
LCD_WR_DATA8(dBuffer[i*2+1]);
}
}
}
这样通过多次的图像存储,就可以构建一个图像库,然后通过不同区域的数据就可实现多幅图像的显示。
图4是在屏上实现了2幅图像的显示,如果要显示一幅满屏的图像,则需要将其等分为数段来存储,再将各段内容拼接显示处理即可。
图4 显示2幅图像
|