Tải bản đầy đủ (.pptx) (22 trang)

LẬP TRÌNH với PWM trong arm cortex m3

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (269.71 KB, 22 trang )

LẬP TRÌNH VỚI PWM


GIỚI THIỆU VỀ PWM
• Điều chế độ rộng xung (PWM) là một kỹ thuật
mạnh mẽ để mã hóa mức tín hiệu tương tự.
• Các ứng dụng điển hình bao gồm chuyển đổi
nguồn điện và điều khiển động cơ.
• Stellaris bao gồm ba khối phát và điều khiển
PWM. Khối phát PWM tạo ra hai tín hiệu PWM
độc lập


GIỚI THIỆU VỀ PWM
• Mỗi modul PWM gồm có:
– 1 Bộ đếm 16bit có 2 chế độ đếm lên/ đếm xuống
– 2 bộ so sánh
– 1 bộ tạo tín hiệu PWM.
– Bộ tạo trễ và kích hoạt ngắt


GIỚI THIỆU VỀ PWM
• Bộ đếm 16 bit có khả năng:
– Chạy ở chế độ Xuống hoặc Lên / Xuống
– Tần số đầu ra được kiểm soát bởi giá trị được load
vào 16 bit
– Cập nhật giá trị tải có thể được đồng bộ hóa
– Tạo tín hiệu đầu ra ở mức 0 và giá trị load value


GIỚI THIỆU VỀ PWM


• Hai bộ so sánh PWM
- Cập nhật giá trị so sánh có thể được đồng bộ hóa
- Tạo tín hiệu đầu ra phù hợp
• Bộ phát tín hiệu PWM
- Tín hiệu PWM đầu ra được xây dựng dựa trên các hành động
được thực hiện do kết quả của bộ đếm và Tín hiệu đầu ra bộ so
sánh PWM
- Tạo ra hai tín hiệu PWM độc lập
• Bộ tạo trễ
- Tạo ra hai tín hiệu PWM với độ trễ có thể lập trình được
- Nếu khơng enable bộ tạo trễ tín hiệu PWM đầu ra có thể không
đổi.


SƠ ĐỒ KHỐI PWM


HOẠT ĐỘNG CỦA PWM


CÁC CHẾ ĐỘ CỦA PWM


CÁC CHẾ ĐỘ CỦA PWM


CÁC CHẾ ĐỘ CỦA PWM


CÁC BƯỚC LẬP TRÌNH VỚI PWM

• Các hàm API hỗ trợ lập trình timer nằm trong thư viện inc/hw_pwm.h VÀ
driverlib/pwm.h
• Các bước lập trình với PWM:
– Cấu hình xung clock: processor clock = (tần số OSC hoặc PLL)/ hệ số chia tần
– Cấu hình GPIO:
– Cấu hình nguồn xung PWM
– Cấu hình Timer:
– Cho phép ngoại vi (Cho phép ngoại vi PWM và PORT có chân PWM cần tạo)
– Cấu hình chân PWM
– Cho phép các ngắt
– Cho phép timer
– Viết hàm thực hiện tác vụ ngắt timer:
• xóa cờ ngắt timer
• Viết các lệnh điều khiển

– Sửa file startup


CẤU HÌNH XUNG CLOCK
• Hàm cấu hình clock thuộc thư viện
\INC\Luminary\sysctl.h
• Void SysCtlClockSet(unsigned long ulConfig)
Thiết lập: tần số từ bộ dao động thạch anh

có sử dụng PLL khơng

giá trị chia tần
• Bằng biểu thức OR (|)



CÁC THAM SỐ CẤU HÌNH CLOCK
• Nguồn xung từ bộ tạo dao động thạch anh:
SYSCTL_XTAL_1MHZ, SYSCTL_XTAL_1_84MHZ, SYSCTL_XTAL_2MHZ,
SYSCTL_XTAL_2_45MHZ, SYSCTL_XTAL_3_57MHZ, SYSCTL_XTAL_3_68MHZ,
SYSCTL_XTAL_4MHZ, YSCTL_XTAL_4_09MHZ, SYSCTL_XTAL_4_91MHZ,
SYSCTL_XTAL_5MHZ, SYSCTL_XTAL_5_12MHZ, SYSCTL_XTAL_6MHZ,
SYSCTL_XTAL_6_14MHZ, SYSCTL_XTAL_7_37MHZ, SYSCTL_XTAL_8MHZ,
SYSCTL_XTAL_8_19MHZ, SYSCTL_XTAL_10MHZ, SYSCTL_XTAL_12MHZ,
SYSCTL_XTAL_12_2MHZ, SYSCTL_XTAL_13_5MHZ, SYSCTL_XTAL_14_3MHZ,
SYSCTL_XTAL_16MHZ,YSCTL_XTAL_16_3MHZ

• PLL: SYSCTL_USE_PLL hoặc SYSCTL_USE_OSC
• Hệ số chia tần: SYSCTL_SYSDIV_1,SYSCTL_SYSDIV_2,
SYSCTL_SYSDIV_3, ... SYSCTL_SYSDIV_64
• Nguồn clock từ bộ dao động thạch anh mở rộng: SYSCTL_USE_OSC
hoặc SYSCTL_OSC_MAIN


CẤU HÌNH CLOCK PWM
• Void SysCtlPWMClockSet(unsigned long ulConfig)

• ulConfig nhận 1 trong các giá trị :

SYSCTL_PWMDIV_1, SYSCTL_PWMDIV_2,
SYSCTL_PWMDIV_4, SYSCTL_PWMDIV_8,
SYSCTL_PWMDIV_16, SYSCTL_PWMDIV_32,
or SYSCTL_PWMDIV_64.


ENABLE CHÂN PWM

• Void GPIOPinTypePWM(unsigned long ulPort,
unsigned char ucPins)

• Trong đó:
• ulPort: địa chỉ cơ sở của port
• ucPins : số thứ tự chân PWM


Cấu hình mơ đun PWM
• Void PWMGenConfigure(unsigned long ulBase,
unsigned long ulGen,
unsigned long ulConfig)

Trong đó:
• ulBase là địa chỉ cơ sở của PWM module.
• ulGen nhận 1 trong các giá trị: PWM_GEN_0,
PWM_GEN_1, PWM_GEN_2, hoặc
PWM_GEN_3.
• ulConfig cấu hình cho các tham số của PWM.


Cấu hình mơ đun PWM tham số ulConfig


















PWM_GEN_MODE_DOWN hoặc PWM_GEN_MODE_UP_DOWN chọn chế độ đếm
PWM_GEN_MODE_SYNC or PWM_GEN_MODE_NO_SYNC to specify the counter load
and comparator update synchronization mode
PWM_GEN_MODE_DBG_RUN or PWM_GEN_MODE_DBG_STOP to specify the debug
behavior
PWM_GEN_MODE_GEN_NO_SYNC, PWM_GEN_MODE_GEN_SYNC_LOCAL, or
PWM_GEN_MODE_GEN_SYNC_GLOBAL to specify the update synchronization mode
for generator counting mode changes
PWM_GEN_MODE_DB_NO_SYNC, PWM_GEN_MODE_DB_SYNC_LOCAL, or
PWM_GEN_MODE_DB_SYNC_GLOBAL to specify the deadband parameter synchronization mode
PWM_GEN_MODE_FAULT_LATCHED or PWM_GEN_MODE_FAULT_UNLATCHED to
specify whether fault conditions are latched or not
PWM_GEN_MODE_FAULT_MINPER or PWM_GEN_MODE_FAULT_NO_MINPER to
specify whether minimum fault period support is required
PWM_GEN_MODE_FAULT_EXT or PWM_GEN_MODE_FAULT_LEGACY t


Cài đặt chu kỳ xung PWM
• Void PWMGenPeriodSet(unsigned long ulBase,
unsigned long ulGen,
unsigned long ulPeriod)

ulBase là địa chỉ cơ sở của PWM module.
ulGen nhận 1 trong các giá trị PWM_GEN_0,
WM_GEN_1, PWM_GEN_2, or PWM_GEN_3.
ulPeriod khoảng chu kỳ xung của PWM tính theo xung
clock.


Cài đặt độ rơng xung PWM
• Void PWMPulseWidthSet(unsigned long ulBase,
unsigned long ulPWMOut,
unsigned long ulWidth)
Trong đó:
ulBase : địa chỉ cơ sở PWM module.
ulPWMOut nhận 1 trong các giá trị PWM_OUT_0,
PWM_OUT_1, PWM_OUT_2, PWM_OUT_3,
PWM_OUT_4, PWM_OUT_5, PWM_OUT_6,
PWM_OUT_7.
ulWidth : độ rộng xung


ENABLE PWM
• Cho phép chân tạo xung PWM:
• Void PWMOutputState(unsigned long ulBase,
unsigned long ulPWMOutBits,
tBoolean bEnable)
ulBase: địa chỉ cơ sở PWM module.
ulPWMOutBits nhận các giá trị PWM_OUT_0_BIT,
PWM_OUT_1_BIT, PWM_OUT_2_BIT, PWM_OUT_3_BIT,
PWM_OUT_4_BIT, PWM_OUT_5_BIT, PWM_OUT_6_BIT,
PWM_OUT_7_BIT.

bEnable: nhận giá trị true hoặc false.


ENABLE PWM
• Cho phép mơ đun PWM
Void PWMGenEnable(unsigned long ulBase,
unsigned long ulGen)
ulBase: địa chỉ cơ sở PWM module.
ulPWMOutBits nhận các giá trị PWM_OUT_0_BIT,
PWM_OUT_1_BIT, PWM_OUT_2_BIT,
PWM_OUT_3_BIT,
PWM_OUT_4_BIT, PWM_OUT_5_BIT,
PWM_OUT_6_BIT, PWM_OUT_7_BIT.
bEnable: nhận giá trị true hoặc false.


• sprintf(Buf, “gia tri = %d \r ", t_);

RIT128x96x4StringDraw(Buf,20, 34, 15);



×