Professional Documents
Culture Documents
8 khối ngoại vi số có thể được thiết lập để làm các nhiệm vụ:
Các bộ định thời đa chức năng, đếm sự kiện, đồng hồ thời gian
thực, bộ điều chế độ rộng xung có và không có dải an toàn
(deadband)
Các modun kiểm tra lỗi (CRC modunles)
Hai bộ truyền thông nối tiếp không đồng bộ hai chiều, hiện nay
Cypresss đã cho ra đời loại Psoc hỗ trợ chuẩn USB và USB không
dây
Các bộ truyền thông SPI Master hoặc Slave có thể cấu hình được
Có thể kết nối với tất cả các chân vào ra.
• Bộ nhớ linh hoạt trên chíp
Không gian bộ nhớ chương trình Flash từ 4K đến 16K, phụ thuộc vào từng
loại chíp với chu kỳ ghi xóa cho bộ nhớ Flash là 50.000 lần
Không gian bộ nhớ RAM là 256 byte
Chíp có thể lập trình thông qua chuẩn nối tiếp (ISSP)
Bộ nhớ Flash có thể được nâng cấp từng phần
Chế độ bảo mật đa năng, tin cậy
Có thể tạo được không gian bộ nhớ Flash trên chíp lên tới 2,304 byte
• Có thể lập trình được cấu hình cho từng chân của chíp
Các chân vào ra ba trạng thái sử dụng Trigger Schmitt
Đầu ra logic có thể cung cấp dòng 25mA với điện trở treo cao hoặc thấp bên trong
Thay đổi được ngắt trên từng chân
Đường ra tương tự có thể cung cấp dòng tới 40mA
Đường ra đa chức năng có từ 6 đến 44 tùy thuộc vào từng loại chíp
• Xung nhịp của chíp có thể lập trình được
Bộ tạo dao động 24/48MHz ở bên trong (độ chính xác là 2,5%, không cần
thiết bị ngoài)
Có thể lựa chọn bộ dao động ngoài lên tới 24MHz
Bộ dao động thạch anh 32,768 kHz bên trong
Bộ tạo dao động tốc độ thấp bên trong sử dụng cho Watchdog và Sleep
• Ngoại vi được thiết lập sẵn
Bộ định thời Watchdog và Sleep phục vụ chế độ an toàn và chế độ nghỉ
Module truyền thông I2C Master và I2C Slave tốc độ lên tới 400kHz
Module phát hiện điện áp thấp được cấu hình bởi người sử dụng
• Công cụ phát triển
Phần mềm phát triển miễn phí (PSoCTM Designer)
Bộ lập trình và bộ mô phỏng với đầy đủ tính năng
Mô phỏng ở tốc độ cao
Tài liệu lập trình
Hình 2
Ta Click vào Next để tiếp tục tiến hành cài đặt. Quá trình tiếp theo cũng tương tự như khi
cài đặt các phần mền khác, Thư mục cài đặt cài đặt mặc định là: C:\Program
Files\Cypress MicroSystems\PSoC Designer
Tài liệu lập trình
Hình 3
Khi tiến hành cài đặt xuất hiện cảnh báo Software Intallation của của hệ điều hành
Hình 4
Tài liệu lập trình
thì ta Click vào Continue Anyway để tiếp tục cài đặt cho đến khi thành công. Khi quá
trình cái đặt thành công, hệ điều hành sẽ yêu cầu khởi động lại hệ thống
Hình 5
Khi hệ thống khởi động lại ta tiếp tục tiến hành update cho phầm mền Psoc Designer.
Cũng tương tự như khi cài đặt phần trên khi ta Click double vào file update
PSoCDesignerv.4.2Service_Pack3.exe phần mền sẽ tiến hành các quá trình giả nén một
cách tự động
Tài liệu lập trình
Hình 6
Khi giải nén thành công, phần mền hỏi có tiếp tục cài đặt hay không
Hình 7
Click vào Yes để update. Kinh nghiệm cho thấy khi tiến hành update thì ta không nên mở
mới bất cứ phần mền nào khác, kể cả Internet Explorer vì có thể làm ngừng quá trình
update
Tài liệu lập trình
Hình 8
Click Finish để kết thúc quá trình cài đặt.
Như vậy là quá trình cài đặt và update đã thành công. Như đã nói ở trên phầm mền Psoc
Designer hỗ trợ lập trình bằng cả 2 loại ngôn ngữ là Assembly và C. Nhưng để chương
trình hỗ trợ lập trình bằng C thì ta cần tiến hành kích hoạt như sau. Trước tiên kich hoạt
phần mền Psoc Designer bằng cách Click: Start/Programs/Cypress MicroSystems/Psoc
Designer. Khi chương trình khởi động xong sẽ suất hiện giao diện
Hình 9
Tài liệu lập trình
Click vào biểu tưởng Start new project, thì xuất hiện tiếp giao diện
Hình 10
Tại đây ta Click tiếp vào nút Cancel. Tiếp theo trên thanh công cụ của chương trình, theo
đường dẫn: Tools/Compiler
Tài liệu lập trình
Hình 11
Tại ô ImageCraft C compiler license number ta điền key CU92924-2YqQaq rồi tích vào
ô I Accept vào ấn OK để kết thúc
Hình 12
Khi quá trình cài đặt thành công thì xuất hiện giao diện sau
Hình 13
Sau khi cài đặt xong để sử dụng mạch nạp MiniProg thì bạn cần cài đặt driver cho nó.
Khi cắm mạch MiniProg vào cổng USB thì hệ thống yêu cầu cài đặt driver
Tài liệu lập trình
Việc cài đặt driver cũng tương tự như cài driver cho các thiết bị khác. Chỉ có một khác
biệt nhỏ là thư mục chứa bộ cài driver cho mạch MiniProg nằm ở thư mục drivers tại thư
mục cài đặt phần mền Psoc Programmer mặc định là: C:\Program Files\Cypress
MicroSystems\PSoC Programmer\drivers
Tài liệu lập trình
Để kiểm tra quá trình cài driver đã thành công hay chưa bạn vào phần Device manager
của My cumputer
Khi hệ thống nhận được thiết bị USB Mini Programmer thì có nghĩa là quá trình cái đặt
đã thành công và sẵn sàng sử dụng mạch MiniProg để nạp chương trình
Hình 13
Sau khi chương trình khởi động xuất hiện giao diện
Hình 14
Để tạo Project mới ta click vào biểu tượng Start new project . Khi tạo Project mới thì
phần mền sẽ yêu cầu ta đặt tên cho Project và thư mục lưu dữ project
Tài liệu lập trình
Hình 15
Sau khi điền tên của Project và đường dẫn lưu dữ project, Click vào nút Next để tiếp tục
tạo project, do tạo mới project nên phần mền sẽ hỏi có tạo mới thu mực để lưu dữ project
hay không
Hình 16
Click Yes để tạo Project. Tiếp theo ta tiến hành chọn loại ngôn ngữ để lập trình và loại
chip sẽ thiết kế
Tài liệu lập trình
Hình 17
Để lựa chọn loại ngôn ngữ sẽ lập trình trong Project check vào một trong hai ô là : C
hoặc Assembler. Để lựa chọn loại chip sẽ thiết kế ta chọn biểu tượng View Catalog..
Hình 18
Tại cửa sổ này ta có một loạt các loại Chip mà phần mền hỗ trợ thiết kế và các thông số
cơ bản mỗi loại IC. Có các loại Chip cơ bản là: Psoc, USB và WUSB(USB không dây).
Chú ý để chọn chính xác loại IC thì cần phải để ý đến dạng đóng gói của IC. Ví dụ loại
IC CY8C29466 về mặt cấu trúc thì giống hệt nhau nhưng có rất nhiều kiểu đóng gói khác
nhau, loại IC đóng gói dạng DIP 28 chân là: CY8C29466-24PXI. Trong tài liệu này ta
chủ yếu sử dụng loại IC này. Sau khi lựa chọn xong loại IC thiết kế ta ấn vào nút Select
để tiếp tục
Tài liệu lập trình
Hình 19
Ấn Finish để hoàn thành việc lựa chọn loại IC và ngôn ngữ lập trình.
Hình 20
Tài liệu lập trình
Phần mền cung cấp 2 giao diện cơ bản là:Device Editor và Application Editor. Giêng với
giao diện Device Editor có hai phần là: User Module Selection View và Interconnect
View. Với User Module Selection View như hình sẽ cho ta biết các thông tin cơ về các
module mà Chip có thể hỗ trợ và tài nguyên của IC như hình 20. Còn với giao diện
Interconnect View cho ta cái nhìn trực quan về các module đã sử dụng, chúng liên kết với
nhau và liên kết với các port vào ra như thế nào. Cũng như các thông số của Chip và của
các Module. Đây là một trong nhưng giao diện cơ bản nhất để ta tiến hành thiết kế hệ
thống dựa trên Chip Psoc. Về cơ bản giao diện Interconnect View có dạng như hình 21
sau:
Danh Sách
Module
Thông Số
Chung
Của Chip
Thông Số
Module Đã
Sử Dụng Khối Số
Chân Khối
Vào Tương
Ra Tự
Hình 21
Ý nghĩa của mỗi bộ phận trong giao diện trên như sau:
1. Phần thứ nhất là “Chân Vào Ra”. Tại đây cung cấp cho ta đầy đủ các thông tin về
tất cả các chân của IC, mỗi chận có thể được truy xuất một cách riêng biệt. Đối
với mỗi chân ta có thể tiến hành một loạt các thao tác như: Thay đổi tên(việc này
rất thuận tiện cho quá trình thiết kế), Thay đổi cấu hình chân, tức là chận đó thành
chân vào ra số hoặc là chận vào ra tương tự. Do Chip Psoc là loại chip đang năng
có thể làm việc trực tiếp với các tín hiệu tương tự nên các chân khi được nối với
các khối số hay tương tự thì nó sẽ được tự động chuyển thành các loại chân tương
ứng. Ta cũng có thể cho phép hoặc cấm ngắt chân tại đây, cấu hình ngắt chân là
Tài liệu lập trình
loại ngắt sườn âm hay sườn dương tại đây(Vấn đề ngắt chân sẽ được đề cậo cụ thể
hơn ở phần sau)
2. Phần thứ hai là”Thông Số Module Đã Sử Dụng”:Phần này thể hiện các thông số
cơ bản của một Module, ví dụ như Module ADC trong hình trên có các thông số
cơ bản như: Resolution(Độ phân giả), Data Clock(Tốc độ xung đồng bộ),…Đối
với mỗi module thì đây là các thông số rất quan trong và để các module hoạt động
chính xác thì cần phải cài đặt các giá trị cho mỗi thông số thật chính xác và hợp lí.
Để cài đặt các thông số một cách chính xác thì phải nghiên cứu kĩ phần mô tả cảu
mỗi module. Cách thức cài đặt thông số cho một số Module cơ bản sẽ được trình
bày ở phần sau.
3. Phần thứ ba là “Các Thông Số Chung Của Chip”: Tại phần cho phép ta quan sát
cũng như thay đổi các thông số hoạt động cơ bản của Chip như: Điện áp và tần số
hoạt động, sử dụng tần số đồng bộ nội hay ngoài, sử dụng các bộ chia tần số nội
(VC1, CV2, VC3) để làm nguồn tần số cho các module khác,…
4. Phần thứ tư là “Danh Sách Module”: Phần này chứa các Module mà Chip đã hỗ
trợ thiết kế sẵn. Trong phần này chia thành 2 phần là: Phần chứa một nhóm các
loại Module, ví dụ như nhóm: Digital Common sẽ chứa rất nhiều module khác
như :TX8, RX8, UART,..Khi muốn sử dụng module nào cho thiết kế thì ta sẽ vào
đây để lựa chọn Module phù hợp.
5. Phần thứ năm là “Khối Số và Khối Tương Tự”. Như đã trình bày trong phần tổng
quan về Chip Psoc thì Psoc là loại IC cho phép lập trình để thiết các module ngoại
vi. Để thực hiện điều này ta phải dựa vào các khối số và khối tương tự này. Mỗi
một loại Chip Psoc sẽ cung cấp cho ta một số lượng hạn chế các khối số và tương
tự này, như với loại IC CY8C29466 như trên cung cấp cho ta 16 khối số và 12
khối tương tự. Ví dụ như khi ta cần thiết kế module ADC thì ta lấy module ADC
ở trong phần “Danh Sách Module” và ta đặt vào các khối số và khối tương tự mà
Chip cung cấp. Như bộ ADC sử dụng trong hình trên chiến 1 khối số và 1 khối
tương tự. Yêu cầu sử dụng bao nhiêu khối số và tương tự tùy thuộc vào mỗi
Module. Lưu ý là khi lựa chọn bất kì module nào(ngoại trừ module điều khiển
LCD) khi ta ấn nút Select thì ta chỉ mới lựa chọn module đó cho thiết kế chứ
chưa đặt cụ thể module đó vào khối nào, khi đó ta không cài đặt các thông số cho
module đó. Để hoàn thiện quá trình lựa chọn một module cho thiết kế thì ta tiếp
tục ấn vào nút Place User Module
Xin nhắc lại một lần nữa là đối với lập trình Psoc thì ta có 2 phần việc cơ bản là thiết
kế phần cứng và xây dựng ứng dụng. Ví dụ để thiết kế một Project có chức năng lấy
mẫu một tín hiệu tương tự rồi hiển thị giá trị lấy mẫu lên màn hình LCD. Như vậy với
Project này thì ta cần phải dùng 2 module là: Module ADC và Module điều khiển
LCD. Để thực hiện điều này thì ta sử dụng cửa sổ Device Editor như đã trình bày ở
phần trên để lấy các module cấn sử dụng ra, đặt vào các khối cần thiết, thiết lập các
thông số cho mỗi module. Nhưng làm sao để cho các module này hoạt động và chúng
liên kết, tương tác với nhau ra ra sao? Để trả lời câu hỏi này ta sẽ sử dụng giao diện
Application. Để chuyển sang cửa sổ Application Editor hay Device Editor thì ta Click
vào các biểu tượng tương ứng và .
Tài liệu lập trình
Hình 22
Nói chung đối với chương trình viết bằng C thì phần lớn mã nguồn của chương trình nằm
trong file main.c và được đặt trong hàm Main, bắt đầu từ dòng text “// Insert your main
routine code here.” Về cơ bản thì chương trình có cấu trúc giống với một chưong trình C
chuẩn, tức là chưong trình có một hàm main, các hàm con được viết ngoại hàm main và
được gọi trong hàm main. Các cấu trúc vòng lặp(for hay ưhile) các câu lênh điều khiển,
lựa chọn(if, switch), các lệnh sử lí string, phép toán,… hoàn toàn giống các hàm của C
mà ta đã được làm quen trong các môn học tại trường. Ngoài ra vì phải làm việc với các
module ngoại vi khác nên ta cần phải sử dụng một số hàm khác mà mỗi module đã cung
cấp sẵn gọi là các API(Application Programming Interface) của các module. Để biết mỗi
module cung cấp bao nhiêu API, khai báo và sử dụng các API như thế nào thì trong phần
Datasheet của mỗi module có mô tả rất chi tiết. Đề minh họa cách xây dựng ứng dụng
trong phần Application ta sẽ xem xét ví dụ xây dựng Project hiển thị lên màn hình LCD
giá trị lấy mẫu của bộ ADC. Sau khi thiết kế phần cứng bằng việc lựa chọn và cài đặt các
module trong phần Device Editor. Ta bắt đầu xậy dựng ứng dụng như sau:
Tài liệu lập trình
Hình 23
Mặc dù ta đã cài đặt các thông số cho các moduele ở trong phần Device Editor nhưng đề
các module thực sự hoạt động thì ta cần khởi động chúng bằng các lệnh:
int iData;
LCD_Start();//Khoi tao module dieu khien LCD
M8C_EnableGInt; // Cho phep ngat toan cuc
ADCINC12_Start(ADCINC12_HIGHPOWER); // Khoi tao bo ADC
ADCINC12_GetSamples(0); // Cai dat de bo ADC lay mau lien tuc
Và khai báo biến iData đề lưu dữ giá trị lấy mẫu của bộ ADC. Phần tiếp theo của chương
trình là sử dụng vòng lặp liên tục để kiểm tra dữ liệu của ADC đã sãn sàng hay chưa rồi
đọc vào biến iData rồi hiển thị lên màn hình LCD bằng hàm con Show do ta tự xậy dựng.
for(;;){
while(ADCINC12_fIsDataAvailable() == 0); // lặp cho đến khi ADC có dữ kiệu
ADCINC12_ClearFlag(); // Xóa cờ của ADC
iData=ADCINC12_iGetData(); // Đọc giá trị từ ADC vào biến iData
Show(iData) ;//Gọi hàm Show
}
Tài liệu lập trình
Hàm Show
void Show(int input)
{
char string[3];//Khai bao mot string
itoa(string,input,10);//Convert mot so nguyen thanh mot string
LCD_Position(0,4);//Hien thij gia tri do duoc tai vi tri 0,4
LCD_PrString(string);
}
}
void Show(int input)
{
char string[3];//Khai bao mot string
itoa(string,input,10);//Convert mot so nguyen thanh mot string
LCD_Position(0,4);//Hien thij gia tri do duoc tai vi tri 0,4
LCD_PrString(string);
}
Như vậy sau khi tìm hiểu 2 phần Device Editor và Application Editor thì ta có thể tóm tắt
quy trình thiết kế một Project bằng Psoc như sau:
1. Lựa chọn loại IC và ngôn ngữ lập trình phù hợp
2. Lựa chọn các module cần thiết cho Project, tiến hành cài đặt các thông số phù hợp
cho mỗi module.Có thể phải kết nối phần cứng giữa các module, ví dụ khi lấy đầu
vào của bộ ADC từ bộ khuếch đại đo INSAMP thì ta cần phải nối đầu vào của bộ
Tài liệu lập trình
ADC với khối đầu ra của bộ INSAMP. Ta tiến hành các việc này tại phần Device
Editor
3. Xậy dựng ứng dụng trong Application Editor bằng các hàm API của mỗi module
và các thư viện hàm của chương trình C. Nói chung một hàm Main của chương
trình Psoc có cấu trúc như sau:
Void main()
{
//Khởi động các module bằng các hàm API của mỗi module
//Sử dụng các hàm API của các module để tương tác với mỗi module
tương ứng
//Sử dụng các hàm của ngôn ngữ lập trình để tương tác giữa các module và
xây dựng cấu trúc của chương trình
}
Chương trình Psoc Programmer cung cấp hai chế độ hoạt động là:
Power Cycle: Chế độ này cho phép ta nạp chương trình không cân nguồn
ngoài
Reset: Khi sử dụng chế độ này thì ta sử dụng nguồn ngoài để nạp chương trình
3.Các ví dụ cụ thể