最近經理通知要做項目了,讓我選型一個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積分即可下載。。。