728x90
반응형
- 12강 목표 : 오실로스코프와 멀티미터기의 기본적 사용방법 공부


1) 멀티미터 사용방법
- 위의 멀티미터는 AC/DC 전압만 측정 가능(전류 측정 불가능)
1-1) AC 측정


- 왼쪽 사진처럼 아래의 스위치를 ACV로 돌려 AC 전압 측정 설정
- 오른쪽 사진처럼 측정하고자 하는 곳 양쪽에 프로브를 물려 전압 측정
- 고압의 AC전압 측정시 감전될 수도 있으므로 조심해서 측정할 것. 두 선을 붙이면 쇼트가 나므로 위험 (위의 경우는 220V)
- 전압이 흐르는지 여부를 확인할 수 있음
- 합선나면 큰 열이 발생함
1-2) DC 측정
- DCV 측정은 임베디드 개발을 하며 매우 자주 함. ex) GPIO는 5V -> 실제로 5V가 뜨는지를 확인


- 5V의 DCV를 출력한다고 표시되어있는 어답타의 실제 출력 전압 측정
- 빨간색 프로브를 +에, 검은색을 -에 연결
- 위의 경우 극성을 반대로 연결하여 측정값이 음수로 나옴. DCV의 경우 전원을 반대로 인가하면 기계가 망가지므로 +,- 미리 확인 필요

- 전류는 직류의 경우 전선의 중간을 끊고 위 사진처럼 양쪽을 연결하여 측정
1-3) 전지 측정

- 3V의 전지 측정
1-4) Short test

- 멀티미터의 레버를 맨 아래쪽으로 돌려 Short test 모드로 설정
- 두 probe가 서로 short될 경우 -삐 소리가 남

- Probe 하나를 보드 상의 PA3 핀에 연결
- 나머지 Probe 하나를 보드 중앙 MCU 상의 핀들에 돌아가며 연결
- -삐 소리가 나는 핀이 PA3
1-5) 옴 테스터기 활용 저항 측정


- 보드 상의 저항 (R로 써져있는 부분)의 양 끝에 프로브를 연결하여 저항(10k) 측정
- 온도에 따라 저항 값이 변하는 온도 센서 등의 테스트에 사용
- 단 옴 테스터는 정교하지 않아 전압이 잘 흐르는 지 정도만 확인
1-6) GPIO 5V 측정

1-6-1) Pin 설정

#define GPIO_TEST_Pin GPIO_PIN_3
#define GPIO_TEST_GPIO_Port GPIOA
while (1)
{
HAL_GPIO_WritePin(GPIO_TEST_GPIO_Port, GPIO_TEST_Pin, 1);
HAL_Delay(100);
HAL_GPIO_WritePin(GPIO_TEST_GPIO_Port, GPIO_TEST_Pin, 0);
HAL_Delay(100);
...
...
}
- PA3 핀을 100ms 간격으로 키고 끄는 코드
1-6-2) 테스터기 연결

- 점퍼선을 통해 보드 상의 3V와 GND를 연결 후 VDC로 측정
1-6-3) Debug 실행 후 전압 측정
- GND는 유지하고 PA3 핀에 점퍼선을 연결 후 Debug 실행
- HAL_GPIO_WritePin(GPIO_TEST_GPIO_Port, GPIO_TEST_Pin, 1); 에서는 전압이 5V
- HAL_GPIO_WritePin(GPIO_TEST_GPIO_Port, GPIO_TEST_Pin, 0); 에서는 전압이 0V
- HAL_GPIO_WritePin 사이의 delay를 1초로 변경한 후 테스터기로 확인
위 과정이 GPIO를 통한 전압 제어를 멀티미터기로 확인하는 방법
1- 7) 정리
- 전압 측정 (+, - 극 구분)
- Short test (-삐 소리) 활용 PA3 연결 지점 확인
- 보드 바깥쪽의 핀과 칩 상의 핀을 연결
2) 오실로스코프 사용방법

- 위 프로브의 검은 색 부분이 GND 연결부, 회색 부분이 측정부
2-1) 오실로스코프 활용 5V 측정
- 오실로스코프 활용 위의 1초마다 5V 출력 확인
- 검은 색 부분을 GND에, 회색 부분을 PA3 핀에 연결
2-1-1) 오실로스코프 설정

- 노란색 선(X Cursor)를 아래로 옮김

- 우측 상단의 'CTRL' 클릭


- 'V-' 클릭 : 전압의 폭이 작아짐
- 한 칸의 단위가 달라짐
- 좌측 상단의 값을 통해 한 칸 당의 전압 값 확인 가능
위 과정이 오실로스코프를 통해 GPIO의 정상 제어 여부를 확인하는 방법
- 단 오실로스코프는 위 경우보단 클럭이나 통신 상태를 보는데 많이 사용
while (1)
{
HAL_GPIO_WritePin(GPIO_TEST_GPIO_Port, GPIO_TEST_Pin, 1);
HAL_Delay(1);
HAL_GPIO_WritePin(GPIO_TEST_GPIO_Port, GPIO_TEST_Pin, 0);
HAL_Delay(1);
...
...
}
- 기존의 HAL_Delay(100)을 HAL_Delay(1)로 변경 후 오실로스코프 확인

- 보통 Clock 신호가 위처럼 생김


- 위 상태에서 좌측의 CTRL -> AutoSet을 눌러 파형의 크기를 키울 수 있음
- 한 칸이 2V : 위 신호는 약 3.7V 정도
- 가로 선은 시간, 세로 선은 전압
- 위의 Clock 하나 당 Packet이 나감
- 새로운 Probe를 연결 해 통신 Packet 확인 가능
3) SPI 통신 만들기
3-1) SPI 핀, Mode 설정

- STM32F103RC Datasheet에서 "SPI" 검색

- STM32CubeMX에서 SPI 핀 지정
- PA5 : SPI1_SCK
- PA6 : SPI1_MISO
- PA7 : SPI1_MOSI

- Connectivity -> SPI1 진입
- Mode : Full-Duplex Master 설정
- 코드 생성
... ...
/* Initialize all configured peripherals */
MX_GPIO_Init();
MX_SPI1_Init(); // 새로 추가
/* USER CODE BEGIN 2 */
- 코드 내에 SPI1 관련 코드가 생성됨
3-2) 코드 작성
char data[10] = {'a', 'b'};
while (1)
{
HAL_SPI_Transmit(&hspi1, pData, Size, Timeout);
HAL_Delay(100);
...
...
}
- 100ms 단위로 a, b를 상대에게 보내는 코드 작성 후 실행
3-3) 오실로스코프 활용 SPI Clock 확인
- PA5 (SPI1_SCK) 핀에 Probe 연결
- 우측 상단에서 Trigger 설정
- Trigger : 일정 이상의 전압이 올라가면 그 순간을 기준으로 해 어느 정도 범위의 측정된 전압 값을 잡게 설정
(뒤 강의에서 자세히 설명) - Rising 설정 : 전압이 올라오는 순간을 포착
- Trigger : 일정 이상의 전압이 올라가면 그 순간을 기준으로 해 어느 정도 범위의 측정된 전압 값을 잡게 설정
- 설정 완료 후 Run 클릭 : 전압이 한번이라도 올라오면 그를 포착
- 시간 간격 축소

- HAL_SPI_Transmit(&hspi1, pData, Size, Timeout); 코드 실행 시 PA5 핀에서 Clock이 나감
- 총 8개의 Clock 파형 생성
- SPI 통신은 한번에 8bit를 보냄을 알 수 있음
- 새로 축 3칸 : Clock의 파형은 3V
위 과정이 오실로스코프를 통해 Clock 파형이 생성됨을 확인하는 것
- Debugging 시 위처럼 Clock 파형 생성 여부를 확인할 일이 많음
3-4) 오실로스코프 활용 SPI Data 확인
- PA6 : SPI1_MISO (Master In, Slave Out)
- PA7 : SPI1_MOSI (Master Out, Slave Out)
- Master Chip에서 Data가 나가는 핀
- PA7 핀에 Probe 연결
- 우측 CTRL 진입 후 전압 간격을 50V로 설정 후 오실로스코프의 Run 클릭

위의 Clock, Data 신호 확인을 위해 오실로스코프를 사용
3-5) PC 연결 통해 파형 분석

- 좌측 상단 "Menu" 클릭 후 "USB Connection" 클릭

- PC에서 USB 드라이브 진입 후 파형 확인
- 어떤 식으로 Data가 오는지 확인 가능
- 8개의 Clock 파형 (노란색)
- 0110 0001 data 전달 (파란색)
- Clock 신호가 HIGH인 순간의 신호가 SPI Data
3-5-1) Data 분석

- ASCII Table 확인
- a : 0x61 = 0110 0001
- Ethernet 등의 통신도 위처럼 Data를 전달함
위처럼 전압을 통한 Data 전달을 확인하기 위해 오실로스코프를 사용
위 내용의 모든 출처는 유튜버 '[오제이 튜브]OJ Tube' 님께 있습니다.
https://www.youtube.com/watch?v=BrMncz-bHpg&list=PLz--ENLG_8TNjRg1OtyFBvUyV4PHaKwmu&index=15
728x90
반응형
'Study_Embedded > [오제이 튜브의 임베디드 실전 강의]' 카테고리의 다른 글
| [오제이 튜브의 임베디드 실전 강의] 11강 데이터 시트 읽어주는 남자 (0) | 2022.04.03 |
|---|---|
| [오제이 튜브의 임베디드 실전 강의] 10강 데이터 시트 보는 꼼수 (0) | 2022.03.26 |
| [오제이 튜브의 임베디드 실전 강의] 9강 회로도 딱 필요한 만큼만 배우자! (0) | 2022.03.03 |
| [오제이 튜브의 임베디드 실전 강의] 8강 지금까지 배운 것을 큰 그림에 저장하기 (0) | 2022.02.14 |
| [오제이 튜브의 임베디드 실전 강의] 7강 GPIO제어 고아 먹기 (0) | 2022.02.11 |