반응형
사용 환경

* Program: UniFlash, FlashPro430

* Download Tool: MSP-FET430UIF, FlashPro430 Flash Programmer

* MCU: MSP430

 

UniFlash 설치

https://www.ti.com/tool/UNIFLASH#downloads

 

UNIFLASH Software programming tool | TI.com

Supported devices: CC13xx, CC25xx, CC26xx, CC3x20, CC3x30, CC3x35, Tiva, C2000, MSP43x, Hercules, PGA9xx, IWR12xx, IWR14xx, IWR16xx, IWR18xx , IWR68xx, AWR12xx, AWR14xx, AWR16xx, AWR18xx.  Command line only: AM335x, AM437x, AM571x, AM572x, AM574x, AM65XX

www.ti.com

 

프로그램 업로드 방법

이전 게시물을 참고하여 hex 파일을 준비한 상태에서 아래와 같이 다운받는다.

 

1. UniFlash 프로그램 실행을 실행한다.

 

2. Device 설정 및 Download Tool 연결 후 "Start" 클릭한다.

 

3. Browse를 통해 Hex파일을 열어준 후, Load Image를 클릭한다.

 

 

프로그램 업로드 방법 (더욱 간단한 방법)

Bat 파일을 생성하여 펌웨어를 업로드하면, 더욱 간단하게 사용할 수 있다.

 

1. 'Stanalone Command Line' 탭에서 파일명을 입력하고 Generate Package를 클릭하면 압축파일을 다운받을 수 있다.

2. 압축을 풀면 Bat 파일 두 개와 기타 설정 파일이 생성된다. 그 중 dslite.bat를 클릭하면 설치가 완료된다.

 

 

3. 아래와 같이 나타난 후 cmd창이 종료되면 펌웨어를 성공적으로 다운 받은 것이다

* 참고) 혹여나 아래와 같이 나타나고 꺼지는 이유는 다른 프로그램에 Device가 연결되었기 때문이다.

UniFlash 혹은 CCS가 켜져있는지 확인하자.

 

펌웨어를 정상적으로 다운받았는데 동작이 되지 않는 경우..

 

UniFlash 프로그램을 사용하며 Setting 메뉴에서 MCU의 메모리를 ERASE 하는 기능이 있다.

해당 기능을 사용 시, MCU의 DCO(디지털 제어 오실레이터 - Digitally Controlled Oscillator)의 메모리 또한 삭제된다.

이 경우, 펌웨어를 다운받는다고 해서 DCO를 복원하거나 쓸 수 있는 것이 아니다.

메모리 영역이 코딩 부분과 DCO이 구분되어있기 때문이다.

 

따라서 FlashPro430 툴과 프로그램을 사용하여 DCO을 설정해주도록 한다.

 

1. FlashPro430 프로그램을 실행한다.

 

2. [Setup] - [DCO Calibration]을 클릭하여 원하는 주파수를 입력한다.

 

3. 우측하단에 [DCO Calibration]을 클릭하여 주파수가 설정되도록 한다.

 

4. [Tools] -  [DCO Frequency Test] 을 클릭하여 설정한 주파수가 정상적으로 출력되는지 확인한다.

5. 끝,, 펌웨어가 정상적으로 동작하는지 확인하자.

반응형
반응형
사용 환경

* IDE: Code Composer Studio 11.2.0

* MCU: MSP430

 

Hex 파일 만드는 방법

1. CCS 프로그램에서 프로젝트를 연 후, Alt+Enter 키를 누르거나 프로젝트 속성을 실행한다.

 

2. [Build] - [MSP430 Hex Utillity] 탭으로 이동하여, Enable 'MSP430 Hex Utillity' 체크박스를 클릭한다.


3. [General Options] 탭에서 아래와 같이 memory와 rom의 width 값을 8로 설정한다. (기본 설정)


4. [Output Format Options] 탭에서 Format을 Intel hex로 설정한다.

-. 기본 설정시 hex 파일의 첫문자가 "%"로 시작되며, Intel hex로 설정시 ":"로 시작된다.

 


5. 이 후, 빌드나 다운로드를 받으면 [프로젝트 폴더] - [Debug] 폴더에 hex 파일이 생성된다.

 

반응형
반응형

Pin Diagram

레지스터 설정 설명

1) GPIO(x = 1,2)

: Port 1,2 I/O 설정

  • PxDIR: Input, Output 설정 / I:0, O:1
  • PxSELy(x,y = 1,2)
    : GPIO 혹은 Peripheral Funtion 설정 / PxSEL PxSEL2 0으로 설정해야 일반 I/O 사용할 있다.
    : PxSEL 1 경우, Peripheral 사용 가능, PWM 사용 해당 1 설정

  • PxREN
    : Resistor Pullup/pulldown resistor 설정 / Disable:0, Enable:1
    : Input 사용하며 PxREN을 설정하여 풀업, 풀다운 저항을 설정할 수 있다. (Common High or Low)

 

  • PxIN: Input
  • PxOUT: Ouput
  • PM5CTL0 &= ~LOCKLPM5;
    : MSP430F Series FRAM 모델로서 전원이 인가된 PM5CTL0 LOCKLPM5 bit 0으로 만들어 I/O 설정을 있도록 한다.

EX)

P1DIR |= 0b00000010  ->  Port1 Bit2 Output으로 설정

P1OUT = 0xFF  ->  Port1 모든 Bit ON

P2OUT |= 0x04  -> Port2 Bit3 ON

P2OUT &= ~0x10  ->  Port2 Bit4 OFF

 

2) Timer (x,y = 0,1)
: MSP430G2333 경우, Timer A,B A 있음(참고. Pin Diagram)

  • MCLK
    :Master Clock; MCU의 메인 Core에 사용되는 클럭
  • SMCLK
    : Sub-Main Clock; 주로 고속이 필요한 Peripheral 에 클럭을 공급
  • DCO
    : 디지털 입력 값을 받아 특정 주파수의 발진 클럭을 만듦
  • DCO (The digitally controlled oscillator)
  • DCO 최대 16MHz 이며, 1, 8, 12, 16으로 설정 가능

EX)

//DCO 16Mhz
if (CALBC1_16MHZ==0xFF)       // If calibration constant erased
{
    while(1);                 // do not load, trap CPU!!
}
DCOCTL = 0;                   // Select lowest DCOx and MODx settings
BCSCTL1 = CALBC1_16MHZ;       // Set range
DCOCTL = CALDCO_16MHZ;        // Set DCO step + modulation*/

 

 

  • TAxCTL
    : Timer Control; Mode, Input Divider, Clock Source Select 가지로 나누어 설정

EX)

Timer0 A3, SMCLK / 4 , Up mode  ->  TA0CTL = TASSEL_2 + MC_1 + ID_2;

#define MC_0                   (0*0x10u)      /* Timer A mode control: 0 - Stop */
#define MC_1                   (1*0x10u)      /* Timer A mode control: 1 - Up to CCR0 */
#define MC_2                   (2*0x10u)      /* Timer A mode control: 2 - Continous up */
#define MC_3                   (3*0x10u)      /* Timer A mode control: 3 - Up/Down */
#define ID_0                   (0*0x40u)      /* Timer A input divider: 0 - /1 */
#define ID_1                   (1*0x40u)      /* Timer A input divider: 1 - /2 */
#define ID_2                   (2*0x40u)      /* Timer A input divider: 2 - /4 */
#define ID_3                   (3*0x40u)      /* Timer A input divider: 3 - /8 */
#define TASSEL_0               (0*0x100u)     /* Timer A clock source select: 0 - TACLK */
#define TASSEL_1               (1*0x100u)     /* Timer A clock source select: 1 - ACLK  */
#define TASSEL_2               (2*0x100u)     /* Timer A clock source select: 2 - SMCLK */
#define TASSEL_3               (3*0x100u)     /* Timer A clock source select: 3 - INCLK */

 

  • TAxCCRy
    : Timer x Capture/Compare y; PWM Period 설정 (16Bit)
    : UP mode일 때, TACCR0까지 Count
    : Continuous mode , 0FFFFh까지 Count

  • TAxCCTLy
    : PWM Output Mode (5,6,7 Bit) , Enable (4 Bit) 등등 설정 (16Bit)
    Output Mode = 2,3,6,7

 

 

P2.7을 I/O로 사용하도록 설정 – P2SEL

P2.7을 입력으로 설정 – P2DIR

P2.7의 인터럽트를 인에이블 – P2IE

P2.7의 인터럽트가 rising edge에서 발생하도록 설정 – P2IES

P2.7의 인터럽트 플래그를 0으로 리셋 – P2IFG : P2IFG를 세팅한 이후에 P2DIR이나 P2OUT에 쓰기를 실행하면 P2IFG에 영향을 줄 수 있으니 주의하자.

 

인터럽트 이네이블 레지스터 (PxIE)

• Bit = 0: 인터럽트 디세이블 설정

• Bit = 1: 인터럽트 이네이블 설정

 

인터럽트 에지 선택 레지스터 (PxIES)

• Bit = 0: low-to-high 설정

• Bit = 1: high-to-low 설정

 

Timer Interrupt 사용법

TA0_A0, TA0_A1, TA1_A0, TA1_A1

#pragma vector = TIMER0_A1_VECTOR
__interrupt void TIMER0_A1_ISR (void)
{

}

 

 

 

LPM: Low Power Mode

 

 

관련 링크

 

 

 

반응형
반응형

st-link/v2 장비의 jtag 커넥트와 stm32f103을 위의 그림과 같이 연결시킨다.

물론 모든 VDD와 VDDA도 연결시켜야 한다.  또한 BOOT0 핀은 pull-down 상태를 유지하도록 pull-down 저항을 이용하여 VSS에 연결시켜야 다운로드된 프로그램이 실행된다.

만약 SWD를 사용하지 않고 칩내부의 부트로더를 이용하여 실행파일을 로딩할 경우에는 BOOT0 핀을 pull-up 시켜주면 된다.

반응형

+ Recent posts