Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

clean up frame, add TFT35 V2.0 #13

Merged
merged 1 commit into from
Jul 31, 2019
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
26 changes: 11 additions & 15 deletions TFT/src/User/API/LCD_Encoder.c
Original file line number Diff line number Diff line change
@@ -1,7 +1,8 @@
#include "LCD_Encoder.h"
#include "GPIO_Init.h"
#include "includes.h"

#ifdef LCD_ENCODER_SUPPORT
#if LCD_ENCODER_SUPPORT

int8_t encoderDirection = 1;
volatile int8_t encoderDiff; // Updated in update_buttons, added to encoderPosition every LCD update
Expand All @@ -10,35 +11,29 @@ uint8_t buttons = 0;

void LCD_EncoderInit(void)
{
GPIO_TypeDef *encPort[] = {LCD_ENCA_PORT, LCD_ENCB_PORT, LCD_BTN_PORT};
uint16_t encPin[] = {LCD_ENCA_PIN, LCD_ENCB_PIN, LCD_BTN_PIN};
GPIO_InitTypeDef GPIO_InitStructure;
uint16_t encPin[] = {LCD_ENCA_PIN, LCD_ENCB_PIN, LCD_BTN_PIN};

RCC_APB2PeriphClockCmd(LCD_ENCODER_RCC, ENABLE);

for(u8 i = 0; i < aCount(encPort); i++)
for(u8 i = 0; i < aCount(encPin); i++)
{
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;
GPIO_InitStructure.GPIO_Pin = encPin[i];
GPIO_InitStructure.GPIO_Speed =GPIO_Speed_50MHz;
GPIO_Init(encPort[i], &GPIO_InitStructure);
GPIO_InitSet(encPin[i], MGPIO_MODE_IPU, 0);
}
}

bool LCD_ReadEncA(void)
{
return !GPIO_ReadInputDataBit(LCD_ENCA_PORT, LCD_ENCA_PIN);
return !GPIO_GetLevel(LCD_ENCA_PIN);
}

bool LCD_ReadEncB(void)
{
return !GPIO_ReadInputDataBit(LCD_ENCB_PORT, LCD_ENCB_PIN);
return !GPIO_GetLevel(LCD_ENCB_PIN);
}

bool LCD_ReadBtn(uint8_t intervals)
{
static u32 nowTime = 0;

if(!GPIO_ReadInputDataBit(LCD_BTN_PORT, LCD_BTN_PIN))
if(!GPIO_GetLevel(LCD_BTN_PIN))
{
if(OS_GetTime() - nowTime > intervals)
{
Expand Down Expand Up @@ -92,7 +87,8 @@ void LCD_LoopEncoder(void)
}

void loopCheckMode(void)
{
{
if(isPrinting()) return;
if(LCD_ReadBtn(LCD_CHANGE_MODE_INTERVALS))
{
infoMenu.menu[++infoMenu.cur] = menuMode;
Expand Down
2 changes: 1 addition & 1 deletion TFT/src/User/API/Language/Language.h
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
#define _LANGUAGE_H_

#include "stdbool.h"
#include "stm32f10x.h"
#include "variants.h"


enum
Expand Down
26 changes: 13 additions & 13 deletions TFT/src/User/API/Language/language_jp.h
Original file line number Diff line number Diff line change
Expand Up @@ -27,17 +27,17 @@
#define JP_FAST_SPEED "���"
#define JP_FAN_FULL_SPEED "ȫ��"
#define JP_FAN_HALF_SPEED "50%�٤�"
#define JP_POWER_OFF "Power Off"
#define JP_POWER_OFF "�ԴOFF"
#define JP_TOUCHSCREEN_ADJUST "������"
#define JP_SCREEN_INFO "�Ĥ���"
#define JP_DISCONNECT "�ǩ`���ӾA"
#define JP_BAUDRATE_115200 "115200"
#define JP_BAUDRATE_250000 "250000"
#define JP_PERCENTAGE "Percentage"
#define JP_BABYSTEP "BabyStep"
#define JP_PERCENTAGE_SPEED "���ө`��%"
#define JP_PERCENTAGE_FLOW "Ѻ��%"
#define JP_VALUE_ZERO "Zero"
#define JP_PERCENTAGE "�ѩ`�����"
#define JP_BABYSTEP "�٥ө`���ƥå�"
#define JP_PERCENTAGE_SPEED "���ө`��"
#define JP_PERCENTAGE_FLOW "Ѻ��"
#define JP_VALUE_ZERO "����"
#define JP_1_DEGREE "1��"
#define JP_5_DEGREE "5��"
#define JP_10_DEGREE "10��"
Expand Down Expand Up @@ -65,28 +65,28 @@
#define JP_UNCONNECTED "�ץ�󥿩`���B�A���Ƥ��ʤ�!"
#define JP_DISCONNECT_INFO "SD���`�ɡ�PC�I��"
#define JP_LOADING "�����..."
#define JP_POWER_FAILED "Continue printing?"
#define JP_POWER_FAILED "�ץ��Ȥ�@�A���ޤ���?"
#define JP_CONTINUE "�@�A"
#define JP_CANNEL "����󥻥�"
#define JP_ADJUST_TITLE "���������`���^��"
#define JP_ADJUST_INFO "���Ǥ򥿥å�"
#define JP_ADJUST_OK "У�����ɹ����ޤ���"
#define JP_ADJUST_FAILED "У����ʧ�����ޤ�������һ�Ȥ�ԇ�����¤���"
#define JP_WARNING "Warning"
#define JP_WARNING "ע��"
#define JP_STOP_PRINT "�ץ��Ȥ���ֹ���ޤ���?"
#define JP_CONFIRM "�_��"
#define JP_CONFIRM "OK"

#define JP_TFTSD "TFT SD"
#define JP_READ_TFTSD_ERROR "TFT SD���`�ɤ��i��ȡ�꤬����`�k�����ޤ���!"
#define JP_TFTSD_INSERTED "SD���`�����ޤ���!"
#define JP_TFTSD_REMOVED "SD���`�ɳ����ޤ���!"

#define JP_U_DISK "U Disk"
#define JP_READ_U_DISK_ERROR "Read U Disk error!"
#define JP_U_DISK "USB����`"
#define JP_READ_U_DISK_ERROR "USB����`�i���z�ߥ���`!"
#define JP_U_DISK_INSERTED "U Disk���`�����ޤ���!"
#define JP_U_DISK_REMOVED "U Disk���`�ɳ����ޤ���!"

#define JP_ONBOARDSD "OnboardSD"
#define JP_READ_ONBOARDSD_ERROR "Onboard SD���`�ɤ��i��ȡ�꤬����`�k�����ޤ���!"
#define JP_ONBOARDSD "�ڲ� mSD���`��"
#define JP_READ_ONBOARDSD_ERROR "�ڲ� mSD���`�ɤ��i��ȡ�꤬����`�k�����ޤ���!"

#endif
6 changes: 4 additions & 2 deletions TFT/src/User/API/UI/ST7920_Simulator.c
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
#include "includes.h"
#include "GUI.h"

#ifdef ST7920_SPI

ST7920_PIXEL st7920 = {ST7920_XSTART, ST7920_YSTART, 0};
ST7920_CTRL_STATUS status = ST7920_IDLE;
Expand Down Expand Up @@ -132,16 +133,17 @@ void menuST7920(void)

while(infoMenu.menu[infoMenu.cur] == menuST7920)
{
if(SPISlave.rIndex != SPISlave.wIndex)
while(SPISlave.rIndex != SPISlave.wIndex)
{
ST7920_ParseRecv(SPISlave.data[SPISlave.rIndex]);

SPISlave.rIndex = (SPISlave.rIndex + 1) % SPI_SLAVE_MAX;
}

#ifdef LCD_ENCODER_SUPPORT
#if LCD_ENCODER_SUPPORT
loopCheckMode();
#endif
}
SPI_SlaveDeInit();
}
#endif
51 changes: 20 additions & 31 deletions TFT/src/User/API/UI/touch_process.c
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
#include "touch_process.h"
#include "GPIO_Init.h"
#include "includes.h"

#define XL1 LCD_X[0]
Expand Down Expand Up @@ -140,7 +141,7 @@ u16 Key_value(u8 total_rect,const GUI_RECT* menuRect)
{
if((x>menuRect[i].x0)&&(x<menuRect[i].x1)&&(y>menuRect[i].y0)&&(y<menuRect[i].y1))
{
#ifdef BUZZER_SUPPORT
#ifdef BUZZER_PIN
openBuzzer(3, 11);
#endif
return i;
Expand Down Expand Up @@ -385,7 +386,7 @@ u16 KNOB_GetRV(GUI_RECT *knob)
return key_return;
}

#ifdef BUZZER_SUPPORT
#ifdef BUZZER_PIN
void TIM3_Config(u16 psc,u16 arr)
{
NVIC_InitTypeDef NVIC_InitStructure;
Expand All @@ -396,36 +397,25 @@ void TIM3_Config(u16 psc,u16 arr)
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
NVIC_Init(&NVIC_InitStructure);

RCC->APB1ENR|=1<<1; //TIM3ʱ��ʹ��
TIM3->ARR=arr; //�趨�Զ���װֵ
TIM3->PSC=psc; //Ԥ��Ƶ��
TIM3->SR = (uint16_t)~(1<<0); //��������ж�
TIM3->DIER|=1<<0; //���������ж�
RCC->APB1ENR|=1<<1; //TIM3ʱ��ʹ��
TIM3->ARR=arr; //�趨�Զ���װֵ
TIM3->PSC=psc; //Ԥ��Ƶ��
TIM3->SR = (uint16_t)~(1<<0); //��������ж�
TIM3->DIER|=1<<0; //���������ж�
TIM3->CNT =0;
TIM3->CR1 &= ~(0x01); //ʧ�ܶ�ʱ��3
TIM3->CR1 &= ~(0x01); //ʧ�ܶ�ʱ��3
}

void Buzzer_Config(void)
{
GPIO_InitTypeDef GPIO_InitStructure;

RCC_APB2PeriphClockCmd(BUZZER_RCC, ENABLE);

GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_InitStructure.GPIO_Pin = BUZZER_PIN;
GPIO_InitStructure.GPIO_Speed =GPIO_Speed_50MHz;
GPIO_Init(BUZZER_PORT, &GPIO_InitStructure);
{
GPIO_InitSet(BUZZER_PIN, MGPIO_MODE_OUT_PP, 0);

TIM3_Config(719,100); //1Khz
TIM3_Config(999, F_CPUM-1); //1Khz
}

void Buzzer_DeConfig(void)
{
GPIO_InitTypeDef GPIO_InitStructure;

GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
GPIO_InitStructure.GPIO_Pin = BUZZER_PIN;
GPIO_Init(BUZZER_PORT, &GPIO_InitStructure);
GPIO_InitSet(BUZZER_PIN, MGPIO_MODE_IPN, 0);
}

typedef struct{
Expand All @@ -446,38 +436,37 @@ void openBuzzer(u16 h_us, u16 l_us)
else
buzzer.num = 500;

TIM3->CR1 |= 0x01; //ʹ�ܶ�ʱ��3
TIM3->CR1 |= 0x01; //ʹ�ܶ�ʱ��3
}
void closeBuzzer(void)
{
buzzer.num = 0;
TIM3->CR1 &= ~(0x01);
}

void TIM3_IRQHandler(void) //TIM3�ж�
void TIM3_IRQHandler(void) //TIM3�ж�
{
static bool flag = false;
if ((TIM3->SR&0x01) != 0 ) //���ָ����TIM�жϷ������:TIM �ж�Դ
if ((TIM3->SR&0x01) != 0 ) //���ָ����TIM�жϷ������:TIM �ж�Դ
{
flag = !flag;
flag = !flag;
if( flag )
{
GPIO_SetBits(BUZZER_PORT, BUZZER_PIN);
TIM3->ARR = buzzer.h_us;
}
else
{
GPIO_ResetBits(BUZZER_PORT, BUZZER_PIN);
TIM3->ARR = buzzer.l_us;
}


GPIO_SetLevel(BUZZER_PIN, flag);
buzzer.num--;
if( buzzer.num == 0 )
{
TIM3->CR1 &= ~(0x01);
}

TIM3->SR = (uint16_t)~(1<<0); //���TIMx���жϴ�����λ:TIM �ж�Դ
TIM3->SR = (uint16_t)~(1<<0); //���TIMx���жϴ�����λ:TIM �ж�Դ
}
}
#endif
94 changes: 1 addition & 93 deletions TFT/src/User/API/UI/ui_draw.c
Original file line number Diff line number Diff line change
@@ -1,101 +1,9 @@
#include "ui_draw.h"
#include "includes.h"




#ifdef STM32_HAS_FSMC
//Config for SPI Channel
#if W25Qxx_SPI == _SPI1
#define W25QXX_SPI_NUM SPI1
#define W25QXX_SPI_DMA_RCC_AHB RCC_AHBPeriph_DMA1
#define W25QXX_SPI_DMA DMA1
#define W25QXX_SPI_DMA_CHANNEL DMA1_Channel2
#define W25QXX_SPI_DMA_IFCR_BIT 5
#elif W25Qxx_SPI == _SPI2
#define W25QXX_SPI_NUM SPI2
#define W25QXX_SPI_DMA DMA1
#define W25QXX_SPI_DMA_RCC_AHB RCC_AHBPeriph_DMA1
#define W25QXX_SPI_DMA_CHANNEL DMA1_Channel4
#define W25QXX_SPI_DMA_IFCR_BIT 13
#elif W25Qxx_SPI == _SPI3
#define W25QXX_SPI_NUM SPI3
#define W25QXX_SPI_DMA DMA2
#define W25QXX_SPI_DMA_RCC_AHB RCC_AHBPeriph_DMA2
#define W25QXX_SPI_DMA_CHANNEL DMA2_Channel1
#define W25QXX_SPI_DMA_IFCR_BIT 1
#endif

//SPI --> FSMC DMA (LCD_RAM)
//16bits, SPI_RX to LCD_RAM.
void LCD_DMA_Config(void)
{

RCC->AHBENR |= W25QXX_SPI_DMA_RCC_AHB; //����DMAʱ��
Delay_ms(5); //�ȴ�DMAʱ���ȶ�
W25QXX_SPI_DMA_CHANNEL->CPAR = (u32)&W25QXX_SPI_NUM->DR; //�����ַΪ:SPI->DR
W25QXX_SPI_DMA_CHANNEL->CMAR = (u32)&LCD->LCD_RAM;//Ŀ���ַΪLCD_RAM
W25QXX_SPI_DMA_CHANNEL->CNDTR = 0; //DMA1,����������,��ʱ����Ϊ0
W25QXX_SPI_DMA_CHANNEL->CCR = 0X00000000; //��λ
W25QXX_SPI_DMA_CHANNEL->CCR |= 0<<4; //�������
W25QXX_SPI_DMA_CHANNEL->CCR |= 0<<5; //��ͨģʽ
W25QXX_SPI_DMA_CHANNEL->CCR |= 0<<6; //�����ַ������ģʽ
W25QXX_SPI_DMA_CHANNEL->CCR |= 0<<7; //�洢��������ģʽ
W25QXX_SPI_DMA_CHANNEL->CCR |= LCD_DATA_16BIT<<8; //�������ݿ���Ϊ16λ
W25QXX_SPI_DMA_CHANNEL->CCR |= LCD_DATA_16BIT<<10; //�洢�����ݿ���16λ
W25QXX_SPI_DMA_CHANNEL->CCR |= 1<<12; //�е����ȼ�
W25QXX_SPI_DMA_CHANNEL->CCR |= 0<<14; //�Ǵ洢�����洢��ģʽ
}

#define LCD_DMA_MAX_TRANS 65535 //DMA 65535 bytes one frame
// start DMA transfer from SPI->DR to FSMC
// the max bytes of one frame is LCD_DMA_MAX_TRANS 65535
void lcd_frame_segment_display(u16 size, u32 addr)
{
W25QXX_SPI_DMA_CHANNEL->CNDTR = size;

W25Qxx_SPI_CS_Set(0);
W25Qxx_SPI_Read_Write_Byte(CMD_FAST_READ_DATA);
W25Qxx_SPI_Read_Write_Byte((u8)((addr)>>16));
W25Qxx_SPI_Read_Write_Byte((u8)((addr)>>8));
W25Qxx_SPI_Read_Write_Byte((u8)addr);
W25Qxx_SPI_Read_Write_Byte(0XFF); //8 dummy clock

//set SPI to 16bit DMA rx only mode
W25QXX_SPI_NUM->CR1 &= ~(1<<6);
W25QXX_SPI_NUM->CR2 |= 1<<0; //enable SPI rx DMA
W25QXX_SPI_NUM->CR1 |= LCD_DATA_16BIT<<11; //16bit data frame
W25QXX_SPI_NUM->CR1 |= 1<<10; //rx only

W25QXX_SPI_DMA_CHANNEL->CCR |= 1<<0; //enable dma channel
W25QXX_SPI_NUM->CR1 |= 1<<6; //enable SPI

while((W25QXX_SPI_DMA->ISR&(1<<W25QXX_SPI_DMA_IFCR_BIT)) == 0); //wait for rx complete
W25QXX_SPI_DMA_CHANNEL->CCR &= (u32)(~(1<<0));
W25QXX_SPI_DMA->IFCR |= (u32)(1<<W25QXX_SPI_DMA_IFCR_BIT); //clear ISR for rx complete
W25Qxx_SPI_CS_Set(1);

//set spi from dma to normal mode
// RCC->APB1RSTR |= 1<<15; //reset SPI
// RCC->APB1RSTR &= ~(1<<15);
SPI_Protocol_Init(W25Qxx_SPI, W25Qxx_SPEED);
}

void lcd_frame_display(u16 sx,u16 sy,u16 w,u16 h, u32 addr)
{
u32 cur=0;
u32 segmentSize;
u32 totalSize = w*h*(2-LCD_DATA_16BIT);

LCD_SetWindow(sx,sy,sx+w-1,sy+h-1);
LCD_WR_REG(0x2C);

for(cur = 0; cur < totalSize; cur += LCD_DMA_MAX_TRANS)
{
segmentSize = cur+LCD_DMA_MAX_TRANS<=totalSize ? LCD_DMA_MAX_TRANS : totalSize-cur;
lcd_frame_segment_display(segmentSize, addr+cur*(LCD_DATA_16BIT + 1));
}
}
void lcd_frame_display(u16 sx,u16 sy,u16 w,u16 h, u32 addr);

#else

Expand Down
4 changes: 2 additions & 2 deletions TFT/src/User/API/boot.c
Original file line number Diff line number Diff line change
Expand Up @@ -57,7 +57,7 @@ bool bmpDecode(char *bmp,u32 addr)
f_read(&bmpFile, magic, 2 ,&mybr);
if (memcmp(magic, "BM", 2))
return false;
//****************��ȡͷ��Ϣ****************//

f_lseek(&bmpFile, 10);
f_read(&bmpFile, &offset, sizeof(int),&mybr);

Expand All @@ -71,7 +71,7 @@ bool bmpDecode(char *bmp,u32 addr)
return false;
bpp >>=3;
bytePerLine=w*bpp;
if(bytePerLine%4 !=0) //bmp�ļ�ÿ�е��ֽ��������� 4 ����������������ǣ�����Ҫ����
if(bytePerLine%4 !=0) //bmp
bytePerLine=(bytePerLine/4+1)*4;

for(bnum=0;bnum<(w*h*2+4095)/4096;bnum++)
Expand Down
Loading