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 |