Embedded

[HCS12] TIL

_yh47 2024. 3. 12. 14:02

 

HCS specifications

 

 

  • 보드 명: HCS12
  • Freescale 사의 16bit MCU 탑재
  • ROM, RAM, EEPROM, Flash ROM 내장
  • 16bit 타이머
  • Serial, CAN 통신 가능
  • ADC(Analog to Digital Converter) 가능
  • PWM(Pulse Width Modulation), 펄스 폭 변조 가능
  • 저전력 지원
    >CMOS(Complementary Metal Oxide Semiconductor)
    >전력 소모의 가변화
    >SLEEP모드 (사용 중 대기)

 

IDE

CodeWarrior® Dev Tools for HCS12(X) MCUs | NXP Semiconductors

 

Datasheet★

https://www.nxp.com/docs/en/data-sheet/HCS12COREUG.pdf

 

 


 

Interrupt vs Polling

 

Interrupt

  • CPU와 I/O장치의 처리속도 차이
  • 수행 중이던 일을 멈추고 I/O장치의 요구사항을 수행
  • ex) 공부하다 전화 일 보고 다시 하고있던 공부로 돌아오는 것

 

Polling

  • I/O 장치의 상태를 계속 지켜보고 있는 방식
  • 인터럽트에 비해 비효율적
  • ex) 공부하며서 계속 전화 왔나 확인

 

RTI(Real Time Interrupt)란?

  • 주기적인 하드웨어 interrupt
  • 일정한 주기마다 동작 실행
    • 내부 클럭이 특정 값에 도달할 때마다 발생
    • 1초 간격을 생성하여 디지털 시계 구성
    • 정해진 시간마다 보드의 전원을 check

 

ADC의 원리

Resolution (변환 단계에 대한 비트 수)

 

 

Sampling rate (1초당 샘플링 되는 개수)

단위: SPS(Sample Per Second)

 

Sampling data에서 Sampling rate를 반으로 줄이면 시간 축 주기가 길어지고

Resolution을 반으로 줄이면 전압 주기가 길어짐

 

 

Serial Communication

  • 한 번에 1bit 데이터 전송
  • 주로 마이크로프로세서와 외부 장치 간 통신에 사용

 

동기(Synchronous) vs 비동기 통신(Asynchronous)

출처:https://www.datoybi.com/asynchronous-js/

 

동기 통신

  • 송신 장치의 클럭에 따른 동기화
  • 동기화된 클럭에 따라 데이터를 송수신
  • 비동기 통신에 비해 빠른 전송속도
  • 송수신하지 않을 때에도 동기화를 위한 제어신호를 전송

비동기 통신

  • 각 송수신 메시지에 start bit 및 stop bit 존재
  • 동기 통신에 비해 느린 전송속도
  • Idle 상태(대기 상태)에서는 프로세서의 처리가 필요 없음
  • RS232 : 가장 많이 사용되는 시리얼 통신 방식

 

PWM

  • 아날로그 신호를 디지털화하는 방법
  • 사각파형 출력
  • 평균 전압 조절
  • 적용 사례
    > DC 모터의 속도 컨트롤 - 쿨링 팬
    > LED 밝기 제어
  • Duty (Pulse width) - 신호가 High인 구간

 

 

CAN

  • 가장 많이 사용되는 In-Vehicle network
  • 자동차 분야 외에도 제어 네트워크 분야에 널리 사용
  • BUS topology

 

CAN network

  • 중앙집중식이 아닌 분산식
  • CAN frame은 주소가 없음 -> 대신 Identifier(content, priority) 정보 존재
  • Bit Stuffing and NRZ code
  • AMP and CSMA/CR (Carrier Sense Multiple Access /  Collision Resolution)
    CSMA/CR
    > Carrier Sense: CAN 구리선에 정보가 흐르는지 안흐르는지 체크
    > Multiple Access: 어떤 ECU가 정보를 보낼 때 다른 ECU의 허락을 안맡아도 되는 것
    > Collsion Resolution: 구리선이 정보교환으로 사용되고 난 후 여러 요청이 들어올 때 충돌을 해결(우선순위 배정)

 

dominant(우성) : Logical 0

recessive(열성) : Logical 1

 

CAN 노이즈 감쇄 방법

  1. Twisted Pair 사용
  2. 말단 저항 사용
  3. logical 값을 읽을 때 VH - VL값을 이용한다.
    -> VH, VL 각각 노이즐르 갖고 있을텐데 전압차를 이용하면 노이즈가 거의 상쇄
    ex) VH + Noise, VL + Voise
          VH-VL하면 Noise 상쇄

Bus status distinctionn

Bus logic status

"1" = recessive status

"0" = dominant status

 

프레임 비트가 모두 1이면 bus logic도 1이지만 한 프레임이라도 0을 나타내고 있다면 bus logic은 0

 

CAN Bit time

 

  • CAN의 한 비트가 어떻게 구성되어있는지

 

 

실습 오류

  1. HCS12보드가 오래된 제품이라 보드에 결함이 존재.
    -> 보드 교체로 해결
  2. GPIO제어할 때 내가 보드를 놓은 방향과 Datasheet방향이 반대여서 LED바 인가값을 반대로 줌
  3. printf 함수를 사용하면 Link Error 발생
    ->printf 함수 말고 sprintf사용
  4. SCI통신할 때나 CAN통신할 때 해당 선 이외에 디버거 선도 연결해야함.
  5. 소리는 나지만 STEP모터 돌아가지 않는 현상 발생
    ->수동으로 굴려주면 이후 회전이 잘됨.
    (update 24.03.21) 해당 원인은 PWM duty rate 값을 작게 주어 마찰음만 발생한 것

반응형