Skip to content

Commit da072ce

Browse files
authored
Merge pull request #13 from Msq001/master
clean up frame, add TFT35 V2.0
2 parents ff1be93 + 16763cc commit da072ce

File tree

163 files changed

+3426
-1060
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

163 files changed

+3426
-1060
lines changed
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.

TFT/src/User/API/LCD_Encoder.c

Lines changed: 11 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,8 @@
11
#include "LCD_Encoder.h"
2+
#include "GPIO_Init.h"
23
#include "includes.h"
34

4-
#ifdef LCD_ENCODER_SUPPORT
5+
#if LCD_ENCODER_SUPPORT
56

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

1112
void LCD_EncoderInit(void)
1213
{
13-
GPIO_TypeDef *encPort[] = {LCD_ENCA_PORT, LCD_ENCB_PORT, LCD_BTN_PORT};
14-
uint16_t encPin[] = {LCD_ENCA_PIN, LCD_ENCB_PIN, LCD_BTN_PIN};
15-
GPIO_InitTypeDef GPIO_InitStructure;
14+
uint16_t encPin[] = {LCD_ENCA_PIN, LCD_ENCB_PIN, LCD_BTN_PIN};
1615

17-
RCC_APB2PeriphClockCmd(LCD_ENCODER_RCC, ENABLE);
18-
19-
for(u8 i = 0; i < aCount(encPort); i++)
16+
for(u8 i = 0; i < aCount(encPin); i++)
2017
{
21-
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;
22-
GPIO_InitStructure.GPIO_Pin = encPin[i];
23-
GPIO_InitStructure.GPIO_Speed =GPIO_Speed_50MHz;
24-
GPIO_Init(encPort[i], &GPIO_InitStructure);
18+
GPIO_InitSet(encPin[i], MGPIO_MODE_IPU, 0);
2519
}
2620
}
2721

2822
bool LCD_ReadEncA(void)
2923
{
30-
return !GPIO_ReadInputDataBit(LCD_ENCA_PORT, LCD_ENCA_PIN);
24+
return !GPIO_GetLevel(LCD_ENCA_PIN);
3125
}
26+
3227
bool LCD_ReadEncB(void)
3328
{
34-
return !GPIO_ReadInputDataBit(LCD_ENCB_PORT, LCD_ENCB_PIN);
29+
return !GPIO_GetLevel(LCD_ENCB_PIN);
3530
}
3631

3732
bool LCD_ReadBtn(uint8_t intervals)
3833
{
3934
static u32 nowTime = 0;
4035

41-
if(!GPIO_ReadInputDataBit(LCD_BTN_PORT, LCD_BTN_PIN))
36+
if(!GPIO_GetLevel(LCD_BTN_PIN))
4237
{
4338
if(OS_GetTime() - nowTime > intervals)
4439
{
@@ -92,7 +87,8 @@ void LCD_LoopEncoder(void)
9287
}
9388

9489
void loopCheckMode(void)
95-
{
90+
{
91+
if(isPrinting()) return;
9692
if(LCD_ReadBtn(LCD_CHANGE_MODE_INTERVALS))
9793
{
9894
infoMenu.menu[++infoMenu.cur] = menuMode;

TFT/src/User/API/Language/Language.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
#define _LANGUAGE_H_
33

44
#include "stdbool.h"
5-
#include "stm32f10x.h"
5+
#include "variants.h"
66

77

88
enum

TFT/src/User/API/Language/language_jp.h

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -27,17 +27,17 @@
2727
#define JP_FAST_SPEED "早め"
2828
#define JP_FAN_FULL_SPEED "全速"
2929
#define JP_FAN_HALF_SPEED "50%速さ"
30-
#define JP_POWER_OFF "Power Off"
30+
#define JP_POWER_OFF "電源OFF"
3131
#define JP_TOUCHSCREEN_ADJUST "校正する"
3232
#define JP_SCREEN_INFO "ついて"
3333
#define JP_DISCONNECT "データ接続"
3434
#define JP_BAUDRATE_115200 "115200"
3535
#define JP_BAUDRATE_250000 "250000"
36-
#define JP_PERCENTAGE "Percentage"
37-
#define JP_BABYSTEP "BabyStep"
38-
#define JP_PERCENTAGE_SPEED "スビード%"
39-
#define JP_PERCENTAGE_FLOW "押出%"
40-
#define JP_VALUE_ZERO "Zero"
36+
#define JP_PERCENTAGE "パーセント"
37+
#define JP_BABYSTEP "ベビーステップ"
38+
#define JP_PERCENTAGE_SPEED "スビード"
39+
#define JP_PERCENTAGE_FLOW "押出"
40+
#define JP_VALUE_ZERO "ゼロ"
4141
#define JP_1_DEGREE "1℃"
4242
#define JP_5_DEGREE "5℃"
4343
#define JP_10_DEGREE "10℃"
@@ -65,28 +65,28 @@
6565
#define JP_UNCONNECTED "プリンターに連続していない!"
6666
#define JP_DISCONNECT_INFO "SDカード PC両用"
6767
#define JP_LOADING "ロッド中..."
68-
#define JP_POWER_FAILED "Continue printing?"
68+
#define JP_POWER_FAILED "プリントを継続しますか?"
6969
#define JP_CONTINUE "継続"
7070
#define JP_CANNEL "キャンセル"
7171
#define JP_ADJUST_TITLE "タッチスクリーン較正"
7272
#define JP_ADJUST_INFO "赤星をタッチ"
7373
#define JP_ADJUST_OK "校正が成功しました"
7474
#define JP_ADJUST_FAILED "校正が失敗しました、も一度お試して下さい"
75-
#define JP_WARNING "Warning"
75+
#define JP_WARNING "注意"
7676
#define JP_STOP_PRINT "プリントを中止しますか?"
77-
#define JP_CONFIRM "確定"
77+
#define JP_CONFIRM "OK"
7878

7979
#define JP_TFTSD "TFT SD"
8080
#define JP_READ_TFTSD_ERROR "TFT SDカードの読み取りがエラー発生しました!"
8181
#define JP_TFTSD_INSERTED "SDカード入りました!"
8282
#define JP_TFTSD_REMOVED "SDカード出しました!"
8383

84-
#define JP_U_DISK "U Disk"
85-
#define JP_READ_U_DISK_ERROR "Read U Disk error!"
84+
#define JP_U_DISK "USBメモリー"
85+
#define JP_READ_U_DISK_ERROR "USBメモリー読み込みエラー!"
8686
#define JP_U_DISK_INSERTED "U Diskカード入りました!"
8787
#define JP_U_DISK_REMOVED "U Diskカード出しました!"
8888

89-
#define JP_ONBOARDSD "OnboardSD"
90-
#define JP_READ_ONBOARDSD_ERROR "Onboard SDカードの読み取りがエラー発生しました!"
89+
#define JP_ONBOARDSD "内部 mSDカード"
90+
#define JP_READ_ONBOARDSD_ERROR "内部 mSDカードの読み取りがエラー発生しました!"
9191

9292
#endif

TFT/src/User/API/UI/ST7920_Simulator.c

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
#include "includes.h"
33
#include "GUI.h"
44

5+
#ifdef ST7920_SPI
56

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

133134
while(infoMenu.menu[infoMenu.cur] == menuST7920)
134135
{
135-
if(SPISlave.rIndex != SPISlave.wIndex)
136+
while(SPISlave.rIndex != SPISlave.wIndex)
136137
{
137138
ST7920_ParseRecv(SPISlave.data[SPISlave.rIndex]);
138139

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

142-
#ifdef LCD_ENCODER_SUPPORT
143+
#if LCD_ENCODER_SUPPORT
143144
loopCheckMode();
144145
#endif
145146
}
146147
SPI_SlaveDeInit();
147148
}
149+
#endif

TFT/src/User/API/UI/touch_process.c

Lines changed: 20 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
#include "touch_process.h"
2+
#include "GPIO_Init.h"
23
#include "includes.h"
34

45
#define XL1 LCD_X[0]
@@ -140,7 +141,7 @@ u16 Key_value(u8 total_rect,const GUI_RECT* menuRect)
140141
{
141142
if((x>menuRect[i].x0)&&(x<menuRect[i].x1)&&(y>menuRect[i].y0)&&(y<menuRect[i].y1))
142143
{
143-
#ifdef BUZZER_SUPPORT
144+
#ifdef BUZZER_PIN
144145
openBuzzer(3, 11);
145146
#endif
146147
return i;
@@ -385,7 +386,7 @@ u16 KNOB_GetRV(GUI_RECT *knob)
385386
return key_return;
386387
}
387388

388-
#ifdef BUZZER_SUPPORT
389+
#ifdef BUZZER_PIN
389390
void TIM3_Config(u16 psc,u16 arr)
390391
{
391392
NVIC_InitTypeDef NVIC_InitStructure;
@@ -396,36 +397,25 @@ void TIM3_Config(u16 psc,u16 arr)
396397
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
397398
NVIC_Init(&NVIC_InitStructure);
398399

399-
RCC->APB1ENR|=1<<1; //TIM3时钟使能
400-
TIM3->ARR=arr; //设定自动重装值
401-
TIM3->PSC=psc; //预分频器
402-
TIM3->SR = (uint16_t)~(1<<0); //清除更新中断
403-
TIM3->DIER|=1<<0; //允许更新中断
400+
RCC->APB1ENR|=1<<1; //TIM3ʱ��ʹ��
401+
TIM3->ARR=arr; //�趨�Զ���װֵ
402+
TIM3->PSC=psc; //Ԥ��Ƶ��
403+
TIM3->SR = (uint16_t)~(1<<0); //��������ж�
404+
TIM3->DIER|=1<<0; //���������ж�
404405
TIM3->CNT =0;
405-
TIM3->CR1 &= ~(0x01); //失能定时器3
406+
TIM3->CR1 &= ~(0x01); //ʧ�ܶ�ʱ��3
406407
}
407408

408409
void Buzzer_Config(void)
409-
{
410-
GPIO_InitTypeDef GPIO_InitStructure;
411-
412-
RCC_APB2PeriphClockCmd(BUZZER_RCC, ENABLE);
413-
414-
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
415-
GPIO_InitStructure.GPIO_Pin = BUZZER_PIN;
416-
GPIO_InitStructure.GPIO_Speed =GPIO_Speed_50MHz;
417-
GPIO_Init(BUZZER_PORT, &GPIO_InitStructure);
410+
{
411+
GPIO_InitSet(BUZZER_PIN, MGPIO_MODE_OUT_PP, 0);
418412

419-
TIM3_Config(719,100); //1Khz
413+
TIM3_Config(999, F_CPUM-1); //1Khz
420414
}
421415

422416
void Buzzer_DeConfig(void)
423417
{
424-
GPIO_InitTypeDef GPIO_InitStructure;
425-
426-
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
427-
GPIO_InitStructure.GPIO_Pin = BUZZER_PIN;
428-
GPIO_Init(BUZZER_PORT, &GPIO_InitStructure);
418+
GPIO_InitSet(BUZZER_PIN, MGPIO_MODE_IPN, 0);
429419
}
430420

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

449-
TIM3->CR1 |= 0x01; //使能定时器3
439+
TIM3->CR1 |= 0x01; //ʹ�ܶ�ʱ��3
450440
}
451441
void closeBuzzer(void)
452442
{
453443
buzzer.num = 0;
454444
TIM3->CR1 &= ~(0x01);
455445
}
456446

457-
void TIM3_IRQHandler(void) //TIM3中断
447+
void TIM3_IRQHandler(void) //TIM3�ж�
458448
{
459449
static bool flag = false;
460-
if ((TIM3->SR&0x01) != 0 ) //检查指定的TIM中断发生与否:TIM 中断源
450+
if ((TIM3->SR&0x01) != 0 ) //���ָ����TIM�жϷ������:TIM �ж�Դ
461451
{
462-
flag = !flag;
452+
flag = !flag;
463453
if( flag )
464454
{
465-
GPIO_SetBits(BUZZER_PORT, BUZZER_PIN);
466455
TIM3->ARR = buzzer.h_us;
467456
}
468457
else
469458
{
470-
GPIO_ResetBits(BUZZER_PORT, BUZZER_PIN);
471459
TIM3->ARR = buzzer.l_us;
472460
}
473-
461+
462+
GPIO_SetLevel(BUZZER_PIN, flag);
474463
buzzer.num--;
475464
if( buzzer.num == 0 )
476465
{
477466
TIM3->CR1 &= ~(0x01);
478467
}
479468

480-
TIM3->SR = (uint16_t)~(1<<0); //清除TIMx的中断待处理位:TIM 中断源
469+
TIM3->SR = (uint16_t)~(1<<0); //���TIMx���жϴ�����λ:TIM �ж�Դ
481470
}
482471
}
483472
#endif

TFT/src/User/API/UI/ui_draw.c

Lines changed: 1 addition & 93 deletions
Original file line numberDiff line numberDiff line change
@@ -1,101 +1,9 @@
11
#include "ui_draw.h"
22
#include "includes.h"
33

4-
5-
6-
74
#ifdef STM32_HAS_FSMC
8-
//Config for SPI Channel
9-
#if W25Qxx_SPI == _SPI1
10-
#define W25QXX_SPI_NUM SPI1
11-
#define W25QXX_SPI_DMA_RCC_AHB RCC_AHBPeriph_DMA1
12-
#define W25QXX_SPI_DMA DMA1
13-
#define W25QXX_SPI_DMA_CHANNEL DMA1_Channel2
14-
#define W25QXX_SPI_DMA_IFCR_BIT 5
15-
#elif W25Qxx_SPI == _SPI2
16-
#define W25QXX_SPI_NUM SPI2
17-
#define W25QXX_SPI_DMA DMA1
18-
#define W25QXX_SPI_DMA_RCC_AHB RCC_AHBPeriph_DMA1
19-
#define W25QXX_SPI_DMA_CHANNEL DMA1_Channel4
20-
#define W25QXX_SPI_DMA_IFCR_BIT 13
21-
#elif W25Qxx_SPI == _SPI3
22-
#define W25QXX_SPI_NUM SPI3
23-
#define W25QXX_SPI_DMA DMA2
24-
#define W25QXX_SPI_DMA_RCC_AHB RCC_AHBPeriph_DMA2
25-
#define W25QXX_SPI_DMA_CHANNEL DMA2_Channel1
26-
#define W25QXX_SPI_DMA_IFCR_BIT 1
27-
#endif
28-
29-
//SPI --> FSMC DMA (LCD_RAM)
30-
//16bits, SPI_RX to LCD_RAM.
31-
void LCD_DMA_Config(void)
32-
{
33-
34-
RCC->AHBENR |= W25QXX_SPI_DMA_RCC_AHB; //开启DMA时钟
35-
Delay_ms(5); //等待DMA时钟稳定
36-
W25QXX_SPI_DMA_CHANNEL->CPAR = (u32)&W25QXX_SPI_NUM->DR; //外设地址为:SPI->DR
37-
W25QXX_SPI_DMA_CHANNEL->CMAR = (u32)&LCD->LCD_RAM;//目标地址为LCD_RAM
38-
W25QXX_SPI_DMA_CHANNEL->CNDTR = 0; //DMA1,传输数据量,暂时设置为0
39-
W25QXX_SPI_DMA_CHANNEL->CCR = 0X00000000; //复位
40-
W25QXX_SPI_DMA_CHANNEL->CCR |= 0<<4; //从外设读
41-
W25QXX_SPI_DMA_CHANNEL->CCR |= 0<<5; //普通模式
42-
W25QXX_SPI_DMA_CHANNEL->CCR |= 0<<6; //外设地址非增量模式
43-
W25QXX_SPI_DMA_CHANNEL->CCR |= 0<<7; //存储器非增量模式
44-
W25QXX_SPI_DMA_CHANNEL->CCR |= LCD_DATA_16BIT<<8; //外设数据宽度为16位
45-
W25QXX_SPI_DMA_CHANNEL->CCR |= LCD_DATA_16BIT<<10; //存储器数据宽度16位
46-
W25QXX_SPI_DMA_CHANNEL->CCR |= 1<<12; //中等优先级
47-
W25QXX_SPI_DMA_CHANNEL->CCR |= 0<<14; //非存储器到存储器模式
48-
}
49-
50-
#define LCD_DMA_MAX_TRANS 65535 //DMA 65535 bytes one frame
51-
// start DMA transfer from SPI->DR to FSMC
52-
// the max bytes of one frame is LCD_DMA_MAX_TRANS 65535
53-
void lcd_frame_segment_display(u16 size, u32 addr)
54-
{
55-
W25QXX_SPI_DMA_CHANNEL->CNDTR = size;
56-
57-
W25Qxx_SPI_CS_Set(0);
58-
W25Qxx_SPI_Read_Write_Byte(CMD_FAST_READ_DATA);
59-
W25Qxx_SPI_Read_Write_Byte((u8)((addr)>>16));
60-
W25Qxx_SPI_Read_Write_Byte((u8)((addr)>>8));
61-
W25Qxx_SPI_Read_Write_Byte((u8)addr);
62-
W25Qxx_SPI_Read_Write_Byte(0XFF); //8 dummy clock
63-
64-
//set SPI to 16bit DMA rx only mode
65-
W25QXX_SPI_NUM->CR1 &= ~(1<<6);
66-
W25QXX_SPI_NUM->CR2 |= 1<<0; //enable SPI rx DMA
67-
W25QXX_SPI_NUM->CR1 |= LCD_DATA_16BIT<<11; //16bit data frame
68-
W25QXX_SPI_NUM->CR1 |= 1<<10; //rx only
69-
70-
W25QXX_SPI_DMA_CHANNEL->CCR |= 1<<0; //enable dma channel
71-
W25QXX_SPI_NUM->CR1 |= 1<<6; //enable SPI
725

73-
while((W25QXX_SPI_DMA->ISR&(1<<W25QXX_SPI_DMA_IFCR_BIT)) == 0); //wait for rx complete
74-
W25QXX_SPI_DMA_CHANNEL->CCR &= (u32)(~(1<<0));
75-
W25QXX_SPI_DMA->IFCR |= (u32)(1<<W25QXX_SPI_DMA_IFCR_BIT); //clear ISR for rx complete
76-
W25Qxx_SPI_CS_Set(1);
77-
78-
//set spi from dma to normal mode
79-
// RCC->APB1RSTR |= 1<<15; //reset SPI
80-
// RCC->APB1RSTR &= ~(1<<15);
81-
SPI_Protocol_Init(W25Qxx_SPI, W25Qxx_SPEED);
82-
}
83-
84-
void lcd_frame_display(u16 sx,u16 sy,u16 w,u16 h, u32 addr)
85-
{
86-
u32 cur=0;
87-
u32 segmentSize;
88-
u32 totalSize = w*h*(2-LCD_DATA_16BIT);
89-
90-
LCD_SetWindow(sx,sy,sx+w-1,sy+h-1);
91-
LCD_WR_REG(0x2C);
92-
93-
for(cur = 0; cur < totalSize; cur += LCD_DMA_MAX_TRANS)
94-
{
95-
segmentSize = cur+LCD_DMA_MAX_TRANS<=totalSize ? LCD_DMA_MAX_TRANS : totalSize-cur;
96-
lcd_frame_segment_display(segmentSize, addr+cur*(LCD_DATA_16BIT + 1));
97-
}
98-
}
6+
void lcd_frame_display(u16 sx,u16 sy,u16 w,u16 h, u32 addr);
997

1008
#else
1019

TFT/src/User/API/boot.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,7 @@ bool bmpDecode(char *bmp,u32 addr)
5757
f_read(&bmpFile, magic, 2 ,&mybr);
5858
if (memcmp(magic, "BM", 2))
5959
return false;
60-
//****************��ȡͷ��Ϣ****************//
60+
6161
f_lseek(&bmpFile, 10);
6262
f_read(&bmpFile, &offset, sizeof(int),&mybr);
6363

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

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

0 commit comments

Comments
 (0)