22
Copyright by [Trúc Đen, virus_lazy, hacker_black_hat] http://dtvt.org/ CHƢƠNG TRÌNH SOẠN THO, BIÊN DCH VÀ NP CHO MSP430 <IAR EMBEDDED WORKBENCH> 1. Giới thiệu về MSP430FG4618/F2013 Experimenter’s Board: 1.1. MSP430FG4618/F2013 Experimenter’s Board: KIT MSP-EXP430FG4618 gồm 1 Board MSP430FG4618/F2013 như hình dưới và 2 pin AAA 1.5V. Hình 1.1: MSP430FG4618/F2013 Experimenter’s Board

[TUT] IAR Embedded Workbench

  • Upload
    trungvb

  • View
    47

  • Download
    2

Embed Size (px)

Citation preview

Page 1: [TUT] IAR Embedded Workbench

Copyright by [Trúc Đen, virus_lazy, hacker_black_hat] http://dtvt.org/

CHƢƠNG TRÌNH SOẠN THẢO, BIÊN DỊCH VÀ NẠP

CHO MSP430

<IAR EMBEDDED WORKBENCH>

1. Giới thiệu về MSP430FG4618/F2013 Experimenter’s Board:

1.1. MSP430FG4618/F2013 Experimenter’s Board:

KIT MSP-EXP430FG4618 gồm 1 Board MSP430FG4618/F2013 như hình dưới

và 2 pin AAA 1.5V.

Hình 1.1: MSP430FG4618/F2013 Experimenter’s Board

Page 2: [TUT] IAR Embedded Workbench

Copyright by [Trúc Đen, virus_lazy, hacker_black_hat] http://dtvt.org/

Sơ đồ khối của Board MSP430FG4618/F2013 như sau:

Hình 1.2: Sơ đồ khối của MSP430FG4618/F2013 Experimenter’s Board

Page 3: [TUT] IAR Embedded Workbench

Copyright by [Trúc Đen, virus_lazy, hacker_black_hat] http://dtvt.org/

Ở bài thí nghiệm này chúng ta sẽ tìm hiểu 2 thành phần của chip MSP430FG4618 đó là

I/O port và LCD_A (module điều khiển LCD được tích hợp sẵn trên KIT)

Các dòng chip MSP430 là low power nên nó hoạt động ở nguồn khá thấp từ 1.8V-3.6V.

Ở các KIT của TI, thông thường dùng nguồn 3.5V (được chuyển đổi từ nguồn 5V từ cổng

USB)

1.2. Các khối chức năng chính trên boad:

1.2.1. Interfaces:

4 – mux LCD display:

Bộ hiển thị 4 – mux SoftBaugh LCD SBLCDA4 giao tiếp với driver ngoại vi LCD

của MSP430FG4618.

Mometary – On Push Buttons:

2 nút nhấn S1 và S2 được kết nối với I/O port P1 của MSP430FG4618.

Light Emitting Diodes (LEDs):

MSP430FG4618/F2013 Experimenter’s Board có tất cả 4 LEDs. Trong đó, 3

LEDs được nối với MSP430FG4618 và 1 LED nối với MSP430F2013.

3 led nối với MSP430FG4618 qua chân P2.1, P2.2 và P5.1

Page 4: [TUT] IAR Embedded Workbench

Copyright by [Trúc Đen, virus_lazy, hacker_black_hat] http://dtvt.org/

Buzzer:

Buzzer được nối với digital I/O port của MSP430FG4618, có thể ngắt kết nối bằng

jump JP1.

Capacitive Touch Pad :

Touchpad có dạng số 4 nằm trên board được kết nối đến các I/O port của

MSP430F2013, gồm có 16 segments.

JTAG Interfaces:

2 header JTAG có sẵn trên board gồm:

- 4-wire JTAG cho MSP430FG4618

- 2-wire Spi-Bi-wire cho MSP430F2013

1.2.2. Communication Peripherals:

Wireless:

Module giao tiếp wireless được kết nối với chế độ truyền USART của

MSP430FG4618 và được cấu hình bởi giao thức SPI, hỗ trợ các board CCxxxxEMK của

TI. CC2420EMK dùng chuẩn 802.15.4/Zigbee. CC1100EMK được cấu hình để làm việc

ở tần số sóng mang RF 868 MHz. CC2500EMK/CC2420EMK được cấu hình để làm việc

ở tần số sóng mang RF 2.4 GHz.

RS – 232:

MSP430FG4618 hỗ trợ giao tiếp nối tiếp với PC dùng chuẩn RS – 232 (9 – pins),

giao tiếp thông qua ngoại vi USCI, cấu hình bởi chế độ truyền UART.

I2C/SPI:

MSP430FG4618 và MSP430F2013 hỗ trợ các giao thức I2C và SPI, sử dụng các

ngoại vi USCI và USI.

Page 5: [TUT] IAR Embedded Workbench

Copyright by [Trúc Đen, virus_lazy, hacker_black_hat] http://dtvt.org/

1.2.3. Analog Signal Chain:

Hình 1.3: Analog Signal Chain

Microphone:

Microphone được kết nối với MSP430FG4618, có thể enable hoặc disable thông

qua 1 port kết nối.

Analog Filter:

Bộ lọc thông cao tích cực bậc 1 (1st-order active High-pass filter HPF) với tần số

cắt khoảng 340Hz có thể lọc bỏ các tần số cực thấp từ microphone. Bộ lọc thông thấp tích

cực bậc 2 Sallen-Key (2nd

-order Sallen-Key active Low-pass filter LPF) với tần số cắt cỡ

4kHz loại bỏ các nhiễu tần số cao ở ngõ ra analog của bộ chuyển đổi DAC.

Page 6: [TUT] IAR Embedded Workbench

Copyright by [Trúc Đen, virus_lazy, hacker_black_hat] http://dtvt.org/

Hình 1.4: Active Analog Filter Setup

Analog Output:

Sử dụng jack đơn 3.5 mm để lấy tín hiệu analog ngõ ra được kết nối với Op-Amp

OA2 tích hợp trên board. Đầu vào của Op-Amp được lấy từ đầu ra của bộ DAC12 của

MSP430FG4618.

Page 7: [TUT] IAR Embedded Workbench

Copyright by [Trúc Đen, virus_lazy, hacker_black_hat] http://dtvt.org/

2. Cách kết nối bộ KIT với mạch nạp và mạch nạp với máy tính.

-Kết nối KIT với mạch nạp như hình (kết nối mạch nạp với KIT qua cổng

JTAG1):

Page 8: [TUT] IAR Embedded Workbench

Copyright by [Trúc Đen, virus_lazy, hacker_black_hat] http://dtvt.org/

Thay đổi các Jump trên mạch:

Trên mạch nạp, led xanh (Power) báo hiệu nguồn, led đỏ (Mode) báo hiệu khi

mạch được nạp.

Page 9: [TUT] IAR Embedded Workbench

Copyright by [Trúc Đen, virus_lazy, hacker_black_hat] http://dtvt.org/

3. Trình soạn thảo và biên dịch

Download IAR Embedded Workbench 5.3 tại:

http://www-s.ti.com/sc/techzip/slac050.zip

Sau khi cài đặt thành công ta khởi chạy chương trình (đây chính là trình soạn thảo, biên

dịch, nạp và đồng thời là debugger cho KIT).

Icon trên desktop

3.1. Tạo project:

Page 10: [TUT] IAR Embedded Workbench

Copyright by [Trúc Đen, virus_lazy, hacker_black_hat] http://dtvt.org/

Nên tạo 1 thư mục mới để quản lý toàn bộ project

Page 11: [TUT] IAR Embedded Workbench

Copyright by [Trúc Đen, virus_lazy, hacker_black_hat] http://dtvt.org/

Khi tạo project thành công thì IDE sẽ hiện ra như hình:

Page 12: [TUT] IAR Embedded Workbench

Copyright by [Trúc Đen, virus_lazy, hacker_black_hat] http://dtvt.org/

IAR sẽ tự động tạo một file main.c và add vào project của ta, ta sẽ soạn thảo code trên đó.

Ta cũng có thể add thêm file (các header chẳng hạn) vào project bằng cách kích chuột

phải vào project > Add > Add Files…

Page 13: [TUT] IAR Embedded Workbench

Copyright by [Trúc Đen, virus_lazy, hacker_black_hat] http://dtvt.org/

3.2. Tùy chọn các thông số cho project:

Page 14: [TUT] IAR Embedded Workbench

Copyright by [Trúc Đen, virus_lazy, hacker_black_hat] http://dtvt.org/

Chọn loại chip đang sử dụng cho mạch là MSP430FG4618

Page 15: [TUT] IAR Embedded Workbench

Copyright by [Trúc Đen, virus_lazy, hacker_black_hat] http://dtvt.org/

Ở tab Debugger chọn Driver là FET Debugger

Các thông số ở các tab khác giữ nguyên.

Page 16: [TUT] IAR Embedded Workbench

Copyright by [Trúc Đen, virus_lazy, hacker_black_hat] http://dtvt.org/

3.3. Biên dịch và nạp

Sau khi code xong ta tiến hành code và biên dịch (và nạp) bằng cách bấm Ctrl+D hoặc

bấm vào biểu tượng tam giác màu xanh như hình:

Page 17: [TUT] IAR Embedded Workbench

Copyright by [Trúc Đen, virus_lazy, hacker_black_hat] http://dtvt.org/

Khi biên dịch và nạp thành công, ta có thể tiến hành debugger trực tiếp trên mạch bằng

các Step

Page 18: [TUT] IAR Embedded Workbench

Copyright by [Trúc Đen, virus_lazy, hacker_black_hat] http://dtvt.org/

Thông thƣờng ta bỏ qua bƣớc trên (Step) mà nạp thẳng vào mạch bằng cách chọn

Run (như hình)

(đoạn code đơn giản bật led sáng, giả sử led được nối với cổng P1.0 của chip)

Như vậy ta đã tiến hành code, biên dịch và nạp thành công cho KIT. Nếu sau khi nạp mà

ta thấy mạch vẫn chưa chạy như ý muốn thì có thể kiểm tra lại code hoặc debug từng

Step lại để test lỗi.

Page 19: [TUT] IAR Embedded Workbench

Copyright by [Trúc Đen, virus_lazy, hacker_black_hat] http://dtvt.org/

Chú ý: ở đây chọn Debug chứ ko phải Release

Page 20: [TUT] IAR Embedded Workbench

Copyright by [Trúc Đen, virus_lazy, hacker_black_hat] http://dtvt.org/

4. Cấu trúc một chƣơng trình C thông thƣờng cho MSP430

Các phần trong dấu <> có thể không có

Chú ý:

o Trong hàm main ta thƣờng thấy dòng lệnh:

WDTCTL = WDTPW + WDTHOLD;

Stop watchdog timer để nó khỏi reset chip. Nếu không có lệnh này (và không có

tùy chọn khác con WDTCTL) thì mạch sẽ không hoạt động.

o Trong C cho MSP430, thì có các hằng số đƣợc định nghĩa trƣớc (ở file

header), ta rất hay dùng các hằng số này:

BIT0 = 0000 0001

Page 21: [TUT] IAR Embedded Workbench

Copyright by [Trúc Đen, virus_lazy, hacker_black_hat] http://dtvt.org/

BIT1 = 0000 0010

BIT2 = 0000 0100

.

.

.

BIT7 = 1000 0000

o Một chân của MSP430 thƣờng có nhiều chức năng, ta muốn sử dụng chức

năng gì thì định nghĩa cho nó.

Ví dụ:

P1DIR = 0xFF; // toàn bộ port1 là Output

P1DIR = 0x00; //toàn bộ port1 là Input

Như vậy nếu muốn một số chân của port1 là Output và một số chân của port1 là

Input thì làm thế nào? Không giống một số VĐK khác, MSP430 không cho phép

ta tác động trực tiếp đến 1 chân nào riêng lẻ, chỉ có thể tác động lên port (8 chân).

Như vậy muốn tác động lên chân riêng lẻ nào thì ta dùng phép toán OR, AND và

XOR.

Ví dụ:

P1DIR |= BIT1; //chân P1.1 sẽ là chân Output, các chân khác ko bị ảnh hưởng bởi

lệnh này

P1DIR &= ~BIT1; // chân P1.1 sẽ là chân Input (nếu ta ko định nghĩa thì nó mặc

định là Input)

P2DIR |= BIT0 + BIT1 + BIT3; //chân P2.0, P2.1, P2.3 sẽ là Output

Lệnh trên cũng có thể viết lại: P2DIR |= 0x0B; // BIT0 + BIT1 + BIT3 = 11d=0Bh

P2DIR &= ~(BIT4+BIT5); //P2DIR &=~0x30; //chân P2.4, P2.5 là Input

o Xuất ra port theo từng bit riêng lẻ.

Như việc định nghĩa các chân, MSP430 cũng không cho ta tác động trực tiếp đến

từng chân nào, muốn xuất ra một bit hay nhiều bit bất kỳ ta sử dụng cách như đã

dùng với định nghĩa chân.

Page 22: [TUT] IAR Embedded Workbench

Copyright by [Trúc Đen, virus_lazy, hacker_black_hat] http://dtvt.org/

Ví dụ muốn cho P1.1=1, P1.3=1, P2.1=0

P1OUT |= BIT1+BIT3 ; //P1.1=1, P1.3=1

P2OUT &=~ BIT1 ; //P2.1=0

Hoặc có thể đảo một bit ở chân bất kỳ bằng lện XOR ^

P1OUT ^= BIT4 ; //chân P1.4 đảo trạng thái

o Kiểm tra trạng thái một chân.

Ngoài ngắt ra ta có thể kiểm tra trạng thái một chân nào đó đang ở mức thấp (0V)

hay mức cao (1.8V đến 3.6V).

Ví dụ kiểm tra chân P1.2

if( (P1IN&BIT2)==0 ) //nếu chân P1.2 bằng 0

//do anything

else

//do anything

// nếu viết if( P1IN&BIT2==0 ), thiếu 1 ngoặc là sai

CHÚC CÁC BẠN HỌC TỐT!