관리 메뉴

개발 블로그

[임베디드설계및실험]릴레이 모듈 이용한 STM32 동작_4주차 본문

전공 공부/임베디드시스템설계및실험

[임베디드설계및실험]릴레이 모듈 이용한 STM32 동작_4주차

토산인 2022. 9. 26. 14:43

실험 목적

 

1. 스캐터 파일의 이해 및 플래시 프로그래밍

2. 릴레이 모듈의 이해 및 임베디드 펌웨어를 통한 동작

3. 폴링 방식의 이해

 

 

 

실험 과정

 

1. 사전 지식

 

  • scatter loading (분산 적재) 이란?

꺼내기의 한 형식으로 판독 모듈의 제어 섹션을 주기억 장치 가운데 각각의 장소에 적재(load)하는 것

-> 원하는 위치에서 읽기 위해 file을 분리하여 필요한 여러 곳에 적재(load)하는 것.

 

  • scatter file 이란?

실행시킬 바이너리 이미지가 메모리에 로드될 때, 바이너리 이미지의 어떤 영역이 어느 주소에 어느 크기만큼 배치되야 할 지 작성한 파일

 -> 필요한 이유는? 

1) 바이너리의 여러 부븐을 각각 별개의 메모리 영역에 로드해야 될 때

2) 자주 사용되거나 빠른 실행을 요구하는 코드영역을 접근 시간이 빠른 메모리에 우선 배치할 수 있음.

 

  • relay module (릴레이 모듈) 이란?

릴레이를 제어하는 모듈로, 스위치 역할.

전자석 원리로 전류가 흐르면(신호) 자기장을 형성해 자기력으로 자석을 끌어 당겼다가 전류가 흐르지 않으면 자석을 놓는 원리.

릴레이 모듈

NC(Nomally Close): 평상시 close, 전류 흐르면(high) open (전원이 on일때 off)

NO(Nomally Open): 평상시 open, 전류 흐르면 close 

COM(Common): 제어신호에 따라 NO 또는 NC에 접촉

 

 

2. 프로젝트 생성 및 스캐터 파일 생성

 

먼저 프로젝트 생성 후, 

myicf.icf 스캐터 파일에 원하는 만큼의 메모리 영역을 할당한다. 

[그림 2] memory map

 

[그림 3] myicf.icf 스캐터 파일

[그림 2]에서 RAM(SRAM)과 ROM(Flash)의 시작 주소를 확인할 수 있다.

나는 RAM에 0x80000, ROM에 0x8000 만큼의 메모리를 할당하기 위해 

RAM 시작주소 0x2000 0000에 크기 0x0008 0000을 더하고 

ROM 시작주소 0x0800 0000에 크기 0x0000 8000을 더한다. 

 

그리고 해당 파일을 업로드 한다. 

[그림 4] 스캐터 파일 업로드

 

3. 릴레이 모듈 이용한 회로 구성

[그림 5] 릴레이 모듈
[그림 6] 릴레이 모듈과 전구 연결 회로

나는 릴레이 모듈 사용을 위한 GPIO를 PC9로 설정했다.

[그림 6]을 참고해 릴레이 모듈 제어 신호(IN)와 보드의 PC9(릴레이 모듈 GPIO)를 연결하고

릴레이 모듈의 GNDVCC를 각각 보드의 GNDVCC와 연결한다. 그리고 COM과 전지를 모터에 연결하고, 전지를 릴레이 모듈의 NO와 연결한다.