Ha Noi university of industry FEE2-K2
BỘ CÔNG THƯƠNG
TRƯỜNG ĐẠI HỌC CÔNG NGHIỆP HÀ NỘI
KHOA : ĐIỆN TỬ
NGHIÊN CỨU, MÔ PHỎNG HOẠT ĐỘNG CỦA TIMER,
INTERRUPT, ADC, UARTS, SSI, I2C, CAN TRÊN VI ĐIỀU KHIỂN
ARM CORTEX-M3 LM3S8962 CỦA HÃNG TEXAS INTSTRUMENTS
Giáo viên hướng dẫn: Phạm Văn Chiến
Sinh viên thực hiện: Nguyễn Văn Tấn
Trương Đình Hà
Lớp: ĐH CNKT ĐT2- K2
Hà Nội – 06/201
_________________________________________________________________________
Faculty of Electronics Engineering
Ha Noi university of industry FEE2-K2
Mục lục
Chương V. Giao diện liên vi mạch (I2C) 42
Chương VII : Bộ chuyển đổi tương tự - số (ADC) 69
7.4 Bản đồ thanh ghi 77
Chương VIII: UARTs 79
8.1 Sơ đồ khối 80
8.2 Mô tả chức năng 80
8.2.2 Tốc độ baud 81
_______________________________________________________________________
Faculty of Electronics Engineering
1
Ha Noi university of industry FEE2-K2
Lời mở đầu
Ngày nay, các dòng vi điều khiển ngày càng có vị trí quan trọng trong các lĩnh
vực điện tử, không khó để nhận ra rằng hầu hết trong các lĩnh vực đời sống có sự
tham gia của vi điều khiển. Có nhiều ho vi điều khiển để chúng ta nghiên cứu, tìm
trợ nghiên cứu, đề tài nghiên cứu của tôi còn nhiều thiếu sót, còn nhiều lỗi kỹ thuật
trong báo cáo, nên rất mong được sự đóng góp ý kiến của Hội đồng bảo vệ và các
thầy cô để đề tài nghiên cứu của chúng tôi được hoàn thiện hơn.
Cuối cùng chúng tôi xin chân thành cảm ơn thầy Vũ Trung Kiên, thầy Phạm
Văn Chiến, thầy Nguyễn Văn Tùng, các thầy cô trong khoa Điện Tử và anh Nguyễn
Xuân Kiên- đại diện TI Việt Nam đã giúp chúng tôi hoàn thành đề tài nghiên cứu
này!
Nhóm sinh viên thực hiện
Nguyễn Văn Tấn
Trương Đình Hà
_______________________________________________________________________
Faculty of Electronics Engineering
3
Ha Noi university of industry FEE2-K2
Chương I: Tổng quan kiến trúc ARM Cortex M3
Các dòng vi điều khiển Stellaris – ARM ® ™ Cortex-M3 đầu tiên - mang lại
những ứng dụng vi điều khiển nhúng hiệu suất cao 32-bit. Những bộ phận tiên
phong cung cấp cho khách hàng 32-bit hoạt động tại một chi phí tương đương với
các vi điều khiển kế thừa 8 bit và 16bit
Các Stellaris cung cấp hiệu suất hiệu quả và hội nhập sâu rộng, thiết bị định vị
thuận lợi với chi phí hợp lý, các ứng dụng đòi hỏi phải kiểm soát quá trình đáng kể
và khả năng kết nối. Dòng Stellaris LM3S8000 kết hợp công nghệ Bosch Controller
Area Network với cả 10/100 Ethernet Media Access Control (MAC) và lớp vật lý
(PHY).
Các vi điều khiển LM3S8962 là mục tiêu cho các ứng dụng công nghiệp, bao
gồm cả giám sát từ xa, máy bán điện tử, thiết bị kiểm tra và đo lường, thiết bị mạng
và thiết bị chuyển mạch, nhà máy tự động hóa, HVAC và kiểm soát các tòa nhà,
thiết bị chơi game, điều khiển chuyển động, thiết bị y tế, cứu hỏa và an ninh.
Đối với các ứng dụng yêu cầu tiết kiệm năng lượng, LM3S8962 đề cao
một mô-đun pin hiệu quả đi theo, đưa năng lượng tiêu hao của LM3S8962 đến một
- 36 ngắt với tám cấp độ ưu tiên
- Khối bảo vệ bộ nhớ (MPU), cung cấp một chế độ đặc quyền cho cấu trúc hệ
điều hành được bảo vệ
- Truy cập dữ liệu độc lập, cho phép dữ liệu được đóng gói vào bộ nhớ hiệu
quả
- Thao tác bit (dải bit), cung cấp sử dụng bộ nhớ tối đa và kiểm soát các thiết bị
ngoại vi hợp lý.
■ ARM Cortex ® ™-M3 Processor Core
- Lõi thu gọn.
- Thumb-2, cung cấp các tính năng cao dự kiến của một lõi ARM trong kích
thước bộ nhớ thường được kết hợp với 8 - và 16-bit thiết bị; thường trong khoảng
một vài kilobyte bộ nhớ cho các ứng dụng lớp vi điều khiển.
- Nhanh chóng thực hiện thông qua các ứng dụng kiến trúc Harvard bằng các
bus đặc trưng riêng biệt cho điều khiển và dữ liệu.
- Xử lý gián đoạn vượt trội, bằng cách thực hiện các thao tác thanh ghi cần thiết
để xử lý một gián đoạn trong phần cứng.
- Tính quyết định, xử lý ngắt nhanh chóng: trong 12 chu kỳ, hoặc chỉ có 6 chu
kỳ với kỹ thuật tail-chaining
- Đơn vị bảo vệ bộ nhớ (MPU) cung cấp một chế độ ưu tiên để thực hiện các
ứng dụng phức tạp.
_______________________________________________________________________
Faculty of Electronics Engineering
5
Ha Noi university of industry FEE2-K2
- Dịch chuyển từ các gia đình bộ xử lý ARM7 ™ cho hiệu năng tốt hơn và hiệu
quả về năng lượng.
- Đầy đủ tính năng giải pháp gỡ rối
• JTAG Debug Serial Port (SWJ-DP)
• Flash Patch và Breakpoint (FPB) đơn vị để thực hiện các điểm ngắt
• DataWatchpoint và Trigger (DWT) đơn vị thực hiện watchpoints, nguồn trigger và
- Có thể lập trình ngắt cho RTC phù hợp, đánh thức bên ngoài, và các sự kiện
pin thấp
■ Bộ nhớ trong
- 256 KB flash
- 64 kB SRAM
■ GPIOs
- 5-42 GPIOs, tùy thuộc vào cấu hình
- 5-V, tùy vào cấu hình đầu vào
- Có thể lập trình điều khiển cho ngắt GPIO
• Tạo ngắt
• Gây ra ngắt theo sườn: lên, xuống hoặc cả hai
• Ngắt theo mức : cao hoặc thấp
- Đọc và ghi hoạt động các bit thông qua các dòng địa chỉ
- Có thể bắt đầu một chuỗi mẫu ADC
- Các Pin cấu hình như các đầu vào kỹ thuật số là các Schmitt-Trigger
- Có thể lập trình điều khiển để cấu hình các chân GPIO
• Điện trở kéo lên nguồn, hoặc kéo xuống mass.
• 2-mA, 4-mA, và 8-mA để giao tiếp kỹ thuật số; có thể được cấu hình lên đến
18-mA cho các ứng dụng cần dòng lớn.
• Cho phép đầu vào kỹ thuật số
■ General-Purpose Timers
- 4 bộ General-Purpose Timer Modules (GPTM), mỗi bộ cung cấp hai bộ
timer/counter 16-bit. Mỗi GPTM có thể được cấu hình để hoạt động độc lập:
• Là một bộ đếm thời gian 32-bit
• Là một đồng hồ thời gian thực 32-bit (RTC) để nắm bắt sự kiện
• Dùng cho điều chế rộng xung (PWM)
• Để kích hoạt chuyển đổi tương tự - số
- Chế độ Timer 32-bit
• Có thể lập trình one-shot thời gian
• Có thể lập trình theo chu kỳ thời gian
- Tốc độ lấy mẫu 500.000 mẫu / giây
- Dễ dàng cấu hình chuyển đổi tương tự - số
- Linh hoạt trong kích hoạt các điều khiển
• Bộ điều khiển (phần mềm)
• Timers
_______________________________________________________________________
Faculty of Electronics Engineering
8
Ha Noi university of industry FEE2-K2
• So sánh tương tự
• PWM
• GPIO
- Phần cứng trung bình lên đến 64 mẫu để cải thiện độ chính xác
- Chuyển đổi sử dụng một tham chiếu 3-V nội
- Nguồn và mass cho các mạch tương tự là tách biệt với nguồn và mass của
mạch kỹ thuật số.
■ UART
- Hai chuẩn lập trình đầy đủ 16C550-loại UARTs với hỗ trợ IrDA
- 16x8 truyền (TX) và nhận (RX) FIFOs riêng biệt để giảm tải ngắt CPU
- Có thể lập trình cho phép tốc độ lên tới 3,125 Mbps
- Các mức độ FIFO 1 / 8, 1 / 4, 1 / 2, 3 / 4, và 7 / 8
- Tiêu chuẩn giao tiếp không đồng bộ với các bit bắt đầu, dừng lại, và tính chẵn
lẻ
- Phát hiện và sửa lỗi đường truyền
- Lập trình đầy đủ các đặc tính giao diện nối tiếp
• 5, 6, 7, hoặc 8 bit dữ liệu
• Tạo và kiểm tra bit chẵn, lẻ hoặc không
• Tạo 1 hoặc 2 bit dừng
- Cung cấp bộ mã hóa / giải mã IrDA serial -IR (SIR)
• Lập trình sử dụng IrDA Serial Infrared (SIR) hoặc đầu vào / đầu ra UART
• Slave tạo ra ngắt khi dữ liệu đã được gửi hoặc yêu cầu của master
- Master với phân xử và xung nhịp đồng bộ, hỗ trợ đa chủ, và chế độ 7-bit địa
chỉ
■ Controller Area Network (CAN)
- CAN giao thức phiên bản 2.0 A / B
- Tốc độ bit lên đến 1 Mbps
- 32 tin nhắn với nhận dạng mask cá nhân
- Ngắt mask
- Vô hiệu hoá chế độ tự động gửi lại cho ứng dụng Time-Triggered CAN
(TTCAN)
- Lập trình kiểm tra ngược cho chế độ tự kiểm tra
- Cho phép lập trình FIFO lưu trữ của nhiều đối tượng nhắn tin
- Kèm theo một giao diện CAN bên ngoài thông qua các tín hiệu CANnTX và
CANnRX
_______________________________________________________________________
Faculty of Electronics Engineering
10
Ha Noi university of industry FEE2-K2
■ 10/100 Ethernet Controller
- Phù hợp với các đặc điểm kỹ thuật IEEE 802,3-2002
• 10Base-T/100Base-TX IEEE-802,3
• 10Base-T/100Base-TX ENDEC, 100BASE-TX Scrambler / descrambler
- Nhiều chế độ hoạt động
• Song công và bán song công 100 Mbps
• Song công và bán song công 10 Mbps
• Chế độ tiết kiệm điện và giảm công suất xuống
- Cấu hình cao
• Lập trình địa chỉ MAC
• Lựa chọn hoạt động LED
• Hỗ trợ chế độ pha tạp
- Hai bộ so sánh PWM
• Cập nhật giá trị so sánh có thể được đồng bộ
• Tạo ra các tín hiệu đầu ra khi so sánh đúng
- Bộ tạo PWM
• Đầu ra tín hiệu PWM được xây dựng dựa trên các hoạt động như là một kết
quả của bộ đếm và tín hiệu so sánh PWM đầu ra
• Tạo ra hai tín hiệu PWM độc lập
- Bộ tạo Dead-band
• Tạo ra hai tín hiệu PWM với lập trình trễ băng tần chết phù hợp để điều khiển
nửa cầu H
• Có thể được bỏ qua, để lại các tín hiệu PWM đầu vào không sửa đổi
- Kiểm soát đầu ra linh hoạt với cho phép đầu ra PWM của mỗi tín hiệu PWM
• Cho phép đầu ra PWM của mỗi tín hiệu PWM
• Các tùy chọn đảo đầu ra của mỗi tín hiệu PWM (phân cực điều khiển)
• Tùy chọn xử lý lỗi cho mỗi tín hiệu PWM
• Đồng bộ hóa các bộ timer trong các khối tạo PWM
• Đồng bộ hoá cập nhật các bộ đếm /bộ so sánh giữa các khối tạo PWM
• Tóm tắt tình trạng ngắt các khối tạo PWM
- Có thể bắt đầu một chuỗi lấy mẫu ADC
■ QEI
- Hai module QEI, với các tính năng sau đây:
- Chức vụ tích hợp, theo dõi vị trí mã hóa
- Chụp tốc độ bằng cách sử dụng tích hợp bộ đếm thời gian
_______________________________________________________________________
Faculty of Electronics Engineering
12
Ha Noi university of industry FEE2-K2
- Tần số đầu vào của các đầu vào QEI có thể cao bằng 1 / 4 của tần số bộ xử lý
- Tạo ngắt:
• Chỉ số xung
13
Ha Noi university of industry FEE2-K2
■ Điều khiển động cơ
■ Thiết bị y tế
■ Báo cháy và an ninh
■ Điện năng và năng lượng
■ Giao thông vận tải
1.3 Sơ đồ khối
_______________________________________________________________________
Faculty of Electronics Engineering
14
Ha Noi university of industry FEE2-K2
Hình 1-1: Sơ đồ khối LM3S8962
_______________________________________________________________________
Faculty of Electronics Engineering
15
Ha Noi university of industry FEE2-K2
Chương II: Cấu trúc, hoạt động của TIMER
2.1 Tổng quan về Timer trong LM3S8962
Hình 2-1: Sơ đồ khối GPTM
Chương trình timers có thể sử dụng để đếm hoặc các sự kiện thời gian bên
ngoài từ chân timer đầu vào. Ở stellaris General-Purpose Timer Module bao gồm 4
khối GPTM(Timer0, Timer1, Timer2, và Timer3). Mỗi khối GPTM thường có hai
bộ timers/counters(timerA, timerB) 16-bít, nó có thể cấu hình để hoạt động độc lập
với timer hoặc sự kiện đếm , hoặc có thể cấu hình để hoạt động như một timer 32-
bít hoặc một 32-bít Real-Time-Clock(RTC).
Thêm vào đó, timers có thể sử dụng để làm trigger analog-to-digital
conversions(ADC). Đối với ADC trigger tín hiệu từ tất cả của General-Puurpose-
timers là ORed trước khi liên tục đọc ADC module. Như vậy chỉ một timer sẽ được
dùng làm trigger sự kiện ADC.
o Đầu vào sườn thời gian capture.
Chế độ PWM 16-bít
o Chế độ PWM đơn với chương trình – phần mềm đầu ra đảo của tín
hiệu PWM.
2.2 Mô tả chức năng hoạt động
Cấu tạo chính của một khối GPTM là hai khối đếm 16-bít up/down đếm tự
do(timer A, timer B), hai thanh ghi 16-bít macth, hai thanh ghi prescaler macth, hai
_______________________________________________________________________
Faculty of Electronics Engineering
17
Ha Noi university of industry FEE2-K2
thanh ghi 16-bít load/initialization và ba liên kết điều khiển chức năng. Chính xác
chức năng của mỗi GPTM là điều khiển bởi phần mềm và cấu hình tới bề mặt thanh
ghi.
Cấu hình GPTM dùng thanh ghi GPTM configuration(GPTM), thanh ghi
GPTM TimerA Mode(GPTMAMR), và thanh ghi GPTM TimerB
Mode(GPTMBMR). Khi trong một của chế độ 32-bít, timer chỉ có thể act với timer
32-bít. Tuy nhiên, khi cấu hình chế độ 16-bít, GPTM có thể làm với cấu hình 2 bộ
timer 16-bít trong một sự kết hợp của chế độ 16-bít.
2.2.1 Điều kiện Reset GPTM
Sau khi reset sẽ là ứng dụng với GPTM module, module trong trạng thái
không hoạt động, và tất cả mọi điều khiển xóa thanh ghi, và nó trở lại trạng thái mặc
định. Counters TimerA và TimerB khởi trạo giá trị 0xFFFF, độ dài với nó tương
ứng với tải của các thanh ghi: thanh ghi GPTM TimerA Interval Load(GPTMAILR)
và thanh ghi GPTM TimerB Interval Load (GPTMBILR). Biến đếm Prescale được
khởi tạo tới 0x00: thanh ghi GPTM TimerA Prescale (GPTMAPR), và thanh ghi
GPTM TimerB Prescale (GPTMBPR).
2.2.2 Chế độ timer 32-bít mở
Đây là sự miêu tả lựa chọn ba chế độ GPTM timer 32-bít (one-shot/periodic và
RTC) và cấu hình nó.
bộ đếm sẽ tải lại giá trị trong chu kỳ clock tiếp sau và tiếp tục đếm từ giá trị mới.
Nếu bít TASTALL trong thanh ghi GPTMCTL được thiết lập, timer đừng đếm
lúc bộ xử lý tạm nghỉ bởi debugger. Timer đếm trở lại khi bộ xử lý hoạt động trở
lại.
2.2.3 Chế độ timer RTC 32-bít
Trong chế độ RTC, liên kết version của thanh ghi Timer A và Timer B được
cấu hình với bộ đếm tiến 32-bít. Khi chế độ RTC được chọn thì thời gian đầu tiên,
biến đếm được tải giá trị 0x0000.0001. Tất cả các giá trị sau này được viết tới thanh
ghi GPTM TimerA Match(GPTMTAMATCHR) bởi bộ điều khiển.
Xung clock đầu vào đều đòi hỏi đầu vào CCP với mức 32768KHz trong chế
độ RTC. Tín hiệu clock khi đó được chia xuống tốc độ 1KHz để hợp với độ dài đầu
vào của bến đếm 32-bít.
Khi phần mềm viết lên bít TAEN trên thanh ghi GPTMCTL, biến đếm bắt đầu
hoạt động đếm tiến bắt đầu từ giá trị đặt trước 0x0000.0001. Khi quá trình đếm giá
trị matches ấy thì tải giá trị đặt trước từ thanh ghi GPTMTAMATCHR, nó sẽ đưa
về giá trị trên về giá trị 0x0000.0000 và tiếp tục đếm cho đến khi có một reset phần
_______________________________________________________________________
Faculty of Electronics Engineering
19
Ha Noi university of industry FEE2-K2
cứng sảy ra, hoặc không cho phép bởi phần mềm (xóa bít TAEN). Khi match sảy ra,
GPTM đòi xác nhận bít RTCRIS trên thanh ghi GPTMRIS. Khi ngắt RTC cho phép
trên GPTMRIS, GPTM cũng đặt bít RTCMIS trên thanh ghi GPTMMIS và tạo điều
khiển ngắt. Cờ báo xuất hiện và được xóa bởi viết lên bít RTCCINT trên thanh ghi
GPTMICR.
2.2.4 Chế độ hoạt động timer 16-bít
GPTM là nơi để toàn bộ chế độ 16-bít viết giá trị 0x4 lên thanh ghi GPTM
Configuration (GPTMCFG). Mỗi lựa chọn mô tả GPTM chế độ 16-bít của hoạt
động. TimerA và TimerB đồng nhất chế độ, như vậy mô tả sủ dụng đơn lẻ hoặc cả
hai.
Percale #clock(Tc)
a
Thời gian tối
đa
Đơn vị
00000000 1 1.3107 mS
00000001 2 2.6214 mS
00000010 3 3.9322 mS
mS
11111101 254 332.9229 mS
11111110 255 334.2336 mS
11111111 256 335.5443 mS
Với a là chu kỳ xung clock.
2.2.4.2 Chế độ đếm sườn đầu vào 16-bít
Trong chế độ đếm sườn đầu vào, timer cấu hình với khả năng có thể đếm tiến
của nó, có ba kiểu sự kiện: rising edge, falling edge, hoặc cả hai. Đánh giá timer
trong chế độ đếm edge, bít TnCMR của thanh ghi GPTMTnMR được đặt giá trị 0.
Kiểu của edge của đếm timer được xác định bằng dải TnEVENT của thanh ghi
GPTMCTL. Trong lúc cài đặt, thanh ghi GPTM Timern
Match(GPTMTnMATCHR) được cấu hình như vậy ta thấy được sự khác nhau giữa
giá trị trên thanh ghi GPTMTnILR và thanh ghi GPTMTnMATCHR ngang như số
của edge sự kiện phải đếm.
Khi phần mềm viết lên bít TnEN trên thanh ghi GPTM Control(GPTMCTL),
timer cho phép sự kiện capture. Mỗi sự kiện đưa vào trong chân CCP được giảm
biến đếm 1, cho đến khi đếm sự kiện matches GPTMTnMATCHR. Khi đếm match,
GPTM đòi bít CnMRIS trên thanh ghi GPTMRIS.
Biến đếm khi cập nhật sử dụng giá trị trên thanh ghi GPTMTnILR, và dừng từ
khi GPTM tự động xóa bít TnEN trên thanh ghi GPTMCTL. Một sự kiện đến sẽ trải
_______________________________________________________________________
Faculty of Electronics Engineering
một bắt đầu giá trị của timer là giá trị mặc định của 0xFFFF, và timer được cấu hình
capture sụ kiện edge kéo lên.
Mỗi thời điểm sự kiện edge kéo lên được thu, giá trị đếm hiện tại được đưa
đến thanh ghi GPTMTnR, và giữ lại cho đến khi sự kiện khác được cập nhật.
Hình 2-3:Ví dụ về chế độ đầu vào timer edge 16-bít
2.2.4.4 Chế độ PWM 16-bít
Prescale không thể thực hiện trong chế độ PWM 16 bít.
GPTM hỗ trợ chế độ tạo ra PWM đơn, trong chế độ PWM, timer cấu hình như
bộ đếm lùi với bắt đầu từ giá trị khai báo bởi GPTMTnILR. Trong chế độ này, tần
số và chu kỳ đồng bộ với sự kiện ngoài và như vậy đảm bảo các sự kiện nhỏ. Chế
độ PWM cho phép với thanh ghi GPTMTnMR bởi việc cài đặt bít TnAMS tới 0x1,
bít TnCMR tới 0x0, và field tới 0x2.
_______________________________________________________________________
Faculty of Electronics Engineering
23
Ha Noi university of industry FEE2-K2
Khi phần mềm truy cập tới bít TnEN trên thanh ghi GPTMCTL, biến đếm bắt
đầu đếm lùi cho tới khi gặp trạng thái 0x0000. Trên chu kỳ đếm tiếp theo, biến đếm
cập nhật lại và bắt đầu từ giá trị trên GPTMCTL và tiếp tục đếm cho tới khi bị khóa
bởi phần mềm xóa bít TnEN trên thanh ghi GPTMCTL. Không có bít ngắt hoặc tình
trạng đòi hỏi trong chế độ PWM.
Tín hiệu PWM đầu ra đưa ra khi biến đếm với giá trị của thanh ghi
GPTMTnILR, và deasserted khi giá trị biến đếm bằng giá trị của thanh ghi GPTM
Timern Match (GPTMTnMATCHR). Phần mềm có khả năng đảo tín hiệu đầu ra
PWM bởi cài đặt bít TnPWML trên thanh ghi GPTMCTL.
Hình vẽ bên dưới cho ta thấy việc tạo đầu ra PWM với chu kỳ 1-ms với 66%
duty với xung clock đầu vào 50-MHz và TnPWML=0. Với ví dụ này, giá trị bắt đầu
là GPTMTnIRL=0x350 và giá trị Match là GPTMTnMATCHR=0x411A.
Hình 2-4:Ví dụ về chế độ PWM 16-bít.
2.3 Cài đặt và cấu hình