IVS/MCAL 제어프로그래밍

ADC, DIO, FLS, FEE, SPI

코곰_ 2025. 2. 11. 19:59

ADC; Analog-to-Digital Converter

  • ADC 개수: 2개의 ADC 모듈
  • 채널 수: 24개의 아날로그 입력 채널
  • 해상도: 12비트 SAR(Successive Approximation Register) ADC를 사용하여 최대 4096단계로 아날로그 신호를 디지털화합니다.
  • 입력 전압 범위: 0V ~ 5.5V.
  • 샘플링 속도: 고속 샘플링이 가능하며, 실시간 데이터 처리가 필요한 애플리케이션에 적합.
    기능
  • 다중 입력 채널:각 ADC 모듈은 여러 입력 채널을 지원하며, 여러 센서의 데이터를 동시에 처리
  • 스캔 모드:여러 채널을 순차적으로 샘플링하는 스캔 기능을 제공
  • 결과 저장:변환된 디지털 값은 결과 레지스터에 저장
  • 트리거 제어: 소프트웨어 또는 하드웨어 트리거를 통해 변환 작업을 시작할 수 있다
  • 오프셋 및 게인 보정: ADC의 정확도를 높이기 위해 오프셋 및 게인 보정을 지원

DIO

mcu의 전원 관리에 대한 이해
regulator의 전원소스를 하나만 구성하지 않고, inhibit, ign
eeprom 을 바로 수정하지 않는 이유는 eeprom의 수명 때문(garbage collection)

  • I/O 핀 수: TC234LP는 최대 120개의 디지털 I/O 핀을 제공
  • 전압 레벨: 3.3V CMOS 로직 레벨을 지원하며, 일부 핀은 5V 입력 신호를 허용
  • 각 핀은 입력 또는 출력으로 설정할 수 있으며, 특정 기능(예: PWM, UART 등)에 할당 가능
    기능
  • 디지털 입력(Digital Input)
    • 외부 신호(예: 버튼, 센서)를 읽어 MCU 내부에서 처리
    • 특정 조건에서 인터럽트를 발생시킬 수 있습니다.
  • 디지털 출력(Digital Output):외부 장치(예: LED, 릴레이)를 제어하기 위해 디지털 신호를 출력
  • 멀티플렉싱(Multiplexing): 하나의 핀에서 여러 기능(UART, SPI, PWM 등)을 지원하며 소프트웨어로 선택 가능
  • 풀업/풀다운 저항: 내장된 풀업/풀다운 저항을 통해 안정적인 신호 처리를 지원합니다.
  • 고속 GPIO:빠른 응답이 필요한 애플리케이션에서 고속 GPIO 동작을 지원

비휘발성 메모리(NVM; Non-Volatile Memory)

; 전원이 꺼져도 데이터를 유지할 수 있는 저장 기술.
비휘발성 메모리에는 크게 EEPROM과 Flash memory가 존재한다. 둘은 전원이 꺼져도 데이터를 유지할 수 있다는 점에서 공통점을 가진다. 이 둘의 차이를 알아보자.

  1. EEPROM(Electrically Erasable Programmable Read-Only Memory)
  • 바이트 단위 작업: 데이터를 'Byte' 단위로 읽고, 쓰고, 지운다.
  • 속도: 상대적으로 느리다.
  • 용량: 작다(KB~MB)
  • 일반적으로 10만 ~ 100만 번의 쓰기/ 삭제 사이클 지원
  • 특정 데이터만 수정이 가능
  1. Flash Memory
  • 블록 단위 작업: Byte 단위로 read할 수 있지만, write는 'Block(=page)'단위로 가능하다.(변형된 EEPROM)
  • 나머지 값은 FEE로 채운다.

  • 속도: EEPROM 보다 빠르다.
  • 용량: EEPROM 보다 크다(MB~GB)
  • 1만~10만 번의 쓰기/ 삭제 사이클
  • page 단위 = 8byte. flash는 page 단위로 저장

EEPROM vs Flash Memory 비교
| 특징 | EEPROM | Flash Memory |
|--------------------------|---------------------------------------------|-------------------------------------------|
| 작업 단위 | 바이트 단위로 읽고 쓰기 가능 | 블록 단위로 읽고 쓰기 가능 |
| 속도 | 느림 | 빠름 |
| 용량 | 작음 (몇 KBMB) | 큼 (몇 MBGB) |
| 내구성 | 높은 쓰기/삭제 내구성 (최대 100만 사이클) | 상대적으로 낮은 내구성 (1만~10만 사이클) |
| 비용 | 상대적으로 비쌈 | 저렴 |
| 주요 용도 | 설정값, 소량 데이터 저장 | 펌웨어 및 대용량 데이터 저장 |
-> Flash memory는 EEPROM에 비해 구조가 간단하여 대용량의 데이터를 write 시에는 훨씬 빠르다.

FLS; Flash Driver

; Flash Driver 모듈(Flash 메모리 제어)
; 데이터를 쓰고, 읽고, 지운다.

  • AUTOSAR MCAL 표준을 기반으로 플래시 메모리의 읽기, 쓰기, 삭제와 같은 작업 수행
  • DFlash(데이터 플래시)와 PFLash(프로그램 플래시)를 관리
  • ECU SW의 비휘발성 데이터 저장소를 효율적으로 제어

Fls_17_Pmu

Flash Memory
AURIX™ TC234LP MCU는 내부에 PFlash(Program Flash)와 DFlash(Data Flash)를 포함

  1. PFlash(Program Flash): 프로그램 코드 저장(최대 2MB)
  2. DFlash(Data Flash): 데이터 저장 및 EEPROM 에뮬레이션 (최대 128KB)
  • 플래시 메모리는 sector단위로 나뉘며, 각 섹터는 독립적으로 관리.
  • 플래시메모리는 한번 쓰고 지우고 다시 써야하는데, 지우는 타이밍에 꺼지면 데이터가 날라갈 수 있다. 따라서 두 sector로 나누어 사용한다.
  • 언제 그러지? 배터리 방전 시나리오를 만나면, 모든 신호가 켜졌다 꺼졌다를 반복하기 때문에, ignition cycle을 계속 적기 때문에 이때 데이터가 날아갈 수 있음
  • 그렇다면 저장할 수 있는 데이터는 128/2 = 64kB인가? 그렇지 X. 더 작다

TC234LP는 별도의 하드웨어 EEPROM이 없지만, DFlash를 이용해 EEPROM 기능을 에뮬레이션할 수 있다.

    • DFlash를 소프트웨어적으로 관리하여 바이트 단위 삭제 및 쓰기를 구현.
    • 플래시 드라이버(Fls_17_PMU)를 사용하여 DFlash를 제어.

FEE; Flash EEPROM Emulation

; TC234LP MCU에서 플래시 메모리를 활용하여 EEPROM 기능을 에뮬레이션하는 AUTOSAR 기반 소프트웨어 모듈
(MCU에 하드웨어 EEPROM이 없을 경우 플래시 메모리를 사용해 이를 SW로 구현)
;device의 구체적인 주소 지정 기법을 추상화할 뿐 아니라, 상위 layer에게 가상의 주소 지정 기법을 제공

ex. Flash memory에 데이터를 읽고 쓰기 위한 memory address와 관련된 작업.
Flash Memory가 64byte일 때, 저장 공간은 32byte씩 2개의 block으로 나뉘어진다.
i. 데이터를 쓸 때, 한 개의 block에 쓴다.
ii. 이 block에 더이상 데이터를 쓸 공간이 없으면 다른 block에 쓴다.
FEE는 현재 flash memory의 offset을 구하고, block에 데이터를 쓸 수 있는 공간이 얼마나 남았는지를 확인해준다.
,

수명

  • Program Flash Retention Time, sector = 20, max = 1000 erase/program cycles
  • Data Flash Endurance per EEPROMx sector = 125000

@
Fee, FLS 모듈들은 모두 main function을 가지며 'polling 방식'으로 자신의 상태를 체크한다.
주기적으로 자기의 상태를 계속해서 체크하며 명령을 시킬 준비가 되면 모듈 내에 있는 API가 동작하는 구조이다.

@
NvM이 요청한 데이터를 FEE가 처리하고, FEE는 Fls 드라이버를 통해 실제 플래시 메모리에 접근한다.

Fee Data Page Format

@ EA_readNvmData, EA_writeNvmData에서 왜 8byte 단위인 이유?


SPI(Serial Peripheral Interface)

; 마이크로컨트롤러(MCU)와 주변 장치 간 데이터를 주고받기 위한 동기식 직렬 통신 프로토콜

특징

  1. Full Duplex 통신
    • 데이터를 송신(MOSI)과 수신(MISO)을 동시에 처리할 수 있는 '전이중(Full Duplex)' 통신 방식 지원
    • 데이터 전송 속도를 높이고 효율적인 데이터 교환이 가능
  2. 1:N 통신 구조
    • 하나의 마스터(master)가 여러 슬레이브(slave) 장치와 통신할 수 있다.
    • 슬레이브 선택은 CS(Chip Select) 신호를 통해 이루어지며, 슬레이브가 많아질수록 CS 핀이 추가된다.
  3. 동기식 통신
    • 클럭 신호(SCK)를 기준으로 데이터를 전송하며, 동기화된 방식으로 작동
    • 클럭 극성(CPOL)과 위상(CPHA)를 설정하여 데이터 전송 타이밍을 조정할 수 있다.
  4. 빠른 데이터 전송 속도
  5. 하드웨어 구성; 4가지 신호 라인(핀)
    a. SCK(Serial Clock): 마스터가 생성하는 클럭신호로, 데이터 전송을 동기화
    b. MOSI(Master Out Slave In) = SDI: 마스터 -> 슬레이브로 데이터를 보내는 신호 라인
    c. MISO(Master In Slave Out) = SDO: 슬레이브 -> 마스터로 데이터를 보내는 신호 라인
    d. CS(Chip Select): 특정 슬레이브를 선택하기 위한 신호로, 활성화 시 해당 슬레이브와 통신이 가능

칩 여러개와 통신을 할 경우, a,b,c의 핀은 공유. 동기화된 clock을 모든 핀이 받아들일 수 있도록 해야함
p.76 fig2 SPI slave timing diagram -> CS가 low일 때 통신이 시작됨을 알 수 있다.

clock이 어떤 상태일 때 통신하는가?
high, low, rising edge, falling edge의 네 가지 경우.
6축 센서는 (SpiDataShiftEdge) trailing = falling edge일 때 데이터를 보낸다.

@
command- address value인데 구조체에선 address-command-value 순인 건 왜그럴까?
TC234LP는 little endian 방식이기 때문.
센서는 big endian 방식으로 전송받아야 해서, 비트 필드 구조체 안에 선언할 때, 순서를 맞추어 선언.

@
BDU
2바이트를 읽는 동안 값이 섞이지 않게 하기 위해, 81p BDU = 1; MSB/ LSB가 read되기 전까지,register에 update하지 않는다

ODR; 데이터 생성 주기 설정

temperature;
온도가 지나치게 높아지는 걸 방지하려면? 상황에 따라 전류를 제한하거나 끈다