Clock & LPM trong MSP430

Nhân dịp năm TI của CLB NCKH, cũng là lúc “nhà nhà MSP430, người người Launch Pad”, hôm nay em xin làm một hướng dẫn cơ bản và tóm tắt về hệ thống clock trong chip MSP430 nói chung. Bài viết chủ yếu đề cập đến các clock được sử dụng để tiện tính toán việc config LPM (Low-Power Mode) tối ưu nhất.

Trước hết, Texas Instrument đưa ra hệ thống clock nhằm cho phép người sử dụng có khả năng chọn lựa giá trị xung clock tối thiểu cho từng phần khác nhau của một chương trình, qua đó giúp giảm điện năng tiêu hao. Các clock được tạo từ 3 nguồn chính:

1. Low Frequency Crystal Clock (LFXT1CLK- clock thạch anh tần số thấp):từ thạch anh gắn ngoài MSP430, có giá trị thường là 32kHz. Đây là nguồn chính của ACLK (sẽ nói sau). Để tắt nguồn clock này chúng ta set bit OSCOFF trong thanh ghi Status Register (xem Lab 8- trang 14) hoặc tháo thạch anh ra khỏi board Launch Pad :D. Ngoài ra TI cũng cho phép các mode có tốc độ cao hơn nếu gắn thạch anh có tần số cao hơn 32kHz.
2. Digitally Controlled Oscillator Clock (DCOCLK – clock dao động điều khiển được): là nguồn clock nội duy nhất của MSP430, và là nguồn clock duy nhất cho MCLK trong quá trình reset. Bình thường MCLK được thiết lập mặc định 900 kHz, tối đa là 1MHz ở G2231, có thể giảm bằng cách config các bit RSELx, MODx, và DCOx.
3. (Optional)Crystal 2 Clock (XT2CLK – cái này dòng G2311 cho launch pad không hỗ trợ:))): dùng thạch anh ngoài được nối đến 2 chân XT2IN và XT2OUT cho dao động tần số cao (vài đến vài chục MHz).
4. (Optional)Very Low Power/Frequency Oscillator(VLO – thường có ở dòng 2xxx trừ 21x1): giúp MSP430 thức dậy định kỳ từ LPM3 mà không cần dùng thạch anh ngoài. Đây là giải pháp tốt nhất cho các ứng dụng yêu cầu cao về năng lượng hơn là sự chính xác(ví dụ như thiết bị đo nhiệt độ). Tuy vậy VLO vẫn có thể được đo chính xác khi cần thiết.

Note:khi config bit RSEL từ giá trị >13 xuống 1 giá trị từ 12 trở xuống có thể dừng hoạt động của DCo, nên cần chuyển từ từ (14/15 ->13 -> 12~1).

3 clock được sử dụng là:

1. Master Clock (MCLK): clock dùng cho CPU của MSP430, ảnh hưởng đến sự sống còn của con chip  MCLK được sử dụng nhiều nhất,config qua thanh ghi BCSCTL2. Ngoài ra ta cũng có thể tắt CPU qua bit CPUOFF trong thanh ghi SR.
2. Submaster Clock (SMCLK): thường dùng cho ngoại vi, lấy nguồn từ DCO hoặc XT2, config bằng thanh ghi BCSCTL2 và các bit SCG trong thanh ghi SR.
3. Auxiliary Clock (ACLK – clock phụ trợ): chỉ được cấp nguồn từ LFXTCL, thường dùng cho hệ thống phụ với clock hoạt động thấp để tiết kiệm năng lượng, config bằng thanh ghi BCSCTL1.

Note:thạch anh ngoài nối với LFXT1CLK cần có trở kháng nối tiếp tương đương 40k ohm khi có tần số dao động thấp (vì có thể làm dừng ACLK).
MCLK và SMCLK khi reset được lấy từ DCOCLK với giá trị gấp 32 lần LFXT1CLK (tức là ~1MHz với thạch anh 32MHz gắn ngoài).

Vi điều khiển MSP430 cung cấp các bộ chia (divider) ngay từ nguồn clock cũng như tại các ngoại vi, giúp mỗi module có cơ sở định thì (timing scheme) riêng biệt. Điều này rất cần thiết cho các giao tiếp bus không trên chip (off-chip bus) vì chúng đòi hỏi đáp ứng được các yêu cầu tốc độ từ môi trường bên ngoài. Đối với mục đích học tập, clock nhanh nhất là yếu tốt cần thiết, nhưng kéo theo đó là việc tiêu hao năng lượng nhiều.

Do vậy, nếu nắm rõ được mối tương quan giữa nguồn clock và các clock được sử dụng, ta có thể config và chọn LPM phù hợp nhất, tối ưu nhất. Hiện tại ở trình độ mới bắt đầu thường ta chỉ sử dụng LPM0 và LPM3 là chính.

Mời mọi người cùng thảo luận, cho ý kiến thêm về các tip & trick để tối ưu hóa chức năng LPM này ;)

Nguồn:cnx.org
MSP430G2x11 Device Erratashet
MSP430 Clock and Timers
 
Top