Việc ứng dụng các loại chip vi xử lý, vi điều khiển vào các hệ thống điều khiển nhiệt độ giúp nâng cao độ chính xác và tăng khả năng tự động hoá của hệ thống.Vi điều khiểnARM 32bit STM32
Trang 1LỜI NÓI ĐẦU
Nhiệt độ là một thông số hết sức quan trọng và có ảnh hưởng rất lớntới môi trường, sự sống và các hoạt động sản xuất hàng ngày Ngày nay với
sự biến đổi ngày càng xấu đi và khó lường của thời tiết thì việc đo, giám sátnhiệt độ môi trường trở nên rất quan trọng Nó giúp ta kịp thời đưa ra giảipháp hạn chế các tác động xấu của thời tiết Tránh được tối đa những thiệthại của cuộc sống và sản xuất
Cùng với sự phát triển của khoa học kỹ thuật, các phương pháp đo,điều khiển nhiệt độ cũng ngày càng hiện đại Việc ứng dụng các loại chip
vi xử lý, vi điều khiển vào các hệ thống điều khiển nhiệt độ giúp nâng cao
độ chính xác và tăng khả năng tự động hoá của hệ thống.Vi điều khiểnARM (32bit) STM32F103RD là chíp mới của hãng ST Electronic, với khảnăng tích hợp mạnh mẽ, kích thước nhỏ gọn, có không gian nhớ lớn và môitrường thuận tiện Trong khuân khổ đồ án, em đã sử dụng chípSTM32F103RD cảm biến nhiệt độ LM35 để hoàn thành thiết kế mô hìnhmột bộ đo, lưu nhiệt độ môi trường
Em xin gửi lời cảm ơn chân thành đến các thầy, cô trong khoa Kỹ Thuật Điều Khiển, đặc biệt là sự hướng dẫn nhiệt tình của thầy giáo Nguyễn Văn Xuân giúp đỡ để em hoàn thành đồ án Tuy em đã nhiều cố
gắng và nỗ lực nhưng do trình độ và thời gian không nhiều nên trong quátrình hoàn thành đồ án không thể tránh khỏi nhưng hạn chế và thiếu sót Emmong nhận được những ý kiến đóng góp quý giá của thầy cô và các bạn
Em xin chân thành cảm ơn!
Hà Nội, 28 tháng 4 năm 2011
Sinh viên thực hiện
Đào Văn Phong
Trang 2Chương 1 CÁC PHƯƠNG PHÁP ĐO NHIỆT ĐỘ
Nhiệt độ là một trong những thông số quan trọng nhất ảnh hưởngđến đặc tính của vật chất Đặc biệt nhiệt độ môi trường có ảnh hưởng rấtlớn trong đời sống hàng ngày và hoạt động sản xuất Theo thời gian, sựphát triển của các phương pháp đo, điều khiển nhiệt độ cũng phát triển theo
từ đơn giản đến phức tạp Các hệ thống đo và điều khiển nhiệt độ cũngđược xây dựng theo các phương pháp khác nhau tùy thuộc vào dải nhiệt độcần đo Thông thường nhiệt độ đo được chia thành ba dải: nhiệt độ thấp,nhiệt độ trung bình và nhiệt độ cao
Dải nhiệt độ thấp và trung bình: Phương pháp thường đo là phươngpháp tiếp xúc Có nghĩa là thiết bị đo tiếp xúc trực tiếp với môi trường cầnđo
Dải nhiệt độ cao: Phương pháp thường đo là phương pháp không tiếpxúc Có nghĩa là thiết bị đo đặt ở ngoài môi trường đo
1.1 Các phương pháp đo và điều khiển nhiệt độ
1.1.1 Các phương pháp đo không tiếp xúc
Phương pháp hỏa quang kế
Đây là phương pháp dựa trên định luật bức xạ của vật đen tuyệtđối,tức là vật hấp thụ năng lượng theo mọi hướng với khả năng lớn nhất.Bức xạ nhiệt của mọi vật thể có thể đặc trưng bằng một mật độ phổ E Nghĩa là số năng lượng bức xạ trong một đơn vị thời gian với một đơn vịdiện tích của vật và xảy ra trên một đơn vị của độ dài sóng
Quan hệ giữa mật độ bức xạ của vật đen tuyệt đối với nhiệt độ và độdài sóng được biểu diễn bằng công thức:
2
Trang 31 ) /(
5 1
C 37,03.10 17 2/
1 ; C2=1,432.10ư2[m.do]
s Jm
C 37 , 03 10 17 2 /
1
; C2=1,432.10-2[m.do]
T - nhiệt độ tuyệt đối; - độ dài sóng;
Tùy theo đại lượng vào ta gọi dụng cụ đo theo phương pháp trênbằng tên gọi khác nhau như: hỏa quang kế phát xạ và hỏa quang kế màusắc
Tp – nhiệt độ của vật theo lý thuyết
Đối với vật thực thì năng lượng bức xạ toàn phần trên một đơn vị bềmặt được tính : E T0 T T J t4[ ]
Với : T - hệ số bức xạ tổng hợp, xác định tính chất của vật và nhiệt
Trang 4Nguyên lý hoạt động: Hỏa quang kế màu sắc là dụng cụ đo nhiệt độdựa trên phương pháp đo tỷ số cường độ bức xạ của hai ánh sáng có bướcsóng khác nhau và 1 2
Năng lượng thu được :
T
c
e C
2
5 1 1 1 1
2
5 2 1 2 2
e
e E
E
2 2 1 2
5 2 2
5 1 1 2
5 2 2 1
2 1
Vì vậy trong dụng cụ hỏa quang kế màu sắc có thiết bị tự tính,tựđộng giải phương trình trên, trong đó các giá trị 1 , 1 , 2 , 2được đưa vàotrước, nếu các thông số trên đưa vào sau sẽ gây nên sai số
Khi đo nhiệt độ từ 20000C đến 25000Cgiá trị 1 , 2có thể xác địnhđược bằng thực nghiệm
1.1.2 Các phương pháp đo tiếp xúc
Phương pháp đo nhiệt độ trong công nghiệp thường được sử dụng làcác nhiệt kế tiếp xúc gồm các loại sau:
- Nhiệt kế chất lỏng
- Nhiệt kế nhiệt điện trở
- Nhiệt kế nhiệt ngẫu
4
Trang 5Ngoài ra đối với các ứng dụng có dải nhiệt độ cỡ -550C đến 2000Chiện nay ta thường ứng dụng các IC bán dẫn ứng dụng tính chất nhạy nhiệtcủa các điôt, tranzito để đo nhiệt độ.
Cấu tạo của nhiệt kế nhiệt điện trở và cặp nhiệt ngẫu cũng như cáchlắp ghép chúng phải đảm bảo tính chất trao đổi nhiệt tốt giữa nhiệt kế vớimôI trường đo:
- Đối với môi trường khí và nước dụng cụ đo được đặt theo hướngngược lại với dòng chảy
- Với vật rắn đặt nhiệt kế sát vào vật, nhiệt lượng sẽ chuyển từ vậtsang dụng cụ đo Diện tích tiếp xúc giữa vật đo và nhiệt kế càng lớn càngtốt
- Khi đo nhiệt độ của các chất ở dạng hạt( cát,đất, ) cần phải cắmsâu nhiệt kế vào môi trường cần đo và thường dùng nhiệt kế nhiệt điện trở
có cáp nối ra ngoài
Nhiệt kế chất lỏng
Trong phương pháp này người ta sử dụng sử giãn nở của chất lỏngtheo nhiệt độ, đo sự tăng giảm tuyến tính của cột chất lỏng theo sự tănggiảm của nhiệt độ Ví dụ như nhiệt kế thủy ngân
Nhiệt kế điện trở (Resistance Thermometer)
Nhiệt kế điện trở làm việc trên nguyên tắc sử dụng tính chất biếnthiên điện trở của vật chất theo nhiệt độ, từ đó biết được nhiệt độ cần đo
Nhiệt kế điện trở có thể chế tạo bằng dây platin, đồng, niken, bándẫn,… quấn trên một lõi cách điện đặt trong vỏ kim loại có đầu được nối rangoài Điện trở của dây này đã được xác định chính xác ở những nhiệt độkhác nhau Vì thế khi ta đặt dây đó ở khu vực cần đo nhiệt độ, chỉ cần đođiện trở của dây là có thể biết được nhiệt độ Nhiệt kế điện trở có thể dùng
để đo những nhiệt độ rất cao (đến 10000C) hoặc rất thấp ( đến 2000C) với
độ chính xác cao có thể lên đến 0,00010C
Trang 6 Nhiệt kế cặp nhiệt ngẫu (Thermocouples).
Phương pháp đo nhiệt độ bằng cặp nhiệt ngẫu là một trong nhữngphương pháp phổ biến và thuận lợi nhất
Hình 1.1: Cấu tạo của cặp nhiệt ngẫu.
Cấu tạo và nguyên lý hoạt động của nhiệt kế cặp nhiệt ngẫu: Gồmhai dây hàn với nhau ở điểm 1 và luồn vào ống 2 để có thể đo được nhiệt
độ cao Với nhiệt độ thấp hơn vỏ nhiệt kế có thể làm bằng thép không rỉ
Để cách điện giữa hai dây, một trong hai dây được luồn vào ống sứ nhỏ 3
Nếu vỏ làm bằng kim loại thì cả hai dây đều đặt vào ống sứ
Đầu ra của cặp nhiệt ngẫu nối vào hộp đầu nối 4 Mạch đo của nhiệt
kế nhiệt ngẫu là milivônmét hoặc điện thế kế điện trở nhỏ có giới hạn đo từ
Trang 7Rd -Điện trở đường dây Rdc -Điện trở của milivonmet
Điện áp rơi trên milivonmet là:
Đo nhiệt độ dùng các phần tử bán dẫn
Phương pháp này hoạt động theo nguyên lý sau: các linh kiện điện tử
và bán dẫn rất nhạy cảm với nhiệt độ, do đó có thể sử dụng một số linhkiện bán dẫn như điốt hoặc tranzito nối theo sơ đồ sau:
Hình 1.2: Nguyên lý hoạt động của IC bán dẫn đo nhiệt độ.
1 . ln
c
c BE
BE d
I
I q
T K E
E U
Với Ic1/Ic2=const thì UD tỉ lệ với nhiệt độ T mà không cần đến nguồn
Trang 8Hiện nay các cảm biến đo nhiệt độ sử dụng điốt hoặc tranzito đãđược tích hợp thành IC bán dẫn đo nhiệt độ Các cảm biến này cho đầu ra
là điện áp hoặc dòng điện tỉ lệ với nhiệt độ cần đo với độ tuyến tính cao, sửdụng đơn giản
Ví dụ một số loại IC đo nhiệt độ:
- Độ nhạy của các loại IC bán dẫn đo nhiệt độ thường có giá trị
cỡ 2,5mV/0C và không ổn định mà thường thay đổi theo nhiệt độ
- Ưu điểm: độ tuyến tính cao, sử dụng đơn giản và có độ nhạycao
- Nhược điểm: giới hạn phạm vi sử dụng chỉ trong khoảng
-500C 1500C, do giới hạn chịu nhiệt của các phần tử bán dẫn
Nếu giá trị phản hồi thấp hơn giá trị đặt thì đầu ra bộ điều khiển sẽđược đưa lên mức ON, còn nếu giá trị đưa về cao hơn giá trị đặt thì đầu ra
sẽ là OFF Đầu ra sẽ luôn ON/OFF và dựa theo giá trị đặt để nhiệt độ điềukhiển không đổi Khi đó công suất cấp cho sợi đốt cũng chỉ có 2 giá trị( nghĩa là 100 % hoặc 0%) Cho nên bộ điều khiển tác động ON/OFF còngọi là bộ điều khiển tác động 2 vị trí Biên độ dao động sẽ giảm khi tăng độquán tính, giảm thời gian trễ hoặc giảm tốc độ điều khiển đối tượng
8
Trang 91.2 Các phương pháp điều khiển nhiệt độ
Bộ điều khiển nhiệt dùng để điều khiển nhiều đối tượng nhiệt độkhác nhau, mỗi đối tượng lại có một đặc điểm nhất định do công nghệ yêucầu, do đó bộ điều khiển nhiệt cũng có nhiều phương pháp điều khiển đểđáp ứng yêu cầu đó Dưới đây là những phương pháp mà bộ điều khiểnnhiệt độ thường dùng:
1.2.1 Phương pháp ON/OFF
Đây là phương pháp điều khiển có dạng đơn giản nhất, những bộđiều khiển dùng phương pháp này có giá thành khá rẻ được ứng dụng chonhững đối tượng không yêu cầu cao về chất lượng điều khiển Đặc tínhđiều khiển được mô tả như hình dưới đây:
Trang 10gọi là bộ điều khiển tác động 2 vị trí Biên độ dao động sẽ giảm khi tăng độquán tính, giảm thời gian trễ hoặc giảm tốc độ điều khiển đối tượng.
1.2.2 Phương pháp điều khiển tác động P (Proportional – Tỷ lệ)
Với điều khiển tỷ lệ, phần tử điều khiển sẽ đưa ra giá trị đầu ra tỷ lệvới giá trị đầu vào Nói một cách khác, giá trị đầu ra quan hệ tuyến tính vớigiá trị đầu vào Vậy giá trị đầu vào sẽ thay đổi trong một khoảng nào đó đểgiá trị đầu ra thay đổi từ 0% đến 100%, khoảng đó gọi là dải tỷ lệ(proportional band), và giá trị đặt (SV) nằm trong dải tỷ lệ đó
Hình 1.4: Quan hệ giữa đầu vào và đầu ra
Trong lý thuyết nếu như nói đến điều chỉnh tỷ lệ là nói đến hệ số tỷ
lệ K, nhưng trong thực tế hầu hết các hệ thống người ta không sử dụng hệ
số tỷ lệ K mà dùng khái niệm dải tỷ lệ Công thức thể hiện mối liên hệ giữa
K và %P là: K= 100(%P)
Khi hoạt động, giá trị đầu vào thấp hơn và nằm ngoài dải tỷ lệ, đầu
ra điều khiển sẽ được ON 100% Nếu giá trị đầu vào nằm trong dải tỷ lệ,đầu ra điều khiển sẽ tăng hoặc giảm từ từ tuyến tính với độ sai lệch đầu
10
Trang 11vào Nếu độ sai lệch bằng 0 (đầu vào = SV) thì đầu ra điều khiển sẽ ON50% Nếu giá trị đầu vào cao hơn và nằm ngoài dải tỷ lệ, đầu ra sẽOFF( ứng với giá trị 0%).
Hình 1.5: Quan hệ giá trị đầu ra và giá trị phản hồi
Ví dụ:
Bộ điều khiển nhiệt độ, dải nhiệt độ điều chỉnh từ 0oC 400oC códải tỷ lệ là 5%, giá trị đặt SV=100 oC Vậy độ rộng dải tỷ lệ: PB = (400 oC -
0 oC)*5% = 20 oC Do đó nếu nhiệt độ phản hồi thấp hơn 90 oC thì đầu ra sẽ
ON (100%), nhiệt độ phản hồi cao hơn 110 oC đầu ra sẽ OFF hoàn toàn(0%), còn nhiệt độ phản hồi nằm trong dải tỷ lệ thì đầu ra điều khiển sẽON/OFF theo chu kỳ
Để làm rõ hơn về điều khiển ON/OFF theo chu kỳ ta tìm hiểu ví dụsau:
Trang 12Hình 1.6: Quá trình điều khiển ON/OFF
Nếu bộ điều khiển sử dụng đầu ra là rơ-le hoặc rơ-le bán dẫn (SSR)thì đầu ra sẽ ON không đều với mỗi chu kỳ T Chu kỳ T đó được gọi là thờigian điều khiển tỷ lệ ( time - porprotional action) Với chu kỳ điều khiển là10s, để đầu ra điều khiển là 80% thì TON = 8s, TOFF = 2s
Ngoài ra, dải tỷ lệ thiết lập rộng hay hẹp sẽ làm ảnh hưởng nhiều đếnchất lượng điều khiển, do đó khi chọn %P cần chú ý đến đặc tính của từngđối tượng
12
Trang 13Hình 1.8: Dải tỷ lệ đặt
Điều khiển tỷ lệ cho thời gian tác động nhanh, thời gian điều chỉnhngắn, độ ổn định cao hơn nhưng giá trị thực tế (PV) luôn có một độ sai lệchtĩnh (offset) với giá trị đặt (SV)
Phương trình trong miền thời gian:
y(t) = KP.e(t)Hàm truyền:
Phương trình trong miền thời gian:
t dt t e
0
) ( KI.
) (
Tuy nhiên điều chỉnh tích phân chỉ được nghiên cứu trên lý thuyết,trong thực tế không dùng độc lập mà được kết hợp với điều chỉnh tỷ lệ đểloại bỏ sai lệch tĩnh ( offset) của điều chỉnh tỷ lệ
Trang 15Hình 1.10:các đường đặc tính với các tham số kp,ki,kd
Mặc dù vậy việc thêm bộ điều khiển tích phân vào bộ điều khiển tỷ lệcũng tạo ra nhược điểm: đó là gia tăng khuynh hướng dao động của biến điềukhiển Do đó cần phải giảm độ tỷ lệ đi, hệ trở nên đáp ứng chậm hơn so vớiban đầu Nếu quá trình có độ trễ lớn thì tín hiệu sai lệch nhận được sẽ khôngphản ánh độ sai lệch thật sự Do độ trễ này sẽ làm cho đáp ứng của hệ khôngcòn đúng so với sai lệch hiện tại, tức là hệ làm việc với tín hiệu cũ
Phương trình trong miền thời gian của bộ PI:
t dt t e
0
) ( KI.
+ KP.e(t)
= y(t)
Hàm truyền:
S
K I
+ KP
= G(s)
1.2.4 Phương pháp điều khiển tác động D ( Derivative – Vi phân)
và PD
Đầu ra bộ điều khiển vi phân D tỷ lệ với tốc độ thay đổi của giá trị
đo hoặc sai lệch Một số nhà sản xuất còn sử dụng thuật ngữ tốc độ (rate)hoặc tác động trước ( pre - act) để thay cho tác động vi phân ( derivativeaction)
Việc điều khiển đầu ra được tính theo sự thay đổi của các sai lệchvới thời gian:
Đầu ra điều khiển
dt
t de
T D ( )
Trong đó: TD - Thời gian vi phân
Phương trình trong miền thời gian: y(t) = KD.de ) dt(t
Hàm truyền: G(s) = KD.S
Nếu như với bộ điều khiển P cho kết quả luôn tồn tại một sai lệchtĩnh, bộ điều khiển PI khắc phục được sai lệch tĩnh nhưng lại làm chậm tốc
Trang 16độ đáp ứng của hệ thống Thì với bộ điều khiển vi phân PD, đặc điểm nổibật là có tính phản ứng nhanh với tốc độ thay đổi của đầu vào, sẽ phần nàolàm tăng thêm tốc độ đáp ứng cho hệ thống.
Hình 1.11: Tác động của nhiễu
Tuy nhiên, các nhiễu tác động lên hệ thống thường có dạng tín hiệu
và đặc điểm của nhiễu này là sự tác động nhanh và bất kỳ Khi một tín hiệunhiễu tác động vào một hệ thống được tích hợp khâu vi phân, đáp ứng của
hệ thống có thể rất nhanh và gây ra độ quá điều chỉnh lớn, phá hủy kết cấucủa cả hệ thống Do vậy, cần rất cẩn thận khi sử dụng các khâu điều khiển
vi phân trong hệ thống
16
Trang 17Hình1.10:các thông số ảnh hưởng đến đặc tính
Phương pháp điều khiển tác động PID (Tỷ lệ - Tích phân - Vi phân)
Có thể tổng kết ưu nhược điểm của các phương pháp điều khiển P, I,
ITích phân
Triệt tiêu sai lệch tĩnh, hệ thốngkém ổn định
Tốc độ xử lý chậm,thời gian điềuchỉnh dài
D Tăng nhanh tốc độ tác động Gây ra nhiễu điều
Trang 18Vi phân khiển, độ quá điều
chỉnh lớn
Bộ điều khiển PID gồm sự kết hợp của 3 khâu điều khiển tỷ lệ (P),
tích phân (I) và vi phân (D), nên nhược điểm của khâu này trong điều khiểnđược ưu điểm của khâu kia khắc phục Vì vậy nhiệt độ luôn được giữ ổnđịnh bằng phẳng bởi khâu tỷ lệ, khâu tích phân tự động hiệu chỉnh độ sailệch tĩnh (offset) của khâu tỷ lệ, đồng thời khâu vi phân giúp bộ điều khiểnPID phản ứng nhanh với nhiễu ngoài
Hình 1.11 Bộ PID đầy đủ
Chương 2 TỔNG QUAN VỀ ARM
Cấu trúc ARM (viết tắt từ tên gốc là Acorn RISC Machine) là mộtloại cấu trúc vi xử lý 32-bit kiểu RISC được sử dụng rộng rãi trong cácthiết kế nhúng Do có đặc điểm tiết kiệm năng lượng, các bộ CPU ARMchiếm ưu thế trong các sản phẩm điện tử di động, mà với các sản phẩm nàyviệc tiêu tán công suất thấp là một mục tiêu thiết kế quan trọng hàng đầu
18
Trang 19Ngày nay, hơn 75% CPU nhúng 32-bit là thuộc họ ARM, điều nàykhiến ARM trở thành cấu trúc 32-bit được sản xuất nhiều nhất trên thế giới.CPU ARM được tìm thấy khắp nơi trong các sản phẩm thương mại điện tử,
từ thiết bị cầm tay (PDA, điện thoại di động, máy đa phương tiện, máy tròchơi cầm tay, và máy tính cầm tay) cho đến các thiết bị ngoại vi máy tính
các vi xử lý Xscale của Intel
2.1 Lịch sử phát triển của ARM
Việc thiết kế ARM được bắt đầu từ năm 1983 trong một dự án pháttriển của công ty máy tính Acorn Nhóm thiết kế, dẫn đầu bởi RogerWilson và Steve Furber, bắt đầu phát triển một bộ vi xử lý có nhiều điểmtương đồng với Kỹ thuật MOS 6502 tiên tiến Nhóm thiết kế hoàn thànhviệc phát triển mẫu gọi là ARM1 vào năm 1985, vào năm sau, nhóm hoànthành sản phẩm ‘’thực’’ gọi là ARM2 ARM2 có tuyến dữ liệu 32-bit,không gian địa chỉ 26-bit tức cho phép quản lý đến 64 Mbyte địa chỉ và 16thanh ghi 32-bit Một trong những thanh ghi này đóng vai trò là bộ đếmchương trình với 6 bit cao nhất và 2 bit thấp nhất lưu giữ các cờ trạng thái
của bộ vi xử lý Có thể nói ARM2 là bộ vi xử lý 32-bit khả dụng đơn giảnnhất trên thế giới, với chỉ gồm 30.000 transistor (so với bộ vi xử lý lâu hơnbốn năm của Motorola là 68000 với khoảng 68.000 transistor) Sự đơn giảnnhư vậy có được nhờ ARM không có vi chương trình (chiếm khoảng 1/4đến 1/3 trong 68000) và cũng giống như hầu hết các CPU vào thời đó,không hề chứa cache Sự đơn giản này đưa đến đặc điểm tiêu thụ công suấtthấp của ARM, mà lại có tính năng tốt hơn cả 286 Thế hệ sau, ARM3,được tạo ra với 4KB cache và có chức năng được cải thiện tốt hơn nữa
Vào những năm cuối thập niên 80, hãng máy tính Apple Computer
bắt đầu hợp tác với Acorn để phát triển các thế hệ lõi ARM mới Công
Trang 20việc này quan trọng đến nỗi Acorn nâng nhóm thiết kế trở thành một công
ty mới gọi là Advanced RISC Machines Vì lý do đó, người ta thường giảithích ARM là chữ viết tắt của Advanced RISC Machines thay vì AcornRISC Machine Kết quả sự hợp tác này là ARM6 Mẫu đầu tiên được công
bố vào năm 1991 và Apple đã sử dụng bộ vi xử lý ARM 610 dựa trênARM6 làm cơ sở cho PDA hiệu Apple Newton Vào năm 1994, Acorndùng ARM 610 làm CPU trong các máy vi tính RiscPC của họ
Trải qua nhiều thế hệ nhưng lõi ARM gần như không thay đổi kíchthước ARM2 có 30.000 transistors trong khi ARM6 chỉ tăng lên đến35.000 Ý tưởng của nhà sản xuất lõi ARM là sao cho người sử dụng có thểghép lõi ARM với một số bộ phận tùy chọn nào đó để tạo ra một CPU hoànchỉnh, một loại CPU mà có thể tạo ra trên những nhà máy sản xuất bán dẫn
cũ và vẫn tiếp tục tạo ra được sản phẩm với nhiều tính năng mà giá thànhvẫn thấp
2.2 ARM Cortex
Lõi ARM Cortex được chia ra thành ba dòng cấu hình chính, với các
ký hiệu viết tắt lần lượt là: A, R, M Chữ A là viết tắt của Application, lõiARM dòng này hỗ trợ cho các ứng dụng có độ phức tạp cao như: máy tính,điện thoại di động R là viết tắt của Realtime, các ứng dụng cần tính toán
xử lý thời gian thực được hỗ trợ bởi cấu hình này M là Microcontroller,dành cho các ứng dụng công nghiệp và điện tử tiêu dùng
Để đạt được một thiết kế gọn, đơn giản và nhanh, các nhà thiết kếARM xây dựng nó theo kiểu nối cứng không có vi chương trình, giống với
bộ vi xử lý 8-bit 6502 đã từng được dùng trong các máy vi tính trước đócủa hãng Acorn
Tập đoàn ST Microelectronic vừa cho ra mắt dòng STM32, vi điềukhiển đầu tiên dựa trên nền lõi ARM Cortex-M3 thế hệ mới do hãng ARM
20
Trang 21thiết kế, lõi ARM Cortex-M3 là sự cải tiến của lõi ARM7 truyền thống,dòng ARM Cortex là một bộ xử lí thế hệ mới đưa ra một kiến trúc chuẩncho nhu cầu đa dạng về công nghệ Dòng Cortex là một lõi xử lí hoànthiện, đưa ra một chuẩn CPU và kiến trúc hệ thống chung Dòng Cortexgồm có 3 phân nhánh chính: dòng A dành cho các ứng dụng cao cấp, dòng
R dành cho các ứng dụng thời gian thực như các đầu đọc và dòng M dànhcho các ứng dụng vi điều khiển và chi phí thấp STM32 được thiết kế dựatrên dòng Cortex-M3, dòng Cortex-M3 được thiết kế đặc biệt để nâng caohiệu suất hệ thống, kết hợp với tiêu thụ năng lượng thấp, Cortex-M3 đượcthiết kế trên nền kiến trúc mới, do đó chi phí sản xuất đủ thấp để cạnh tranhvới các dòng vi điều khiển 8 và 16-bit truyền thống Các chip ARM7 vàARM9 được các nhà sản xuất bán dẫn thiết kế với giải pháp riêng củamình, đặc biệt là phần xử lí các các ngắt đặc biệt (exception) và các ngắtthông thường (interrupt) Cortex-M3 đưa ra một lõi vi điều khiển chuẩnnhằm cung cấp phần tổng quát, quan trọng nhất của một vi điều khiển, baogồm hệ thống ngắt (interrupt system), SysTick timer (được thiết kế cho hệđiều hành thời gian thực), hệ thống kiểm lỗi (debug system) và memorymap Không gian địa chỉ 4Gbyte của Cortex-M3 được chia thành các vùngcho mã chương trình, SRAM, ngoại vi và ngoại vi hệ thống
Cortex-M3 được thiết kế dựa theo kiến trúc Harvard (bộ nhớ chươngtrình và bộ nhớ dữ liệu tách biệt với nhau), và có nhiều bus cho phép thựchiện các thao tác song song với nhau, do đó làm tăng hiệu suất của chip Dòng Cortex cho phép truy cập dữ liệu không xếp hàng (unaligneddata, vì chip ARM là kiến trúc 32bit, do đó tất cả các dữ liệu hoặc mãchương trình đều được sắp sếp khít với vùng bộ nhớ là bội số của 4byte).Đặc điểm này cho phép sử dụng hiệu quả SRAM nội
Khối trung tâm của STM32 là bộ xử lí Cortex-M3 Bộ xử lí Cortex-M3
là một vi điều khiển được tiêu chuẩn hoá gồm một CPU 32bit, cấu trúc bus
Trang 22(bus structure), đơn vị xử lí ngắt có hỗ trợ tính năng lồng ngắt vào nhau(nested interrupt unit), hệ thống kiểm lỗi (debug system) và tiêu chuẩn bốtrí bộ nhớ (standard memory layout)
2.3 Bộ xử lý Cortex và đơn vị xử lý trung tâm Cortex
Bộ xử lí Cortex (Cortex processor) và đơn vị xử lí trung tâm Cortex (Cortex CPU) sẽ được sử dụng để phân biệt giữa nhúng lõi Cortex hoàn chỉnh và bộ xử lí trung tâm RISC nội (internal RISC CPU)
2.3.1 Đơn vị xử lí trung tâm Cortex (Cortex CPU)
Trung tâm của bộ xử lý Cortex là một CPU RISC 32-bit CPU này cómột phiên bản được đơn giản hóa từ mô hình lập trình (programmer’smodel) của ARM7/9, nhưng có một tập lệnh phong phú hơn với sự hỗ trợtốt cho các phép toán số nguyên, khả năng thao tác với bit tốt hơn và khảnăng đáp ứng thời gian thực tốt hơn
Kiến trúc đường ống (Pipline)
CPU Cortex có thể thực thi hầu hết các lệnh trong một chu kì đơn.Giống như CPU của ARM7 và ARM9, việc thực thi này đạt được với mộtđường ống ba tầng Cortex-M3 khả năng dự đoán việc rẽ nhánh để giảmthiểu số lần làm rỗng (flush) đường ống Trong khi một lệnh đang đượcthực thi, thì lệnh tiếp theo sẽ được giải mã và lệnh tiếp theo nữa sẽ đượclấy về từ bộ nhớ
Phương thức hoạt động này sẽ phát huy hiệu quả tối đa cho mã tuyếntính (linear code), nhưng khi gặp phải một rẽ nhánh (ví dụ cấu trúc lệnhif…else) thì các đường ống phải được làm rỗng (flush)và làm đầy (refill)trước khi mã có thể tiếp tục thực thi
Instrudoction N
Instrudoction N+1
22
Fetch Decode Excute
Fetch Decode Excute
Fetch Decode Excute
Fetch Decode ExcuteExcute
Trang 23Instrudoction N+2
Instrudoction N+3
Mô hình lập trình (Programmer’s model)
CPU Cortex là bộ xử lý dựa trên kiến trúc RISC, do đó hỗ trợ kiếntrúc nạp và lưu trữ (load and store architecture) Để thực hiện lệnh xử lý dữliệu, các toán hạng phải được nạp vào một tập thanh ghi trung tâm, cácphép tính dữ liệu phải được thực hiện trên các thanh ghi này và kết quả sau
đó được lưu lại trong bộ nhớ.Tập thanh ghi này bao gồm mười sáu thanhghi 32-bit Các thanh ghi R0-R12 là các thanh ghi đơn giản, có thể đượcdùng để chứa các biến của chương trình Các thanh ghi R13-R15 có chứcnăng đặc biệt trong CPU Cortex Thanh ghi R13 được dùng như là con trỏngăn xếp (stack pointer)
Thanh ghi này được chia thành nhóm (banked), cho phép CPUCortex có hai chế độ hoạt động, mỗi chế độ có không gian ngăn xếp riêngbiệt Đặc điểm này thường được hệ điều hành thời gian thực (Real TimeOperating System) sử dụng để có thể chạy mã hệ thống của mình trong mộtchế độ bảo vệ Trong CPU Cortex có hai ngăn xếp được gọi là main stack
và process stack Thanh ghi R14 tiếp theo được gọi là thanh ghi liên kết(link register) Thanh ghi này được sử dụng để lưu trữ các địa chỉ trở về khimột cuộc gọi thủ tục (call a procedure) được thực hiện Điều này cho phépCPU Cortex thực hiện rất nhanh việc nhập và thoát khỏi một thủ tục (fastentry and exit to a procedure) Nếu chương trình của bạn gọi sâu vào nhiềulớp chương trình con, trình biên dịch sẽ tự động lưu R14 trên ngăn xếp(stack) Thanh ghi cuối cùng R15 là bộ đếm chương trình (ProgramCounter), nó là một phần của tập thanh ghi trung tâm, nó có thể được đọc
và thao tác giống như bất kỳ thanh ghi khác
Trang 24Hình2.1 Tập thanh ghi trung tâm
Thanh ghi xPSR cũng có thể được truy cập thông qua ba biệt hiệuđặc biệt (special alias names) cho phép truy cập vào các bit trong xPSR
24
Trang 25Năm bit đầu là những cờ mã điều kiện và được gán biệt hiệu(aliased) như thanh ghi trạng thái chương trình ứng dụng Bốn cờ N, Z, C,
V (Negative, Zero, Carry và Overflow) sẽ được thiết lập và xóa tùy thuộcvào kết quả của một lệnh xử lý dữ liệu Bit Q là được sử dụng bởi các lệnhtoán học DPS để chỉ ra rằng một biến đã đạt giá trị tối đa hoặc giá trị tốithiểu của nó
Bản đồ bộ nhớ (Memory Map)
Bộ xử lý Cortex-M3 là một lõi vi điều khiển được tiêu chuẩn hóa,như vậy nó có một bản đồ bộ nhớ cũng được xác định Mặc dù có nhiềubus nội, bản đồ bộ nhớ này là một không gian địa chỉ 4 Gbyte tuyến tính.Bản đồ bộ nhớ này là chung cho tất cả các thiết bị dựa trên lõi Cortex MộtGbyte bộ nhớ đầu tiên được chia đều cho một vùng mã (code region) vàmột vùng SRAM (SRAM region)
Không gian mã được tối ưu hóa để thực thi từ bus I-Code Tương tự,SRAM được nối đến bus D-Code mã có thể được nạp và thực thi từSRAM, các lệnh sẽ được lấy bằng cách sử dụng bus hệ thống, Mã chạy trênSRAM sẽ chậm hơn so với từ bộ nhớ Flash trên chip (on-chip) nằm trongvùng mã
Trang 26Hình 2.1: Bản đồ nhớ
Vùng 0,5 Gbyte tiếp theo của bộ nhớ là vùng ngoại vi trên chip, tất
cả thiết bị ngoại vi được cung cấp bởi nhà sản xuất vi điều khiển sẽ đượcđặt tại vùng này Vùng 1 Mbyte đầu tiên gồm cả SRAM và vùng ngoại viđược định địa chỉ theo bit, sử dụng một kỹ thuật được gọi là dải bit (bitbanding) Không gian địa chỉ 2 Gbyte tiếp theo được phân cho bộ nhớngoài - ánh xạ SRAM và thiết bị ngoại vi (external RAM và externalDevice)
Vùng 0,5 Gbyte cuối cùng được phân cho các thiết bị ngoại vi bêntrong của bộ xử lí Cortex và một khu vực dành cho các cải tiến trong tươnglai của nhà sản xuất chip cho bộ xử lý Cortex Các thanh ghi của bộ xử lýCortex được đặt ở vị trí cố định cho tất cả vi điều khiển dựa trên lõi Cortex
từ 0x00000000-0x1FFFFFFF
Một bus hệ thống bổ sung được sử dụng để truy cập vào không gianđiều khiển hệ thống Cortex trong phạm vi 0x20000000–0xDFFFFFFF và0xE0100000–0xFFFFFFFF Hệ thống gỡ lỗi trên chip của Cortex có thêmmột cấu trúc bus được gọi là bus ngoại vi riêng
Ma trận Bus
26
Trang 27Bus hệ thống và bus dữ liệu được kết nối với vi điều khiển bên ngoàithông qua một tập các bus tốc độ cao được sắp xếp như một ma trậnbus.Cho phép một số đường dẫn song song giữa bus Cortex và các bus chủ(bus master) khác bên ngoài như DMA đến các nguồn tài nguyên trên chipnhư SRAM và các thiết bị ngoại vi Nếu hai bus chủ (ví dụ CPU Cortex vàmột kênh DMA) cố gắng truy cập vào cùng một thiết bị ngoại vi, một bộphân xử nội sẽ giải quyết xung đột và cho truy cập bus vào ngoại vi có mức
ưu tiên cao nhất
Timer hệ thống (System timer)
Lõi Cortex có một bộ đếm xuống 24-bit, với tính năng tự động nạplại (auto reload) giá trị bộ đếm và tạo sự kiện ngắt khi đếm xuống zero Nóđược tạo ra với dụng ý cung cấp một bộ đếm thời gian chuẩn cho tất cả viđiều khiển dựa trên Cortex
Đồng hồ SysTick được sử dụng để cung cấp một nhịp đập hệ thốngcho một RTOS, hoặc để tạo ra một ngắt có tính chu kì để phục vụ cho cáctác vụ được lập lịch
Thanh ghi trạng thái và điều khiển của SysTick trong đơn vị khônggian điều khiển hệ thống Cortex-M3 cho phép chọn các nguồn xung clockcho SysTick Bằng cách thiết lập bit CLKSOURCE, đồng hồ SysTick sẽchạy ở tần số đúng bằng tần số hoạt động của CPU Khi bit này được xóa,SysTick sẽ chạy ở tần số bằng 1/8 CPU
Đồng hồ SysTick có ba thanh ghi Giá trị hiện tại và giá trị tải(current value và reload value) nên được khởi tạo với chu kì đếm Thanhghi trạng thái và điều khiển có một bit cho phép (ENABLE bit) để bắt đầuchạy bộ đếm thời gian và một bit TICKINT cho phép tín hiệu ngắt
Xử lí ngắt (Interrupt Handling)
Một trong những cải tiến quan trọng của lõi Cortex so với các CPUARM trước đó là cấu trúc ngắt của nó và xử lý các ngắt ngoại lệ (exception
Trang 28handling) CPU ARM7 và ARM9 có hai đường ngắt: ngắt nhanh (fastinterrupt-FIQ) và ngắt đa dụng (general purpose interrupt hay còn gọi làinterrupt request-RIQ).
Hai đường tín hiệu ngắt này phục vụ tất cả các nguồn ngắt bên trongmột vi điều khiển, trong khi kỹ thuật được sử dụng là như nhau, nhưngviệc thực hiện lại khác biệt giữa các nhà sản xuất chip
Cortex là khắc phục những hạn chế này và cung cấp một cấu trúcngắt chuẩn cực kỳ nhanh chóng và xác định (extremely fast anddeterministic)
Bảng vector ngắt (Exception Vector Table)
Bảng vector ngắt của Cortex bắt đầu ở dưới cùng của bảng địa chỉ.Tuy nhiên bảng vector bắt đầu tại địa chỉ 0x00000004 thay vì là0x00000000 như ARM7 và ARM9, bốn byte đầu tiên được sử dụng để lưutrữ địa chỉ bắt đầu của con trỏ ngăn xếp (stack pointer)
Mỗi vector ngắt có độ rộng là bốn byte và giữ địa chỉ bắt đầu củatrình phục vụ ngắt tương ứng, 15 vector ngắt đầu tiên là các ngắt đặc biệtchỉ xảy ra trong lõi Cortex, bao gồm reset vector, non-maskable interrupt,quản lý fault và error, debug exceptions và ngắt timer của SysTick
Trong trường hợp của bộ đếm thời gian SysTick, chúng ta có thể tạo
ra một trình phục vụ ngắt bằng cách khai báo một hàm C với tên phù hợp:Sau khi cấu hình xong bảng vector ngắt và định nghĩa các ISR (InterruptService Routine), chúng ta có thể cấu hình NVIC để xử lý ngắt của timerSysTick qua hai bước: thiết lập mức ưu tiên ngắt và sau đó cho phép ngắtnguồn Các thanh ghi NVIC nằm trong vùng điều khiển hệ thống củaCortex-M3 và chỉ có thể truy cập khi CPU đang chạy ở chế độ đặc quyền(privileged mode)
Các ngắt đặc biệt bên trong Cortex được cấu hình thông qua cácthanh ghi điều khiển và thanh ghi cấu hình mức ưu tiên của hệ thống, trong
28
Trang 29khi đó các thiết bị ngoại vi người dùng được cấu hình bằng cách sử dụngcác thanh ghi IRQ (Interrupt Request) STM32 chỉ thực hiện 16 mức độ ưutiên, như vậy chỉ có bốn bit của trường này được dùng.
Ngoài ra NVIC cũng bao gồm các thanh ghi báo chờ (pending) vàkích hoạt (active) cho phép xác định tình trạng hiện tại của một nguồnngắt.Có 16 thanh ghi cài đặt mức ưu tiên ngắt Mỗi thanh ghi được chiathành bốn trường có độ rộng là 8-bit để cấu hình mức ưu tiên, mỗi trường
đó được chỉ định cho một vector ngắt nhất định STM32 chỉ sử dụng mộtnửa của trường này (4-bit có trọng số cao nhất) để thực hiện 16 mức ưu tiênngắt Mặc định các trường này xác định 16 mức độ ưu tiên với mức độ 0 làcao nhất và 15 là thấp nhất Ngoài ra có thể sắp sếp các trường ưu tiênthành các nhóm (group) và nhóm con (subgroup) Điều này không tạothêm bất kì mức ưu tiên nào, nhưng giúp chúng ta dễ quản lý các mức ưutiên khi chương trình ứng dụng có một số lượng lớn các ngắt bằng cách lậptrình trường PRIGROUP trong thanh ghi điều khiển reset và ngắt ở mứcứng dụng Trường PRIGROUP gồm 3-bit cho phép chia trường 4-bit trongcác thanh ghi cài đặt mức ưu tiên thành các nhóm và nhóm con
Giá trị của PRIGROUP là 5 sẽ tạo ra hai nhóm, mỗi nhóm với 4 mức
độ ưu tiên Trong chương trình ứng dụng, chúng ta có thể xác định mộtnhóm các ngắt có mức ưu tiên cao và một nhóm có mức ưu tiên thấp Bêntrong mỗi nhóm chúng ta có thể xác định các mức cho nhóm con như mứcthấp, trung bình,cao và rất cao
Trong trường hợp ngắt của ADC, trước tiên chúng ta phải thiết lậpvector ngắt và cung cấp hàm phục vụ ngắt-ISR:Sau đó, ADC phải đượckhởi tạo
Trang 302.4 Kiến trúc hệ thống ARM Cortex
STM32 gồm nhân Cortex kết nối với bộ nhớ FLASH thông quađường bus lệnh chuyên biệt Các bus dữ liệu(Cortex Data busses) và hệthống(Cortex System busses) được kết nối tới ma trận busses tốc độcao( ARM Advanced High Speed Busses- AHB) SRAM nội kết nối vớiAHB và đóng vai trò là bộ DMA
Các thiết bị ngoại vi được kết nối bằng 2 hệ thống bus ngoại vi tốc
độ cao (APB-ARM Advanced Peripheral Busses) Các bus APBs thôngqua các bus cầu nối AHB-APBs kết nối vào hệ thống AHB Ma trận busAHB sử dụng xung nhịp đồng hồ bằng với xung nhịp của nhân Cortex Tuynhiên thông qua bộ chia tần số AHB có thể hoạt động ở tần số thấp hơnnhằm tiết kiệm năng lượng
APB2 và APB1 hoạt động ở tần số khác nhau, APB2 hoạt động ở72MHz trong khi đó APB1 giới hạn hoạt động ở 36MHz Cả nhân Cortex
và bộ DMA đều đóng vai trò là bus master Khi có tác vụ xử lý song songthì bộ phân xử sẽ quyết định nhân Cortex hay bộ DMA sẽ được quyền truycập vào SRAM, APB1 và APB2
2.4.1 Cấu trúc bộ nhớ
Hệ thống bus nội đa dạng STM32 còn cung cấp 4Gbytes không gian
bộ nhớ liên tục dành cho lập trình.Vì STM32 là là nhân vi điều khiển dựatrên nền tảng Cortex nên phải tuân theo chuẩn phân vùng bộ nhớ củaCortex.Bộ nhớ được bắt đầu từ địa chỉ 0x00000000 On-chip SRAM bắtđầu từ địa chỉ 0x20000000 và tất cả SRAM nội đều được bố trí ở điểm bắtđầu vùng bit band Vùng nhớ thiết bị ngoại vi được ánh xạ từ địa chỉ0x40000000 và ở vùng bit band
Các thanh ghi điều khiển của nhân Cortex được ánh xạ từ địachỉ 0xE0000000 Vùng nhớ dành cho flash được chia nhỏ thành 3 vùng
30
Trang 31Vùng thứ nhất gọi là User Flash bắt đầu từ địa chỉ 0x00000000.
Kế tiếp là System Memory hay còn gọi là vùng nhớ lớn Vùng này
có độ lớn 4Kbytes thông thường sẽ được nhà sản xuất cài đặt bootloader Cuối cùng là vùng nhớ nhỏ bắt đầu từ địa chỉ 0x1FFFFF80 chứa thông tincấu hình dành cho STM32
Bootloader thường được dùng để tải chương trình thông quaUSART1 và chứa ở vùng User Flash
Để giao tiếp với bootloader, ST cung cấp một chương trình chạy ở
PC, chương trình này có khả năng ghi, xóa vùng nhớ ở User Flash Ngoài
ra chúng ta có thể cấu hình các chân bootpins để ánh xạ SRAM nội vào địachỉ 0x00000000, cho phép tải xuống và thực thi chương trình ngay tạiSRAM Điều này làm tăng tốc độ tải chương trình và hạn chế số lần ghivào Flash
2.4.2 Vòng Khóa Pha (Phase Lock Loop)
Khi hệ thống reset STM32 nhận xung nhịp từ bộ tạo dao độngHIS.Tại thời điểm đó các bộ tạo dao động ngoại sẽ bị tắt Bước đầu tiên đểSTM32 hoạt động ở mức xung nhịp cao nhất là bật bộ tạo dao động HSE
và chờ cho đến khi đi vào hoạt động ổn định Bộ tạo dao động ngoại có thểđược kích hoạt thông qua các thanh ghi điều khiển RCC_Control Sẽ có 1bit trạng thái được bật khi chúng đi vào hoạt động ổn định Khi bộ tạo daođộng ngoại hoạt động ổn đinh, nó có thể được chọn là đầu vào cho bộ PLL.Xung nhịp ra được tạo bởi PLL được xác định bằng cách thiết lập các bội
số nguyên trong thanh ghi cấu hình RCC_PLL.Trong trường hợp xungnhịp đầu vào của PLL là 8MHz khi đó cần cấu hình bội số nhân cho PLL là
9 để tạo xung nhịp 72MHz ở đầu ra Khi bộ tạo dao động ngoại và PLLhoạt động ổn định, bit điều khiển trạng thái sẽ bật lên, khi đó dao độngđược tạo bởi PLL sẽ được cấp cho nhân CPU Cortex của STM32
Trang 322.4.3 Cấu hình cho bus
Khi PLL đã được chọn là bộ tạo dao động cho hệ thống, Cortex CPU
sẽ hoạt động ở mức 72MHz Để cho toàn bộ các phần còn lại của hệ thốnghoạt động ở mức tối ưu người dùng cần phải cấu hình AHB và APB thôngqua các thanh ghi cầu nối
2.4.4 Flash Buffer
Khi xem xét kiến trúc hệ thống của STM32 chúng ta có thể thấynhân Cortex kết nối với Flash thông qua đường dữ liệu chuyên biệt I-Bus.Bus dữ liệu này hoạt động cùng tần số với CPU, do vậy nếu CPU lấy daođộng từ PLL thì bus dữ liệu sẽ hoạt động ở mức xung nhịp cao nhất72Mhz Cortex CPU sẽ truy cập vào Flash cứ mỗi 1.3ns
Khi mới hoạt động, nhân STM32 sử dụng bộ tạo dao động nội, do đóthời gian truy cập Flash là không đáng kể Tuy nhiên khi PLL được kíchhoạt và sử dụng để tạo dao động cho CPU, thời gian truy cập vào Flash rấtchậm khoảng 35ns, điều này làm giảm hiệu năng của hệ thống Để CortexCPU hoạt động ở xung nhịp cao nhất 72MHz với thời gian ở trạng thái chờ
là 0 bộ nhớ Flash được trang bị bộ 2 nhớ đệm 64-bit
Hai bộ nhớ đệm này có thể thực thi các lệnh đọc ghi dữ liệu 64-bittrên Flash và chuyển các lệnh 16 hay 32 bit cho nhân Cortex để thực thi
Hệ thống bộ đệm Flash được quản lý bởi các thanh ghi cấu hình Flash.Cùng với việc kích hoạt bộ đệm tiền xử lý,chúng ta phải điều chỉnh sốtrạng thái chờ khi Flash đọc 8 bytes lệnh từ bộ nhớ Flash Độ trễ được thiếtlập như sau:
0< SYSCLK <24MHz 0 waitstate
24< SYSCLK <48MHz 1 waitstate
48<SYSCLK <72MHz 2 waitstate
32
Trang 33Thời gian trạng thái chờ này giữa bộ đệm tiền xử lý với bộ nhớ Flashkhông tác động đến nhân Cortex CPU Khi CPU đang thực thi các lệnh ởnửa đầu của bộ đệm thì các lệnh ở nửa sau của bộ đệm sẽ được tiền xử lý
và tải lên nhân để sử lý ngay tiếp theo, điều này làm tối ưu hóa hiệu năng
xử lý của Cortex CPU
2.4.5 Direct Memory Access
Mặc dù có thể sử dụng chính nhân Cortex để trao đổi dữ liệu giữacác thiết bị ngoại vi và SRAM nội, tuy nhiên chúng ta có thể hoàn toàn sửdụng cơ chế tự động cho việc này với bộ quản lý DMA STM32 có 7 kênhDMA độc lập dùng để chuyển dữ liệu từ: bộ nhớ sang bộ nhớ, ngoại vi tới
bộ nhớ, bộ nhớ tới ngoại vi và ngoại vi tới ngoại vi
Hầu hết các ngoại vi hiện nay không có bộ nhớ FIFO, mỗi bộDMA sẽ lưu dữ liệu vào trong bộ nhớ SRAM Bộ DMA của STM32được thiết kế dành cho truỳên các loại dữ liệu tốc độ cao và nhỏ Quá trìnhtruyền dữ liệu gồm 4 giai đoạn: lấy mẫu và phân xử, tính toán địa chỉ,truy cập đường truyền, và cuối cùng là hoàn tất Mỗi giai đoạn thực hiệntrong 1 chu kỳ lệnh, riêng truy cập đường truyền mất 5 chu kỳ lệnh Ởgiai đoạn truy câp đường truyền thực chất là giai đoan dữ liệu đượctruyền, mỗi từ(word) sẽ mất 3 chu kỳ lệnh
Bộ DMA và CPU đươc thiết kế để cùng lúc có thể hoạt động màkhông tranh chấp tài nguyên lẫn nhau Giữa 2 kênh DMA khác nhau, sẽ có
sự ưu tiên mức hoạt động, dựa trên đó bộ phân xử sẽ quyết định kênhDMA có mức ưu tiên cao hơn sẽ được lấy tài nguyên trước
2.5 Vi điều khiển ARM Cortex STM32F103 RD
Trang 34Hình 2.3: ARM STM32F103RD
Dòng vi xử lý hiệu suất cao STM32F103 có một lõi ARM nhúng và
do đó nó tương thích với tất cả các công cụ và phần mềm cho ARM hiệnđang có trên thị trường Nó là sự kết hợp của ARM Cortex-M3 CPU hiệusuất cao với rất nhiều thiết bị ngoại vi mở rộng và các I/O cải tiến.BộSTM32F103 được dựa trên Bộ vi xử lý 32 bit STM32F103RD được đónggói chuẩn LQFP 64 chân: 64 kB RAM tĩnh và 384kB bộ nhớ chương trìnhFlash Cho phép hoạt động ở tốc độ cao 72MHz.Cho phép nạp chươngtrình hệ thống và chương trình ứng dụng vào chip ngay trên bo mạch thôngqua phần mềm boot-loader Nạp chương cho phép phát triển các hệ nhúngthời gian thực.Có 2 giao diện CAN bus Cộng với 2 bộ truyền thông nốitiếp không đồng bộ UART, bus I2C tốc độ cao và 2 bộ SPI
34
Trang 35Hình 1.3: Sơ đồ khối ARM STM32F103RD
Trang 36Có 16 kênh chuyển đổi A/D (analog/digital) 12 bit, thời gian chuyểnđổi nhỏ hơn 2.44 micro giây(us) Có 6 bộ timer 16 bit (cùng với 4 kênh sosánh, 4 kênh bắt giữ), có 6 đầu ra của bộ điều chế độ rộng xung PWM,đồng hộ thời gian thực (real-time clock) và watchdog Bộ điều khiển vectongắt (VIC) cùng với khả năng định mức ưu tiên và khai báo địa chỉ vectơngắt Lên tới 51 chân vào ra đa mục đích (5V) Tần số tối đa được cho phép
là 72 MHz từ việc lập trình bộ chia tần hay còn gọi là bộ lặp-khoá-pha(PLL) Dao động thạch anh trên chip hoạt động trong dải: 1 MHz-30MHz.chế độ tiết kiệm năng lượng bao gồm chế độ nghỉ (không làm việc)
Trang 37Các cổng I/O được đánh số từ A->D và mức áp tiêu thụ ở 5V Nhiềuchân ngoại có thể được cấu hình như là Input/Output tương tác với các thiết
bị ngoại vi riêng của người dùng như USART hay I2C
Có thể cấu hình các chân này như là nguồn ngắt ngoại kết hợp vớicổng GPIO khác Mỗi cổng GPIO đều có 2 thanh ghi 32-bit điều khiển
Ta có 64-bit để cấu hình 16 chân của một cổng GPIO Mỗi chân củacổng GPIO sẽ có 4 bit để điều khiển: 2 bit sẽ quy định hướng ra vào dữliệu: input hay output, 2 bit còn lại sẽ quy định đặc tính dữ liệu.Để điềukhiển các cổng GPIO chúng ta có 2 thanh ghì cấu hình 32 bit(GPIOx_CRl,GPIOx_CRH),2 thanh ghi dữ liệu 32bit (GPIOx_IDR,GPIOx_ODR)mộtthanh ghi set/reset 32bit( GPIOx_BSRR) và một thanh ghi khóa 32 bit(GPIOx_LCKR)
Các chế độ cho các pin
Sau khi cổng được cấu hình, ta có thể bảo vệ các thông số cấu hìnhbằng cách kích hoạt thanh ghi bảo vệ
Trang 38Trong thanh ghi này, mỗi chân trong cổng đều có một bit bảo vệtương ứng để tránh các thay đổi vô ý ở các 4 bit cấu hình Để kích hoạt chế
độ bảo vệ, ta ghi lần lượt giá trị 1,0,1 vào bit 16:
GPIO->LCKR =tmp; //ghi giá trị 1 vào bít 16
Sau đó đọc lại bit 16 liên tục 2 lần, nếu giá trị trả về lần lượt là 0 và 1thì thiết lập khóa đã hoàn thành
Tmp= GPIOx->LCKR;
Tmp= GPIOx->LCKR;
Để dễ dàng đọc và ghi dữ liệu trên cổng GPIO, STM32 cung cấp 2thanh ghi Input và Output data Kỹ thuật bit banding được hỗ trợ nhằmthực hiện các thao tác bit trên thanh ghi dữ liệu Thanh ghi 32-bitSet/Reset, với 16 bit cao ánh xạ tới mỗi chân của cổng điều khiển reset khiđược thiết lập giá trị 1.Tương tự vậy 16 bit thấp điều khiển Set khi gán giátrị 1
Trang 39Có 32bit và chia thành nhóm 2bit Mode và 2bit CNF một để cấuhình cho một pin làm chân int hay out,analog hay out put push_pull(điệntrở kéo).Như vậy thanh ghi CRL cấu hình cho 8pin(0-7) của một port.
Thanh ghi cấu hình CRH :
Các bit trên thanh ghi GPIOx_CRH
Cũng như thanh ghi GPIOx_CRL nhưng GPIOx_CRH cấu hình cho
8 pin(9-15) của Port
Thanh ghi GPIOx_IDR:Gồm 32bit trong đó chỉ sử dụng 16bit[0-15]
để ghi giá trị đầu vào
Thanh ghi GPIOx_ODR:tương tự như GPIOx_IDR nhưng để ghi giátrị xuất ra
Bộ ADC có độ phân giải 12-bit và tần suất lấy mẫu là 12Mhz Với
18 bộ ghép kênh, trong đó 16 kênh dành cho các tín hiệu ngoại, 2 kênh cònlại dành cho cảm biến nhiệt và vôn kế nội
Trang 40Các thanh ghi được dùng :
ADC_SR: thanh ghi cờ (startus register)
ADC_CRx[x:0-2]: thanh ghi cấu hình (configuration register)
ADC_SMPRx[x:0-2]: thanh ghi tần số lấy mẫu (sample timeregister)
ADC_JOER1: thanh ghi offset
ADC_HTR: thanh ghi đặt ngưỡng áp cao
ADC_LTR: thanh ghi đặt ngưỡng áp thấp
ADC_SQRx: thanh ghi chọn kênh ADC (regular)
40