STM32F1

STM32F1, STMCubeMX, SPI, LCD22

CoyoteUgly 2018. 8. 3. 18:23

STM32F1, STMCubeMX, SPI, LCD22


LCD22 모듈은 SPI를 통해 Touch, LCD Display를 지원합니다.



0. 참고 사이트


1. 모듈



2. HW 연결

 3.3V 전원을 사용하며 1 ,2번 라인 커넥터의 VCC, GND를 모두 연결해야 합니다. 


3. HW 연결

1번 라인에 LCD, Touch 에 대한 SPI, GPIO Port를 모두 연결하였습니다.

4. pin 자료

개인적으로는 아래와 같이 적용하여 테스트하였습니다.


GND

 2

1

 GND

 

 3V3

 4

 3

 3V3

 

 

6

5

 LCD_PWM

 

 

8

7

 

 

 

10

 9

 

 

 

 12

 11

 

 

 

 14

 13

 

 

 

 16

 15

 

 

 

 18

 17

 

 

 

 20

19

 TOUCH_nIRQ

 PB11

 

 22

21

 

 

 

 24

23

 TOUCH_nCS

 PB12

 

 26

 25

 SPI2_SCK

 PB13

 

 28

27

 SPI2_MOSI

 PB15

 

 30

29

 SPI2_MISO

 PB14

 

 32

 31

 LCD_nRESET

 PA4

 

 34

33

 SPI1_MOSI

 PA7

 

 36

35

 SPI1_SCK

 PA5

 

 38

 37

 LCD_nCS

 PC4

 

40

 39

 LCD_nRS

 PC5




5. LCD Display, SPI Line

LCD Display 쪽은 Write만 하기 때문에 Transmit Only Master로 설정합니다.


6. Touch IC, SPI Line

Touch IC는 Read, Write를 하기 때문에 Full-Duplex Master로 설정합니다.


7. RCC > HSE > Crystal/Ceramic...

72MHz를 사용하기 위해서


8. LCD Display, GPIO Port

LCD_nRESET
LCD_nCS
LCD_nRS
3개의 Pin을 Output 모드로 설정합니다.


9. Touch, GPIO Port

TOUCH_nIRQ 는 Input 모드로 설정
TOUCH_nCS 는 Output 모드로 설정


10. GPIO Port


11. Clock Configuration > 72MHz


12. Configuration > SPI1

위에서 72MHz로 변경하면 SPI1 Line 설정에서 문제가 있다고 하네요


13. SPI1 > Parameter Settings > Prescaler

SPI1 Line의 BaudRate 가 초과되어서 문제가 있기 때문에 Prescaler를 변경해야 하네요


14. SPI1 > Prescaler > 4

SPI1 Line의 Prescaler를 4로 변경합니다.


15. 소스


16. 결과 확인

8x16 dot font 기준으로
총 20 line을 구성할 수 있으며,
1 line당 총 30개의 문자를 표현할 수 있습니다.


17. 결과 확인

Touch Calibration 작업으로 3개의 점을 찍어야 합니다.


18. 결과 확인

Touch 설정의 문제인지, 아니면 다른 문제인지 모르겠지만
Touch 값이 오동작하는 구간이 부분적으로 있네요


'STM32F1' 카테고리의 다른 글

STM32F1, STMCubeMX, I2C, PCF8563  (0) 2018.08.03
STM32F1, STMCubeMX, ADC, Internal Temperature Sensor  (0) 2018.08.03
STM32F1, STMCubeMX, I2C, LCD1602  (0) 2018.08.03
STM32F1, STMCubeMX, 1us delay  (0) 2018.08.03
STM32F1, STMCubeMX, printf  (0) 2018.08.03