본문 바로가기
프로젝트 기록/23SEMA_Control_STM32

[STM32] (최종)SDcard 데이터 로깅 동작 설명 및 이용법

by 소요이 2023. 5. 25.
728x90

SD카드 기록 설명서

주의사항: "PA8 - PD2 핀 반드시 연결"

: 연결외부 인터럽트 트리거 핀을 사용하는 TIM3을 기반으로 하기 때문에, 두 핀을 연결해야 정상동작 가능


0.  출력 형식

00:17:56 / speed: 0.00km/h / rpm: 0.00 / Current: 34.12 [A] / Voltage: 12.34 [V]

SD카드 출력 형식


+) 출력 형식에 사용하는 변수 (차례대로)

 - uint32_t SD_Time : 0으로 초기화, 1초에 1번씩 TIM2 인터럽트를 통해 증가
 - double speed: 0.0으로 초기화, 자석센서를 통해 3초에 1번씩 갱신
 - double rpm: 0.0으로 초기화, 자석센서를 통해 3초에 1번씩 갱신
 - float nValueCurrent = 0; 연속적 갱신 - while문에서 지속적으로 ADC_Get(), VolCur_Conversion()함수를 통해 계산함 
 - float nValueVolatage = 0; 연속적 갱신, Current와 동일

 


1. 기록 사용법

0) 기록되는 파일명:

생성된 파일

보드를 reset 동작 할때마다, 파일 이름이 순차적으로 생김.

-> 보드나 SD카드를 차량에서 분리하지 않고, 여러 번 기록 후 한번에 확인 가능

-> SD카드를 PC에 연결해서 파일을 모두 삭제하면, 다시 data_0001부터 생성됨

 


1) 기록이 시작되는 방법:

 reset됨과 동시에 자동으로 시작

 


2) 몇 초동안 기록할지 설정: (미리 기록 타임 설정, B1로 조기 종료 가능)
   1. uint32_t logInterval 변수 값 설정:
   ex)uint32_t logInterval = 300; 으로 되어있다면, sd카드 txt파일에 300초 동안의 time, speed, rpm 값을 기록함.

logInterval 변수 설정


   2. blue 버튼 (B1버튼) 누르기:

logInterval 만큼의 초가 지나기 전에, PC13 핀과 연결되어 있는 B1버튼이 눌린다면 기록을 그만하고 그때까지 기록된 것들만 저장됨 

 


3) 기록 종료:
 위 두 가지 방식 모두, 저장 된 후에는 printf("DATA IS SAVED\n"); 가 실행 - teraterm으로 확인할 시 문구가 출력됨
  +) B1버튼이 눌러 조기종료가 된다면, printf("B1 is pushed\n"); 의 코드가 함께 실행되어 출력됨

좌: 시간이 다 되어 종료된 case/ 우: B1버튼을 눌러 조기종료된 case




 

3. 추가정보
- logInterval초가 지나 데이터 기록이 끝난 뒤에도 SD_Time변수는 1초에 1씩 증가하고 있음

 

 

 


게시글 ver.보고서 (내용 동일)

SDcard logging_완료.pdf
0.23MB
SDcard logging.docx
0.31MB