最近经理通知要做项目了,让我选型一个LCD开始试着做下。这是我用仿真实现的一个smt32的硬件SPI1来驱动的ST7735R,难度挺小的,因为大部分的代码LCD的厂商已经给我们提供了,我们主要修改成硬件SPI来驱动就好了。
此次仿真上面有2个问题,不知道是代码的问题还是仿真图上的问题。第一个问题是仿真运行时有时会出通信数据传输问题,导致指令越界报警,这个可能是SPI不稳定导致的;第二个问题是在改用SPI2或者SPI3来驱动没有任何反应,猜测是代码时钟没开对或者仿真图上面还要加上具体晶振。
代码工程和仿真工程都已压缩打包,可放心下载。。。
先贴上仿真实现图:
再贴上部分代码:
/**ST7735驱动**/
#include "ST7735.h"
#include "usart.h"
u16 BACK_COLOR, POINT_COLOR; //背景色,画笔色
void WriteCommand_7735(u8 CmdData) //写指令
{
SPI_LCD_CS_LOW; //片选
SPI_LCD_COMMAND_W;//写指令
SPI_I2S_SendData(LCD_SPIx,CmdData);
while (SPI_I2S_GetFlagStatus(LCD_SPIx, SPI_I2S_FLAG_TXE) == RESET){}
SPI_LCD_CS_HIGH;
}
void WriteDate_7735(u8 Data) //写8位数据
{
SPI_LCD_CS_LOW; //片选
SPI_LCD_DATA_W;//写数据
SPI_I2S_SendData(LCD_SPIx,Data);
while(SPI_I2S_GetFlagStatus(LCD_SPIx, SPI_I2S_FLAG_TXE) == RESET){}
SPI_LCD_CS_HIGH;
}
void WriteDate16(int data) //写16位数据
{
WriteDate_7735(data>>8);
WriteDate_7735(data);
}
字符限制了,贴不了多少,2积分即可下载。。。