PIC Vietnam

Go Back   PIC Vietnam > Microchip PIC > PIC32 - Bộ điều khiển tín hiệu số 32-bit

Tài trợ cho PIC Vietnam
Trang chủ Đăng Kí Hỏi/Ðáp Thành Viên Lịch Bài Trong Ngày Vi điều khiển

PIC32 - Bộ điều khiển tín hiệu số 32-bit Microchip công bố sản phẩm vi xử lý 32-bit ngày 06/11/2007

Trả lời
 
Ðiều Chỉnh Xếp Bài
Old 19-01-2008, 03:11 PM   #1
falleaf
PIC Bang chủ
 
falleaf's Avatar
 
Tham gia ngày: May 2005
Bài gửi: 2,631
:
Send a message via Yahoo to falleaf
Những khái niệm cơ bản

Tất nhiên để nghiên cứu PIC32, chúng ta cần có tối thiểu hai tài liệu sau:
[1] PIC32MX Family Datasheet: http://ww1.microchip.com/downloads/e..._v1_61143A.pdf
[2] PIC32 Family Reference Manual- All Chapters: http://ww1.microchip.com/downloads/e...l_Chapters.zip

Mở tài liệu [1] ra, ngay những trang đầu tiên chúng ta đã có thể thấy hàng loạt những từ ngữ mới chưa được nhắc đến ở dsPIC hay PIC. Có thể một số bạn mới làm quen cũng không thấy thân thuộc lắm với mấy từ ngữ của dsPIC hay PIC, các bạn muốn lao vào học PIC32 luôn!? Ok, cũng không sao. Nói chung là trong bài viết này F sẽ liệt kê ra đây các từ ngữ mà F cho rằng các bạn có thể sẽ cần phải hỏi, sẽ cần phải giải đáp, sẽ cần...

Sau này các từ ngữ này sẽ được chuyển lên để làm kho định nghĩa trên www.tudiencongnghe.com, nhưng trong thời gian chuẩn bị phát triển từ điển công nghệ, F cũng sẽ triển khai các định nghĩa và giới thiệu ở đây, đồng thời cũng sẽ nhờ các thành viên bổ sung, góp ý để hoàn thiện bài viết. Nó là những cơ sở quan trọng để chúng ta có một cái nhìn chung và tổng quan về PIC32 nói riêng và vi điều khiển, vi xử lý nói chung.

Chỉ cần mở trang đầu tiên của datasheet, các bạn sẽ gặp ngay một số khái niệm sau:

MIPS32 M4K 32-bit Core: Xem file đính kèm

5-Stage Pipeline: 5 tầng pipeline

MIPS16e:
User and Kernel Mode:
Prefetch Cache Module:

Boot Flash Memory:
Multi Power Management:
Fail-Safe Clock:
JTAG:
Unintrusive Hardware-Based Instruction Base:
IEEE Std 1149.2 Compatible (JTAG) Boundary Scan:

DMA Controller: Direct Memory Access Controller
Đây là chức năng truyền nhận giữa một nguồn và một đích nào đó mà không cần đến xử lý của CPU. Có nghĩa là CPU không làm gì ở đây cả.
IrDA encoder and decoder:


Bây giờ, chúng ta lại đi qua một loạt các ký hiệu chân. Các bạn chú ý xem trang 11 của [1], đó là bảng giải thích chi tiết các ký hiệu trên các chân. Vậy chúng ta không còn ngại gì nữa nếu không biết chân nào dùng làm gì thì chúng ta chỉ cần tra cứu trang 11 này là xong.

Cách học mà F đã đề nghị lâu nay, đó là học làm sao để sử dụng tốt các module và các tính năng của chip, còn việc tự nghiên cứu, vận dụng, sáng tạo, có lẽ chúng ta để dành cho các nhà thiết kế chuyên nghiệp (tất nhiên cũng chính là các bạn sinh viên bây giờ, sau khi ra trường). Vả lại, bài viết này cũng không nhằm giúp ích cho các nhà thiết kế chuyên nghiệp, vẫn chỉ dành cho những người mới làm quen với PIC32 mà thôi.

Cách đọc DATASHEET và MANUAL PIC32:

Thực ra điều này không có gì mà phải viết vào, nhưng F vẫn viết vào đây bởi vì có một số bạn "hơi lười" và ngại đọc tiếng Anh.

Cuốn DS và Manual được tổ chức thành từng chương, mỗi chương là một khối chức năng của PIC32. Các chương đầu giới thiệu chủ yếu về kiến trúc, dao động, nguồn,... đây là những yếu tố để một con PIC32 có thể chạy được. Các phần sau giới thiệu các tính năng và chỉ rõ chi tiết những tính năng nào ràng buộc tính năng nào.

Tuy vậy, một người mới học khi cầm vào cuốn DS hay Manual sẽ bị dội, bởi vì khi mở nó ra, những dòng đầu tiên mô tả rất ngắn gọn, sau đó thì hàng loạt thanh ghi, hàng loạt bảng biểu...

Thực chất cuốn DS và Manual dùng cho những người đã làm việc quen thuộc với PIC, họ cần tra cứu nhanh và lướt qua là đã nắm được nội dung. Do vậy, mọi việc họ cần chỉ là vị trí những thanh ghi, và chi tiết các thanh ghi đó để họ tương tác là xong.

Thế nhưng người mới học, các bạn hãy bỏ qua những trang đó bởi vì nó thực sự là một thứ rối bời không cần thiết. Các bạn hãy đi ngay vào phần phía sau (khoảng nửa cuối của chương), đó là phần mô tả tính năng, hoạt động. Nó sẽ hướng dẫn ta từng bước về cấu hình để một chức năng hoạt động như thế nào.

Mọi bước đều rất cụ thể và rõ ràng, thậm chí có một số source code mẫu để chúng ta hình dung.

Sau khi đọc các mục phía sau này, hiểu tính năng của nó, hiểu cách nó tổ chức thanh ghi, thanh ghi nào dùng vào việc gì, bit nào dùng vào việc gì (chỉ cần nhớ tên, tên của nó rất dễ gợi nhớ trong tiếng Anh), sau đó chúng ta mới tra ngược lên xem chi tiết việc cấu hình từng bit đó ra sao.

Như vậy, đọc DS và Manual của PIC32, với những người mới học, các bạn hãy đọc từ giữa chương tới hết, rồi hãy tra cứu ngược để hiểu rõ hơn.


Những câu hỏi?

Phân biệt SYSCLK và PBCLK?

PIC32 sử dụng core của MIPS, vậy MIPS là gì? Trên đời này còn có bao nhiêu core nữa? Tìm hiểu chúng thế nào?

Tại sao PIC32MX lại có tới 2 cặp chân PGC1/PGD1 và PGC2/PGD2? Nó là chức năng ICSP mà tại sao lại phải dùng tới hai cái?

Một số người làm việc với các vi xử lý khác như TI và ARM đã quen với JTAG, vậy JTAG là gì? Enhanced JTAG (EJTAG) là gì? JTAG Boundary Scan là gì? Dùng ICSP thay cho JTAG và ngược lại được không? So sánh giữa JTAG và ICSP?




Chúc vui

thay đổi nội dung bởi: falleaf, 23-01-2008 lúc 05:36 PM.
falleaf vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 19-01-2008, 03:12 PM   #2
falleaf
PIC Bang chủ
 
falleaf's Avatar
 
Tham gia ngày: May 2005
Bài gửi: 2,631
:
Send a message via Yahoo to falleaf
Các tính năng cơ bản của PIC32MX

Phần này liệt kê và giải thích các tính năng, không cần hiểu về mặt kỹ thuật chi tiết, chỉ cần hiểu nó hoạt động như thế nào về mặt nguyên lý, nó là cái gì? Thế là đủ. Sau rồi ta sẽ nghiên cứu từng cái và xử lý chi tiết từng cái sau. Chúng ta mới học nên cái gì cũng từ từ, không cần vội vàng làm gì cho nó mệt. Theo quan điểm của F đó là cứ lèng xèng thôi và từ từ thôi để làm cho nó chắc chắn một chút và có bài bản vẫn hay hơn.

Dưới đây là đặc tính của PIC32 được liệt kê trong trang 9 của Datasheet:

1.5 DMIPS/MHz
Oscilator Options and Features:

Interrupt Sources/Vectors: Ngắt
Nhiều người hiểu lầm rằng ngắt là một chương trình con, khi có ngắt thì CPU sẽ rẽ nhánh sang xử lý ngắt rồi quay lại chỗ cũ. Nhưng hiểu một cách chính xác hơn, đó là nếu như ngắt có mức ưu tiên cao hơn mức ưu tiên hiện tại của CPU, thì CPU mới rẽ nhánh chuyển qua ngắt (ngắt được tổ chức thành các địa chỉ ngắt khác nhau, dạng bảng, nên gọi là các vector ngắt). Và việc có quay trở lại vị trí xảy ra ngắt hay không, không phải là bắt buộc, mà hoàn toàn do sự điều khiển của phần mềm. Chính vì lầm lẫn điều này cho nên khi lập trình nhiều người gặp sự cố lỗi với ngắt mà không hiểu tại sao. Ý muốn của chúng ta là ngắt sẽ quay trở lại vị trí ban đầu sau khi thực hiện xong nhiệm vụ trong ngắt, như vậy để làm việc này, chúng ta sẽ cần phải có một số thao tác trước khi vào ngắt và sau khi ra ngắt. Việc có nhiều nguồn ngắt hơn (96 nguồn ngắt) khiến PIC32MX phải phân chia ra nhiều mức ưu tiên ngắt để quản lý (7 mức) và mỗi mức lại có 4 mức ưu tiên thấp hơn, vị chi có khoảng 28 mức ưu tiên ngắt trong PIC32MX.
DMA Channels:
paired timer:

I/O Ports:
Tính năng I/O nhìn chung không thay đổi mấy so với dsPIC, tuy nhiên việc có thêm các thanh ghi tận cùng là CLR, SET và INV giúp việc thao tác với các bit của TRISx, PORTx, LATx hiệu quả hơn. Đặc biệt là các thanh ghi tận cùng INV (Invert) để đảo giá trị bit của thanh ghi tương ứng.

Vd: LATCINV = 0x0001;
Nghĩa là đảo giá trị bit hiện tại của PORTC bit 0. Không cần quan tâm rằng giá trị hiện tại của PORTC bit 0 là gì. Nếu nó là 0 thì sẽ bị chuyển thành 1, và nếu nó là 1 thì sẽ bị chuyển thành 0. Điều này có lợi cho hơn khi điều khiển bit.
ADC 10-bit:

Quá trình chuyển đổi A/D được chia làm hai giai đoạn như hình sau:



Giai đoạn 1:

Giai đoạn 2:
Input Change Interrupt Notification:
Enhanced UART:
JTAG Boundary Scan:
JTAG Debug and Program:
Instruction Trace:
Hardware Break Point:
Internal LDO:
Resets:

Chúc vui

thay đổi nội dung bởi: falleaf, 24-01-2008 lúc 03:36 PM.
falleaf vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 19-01-2008, 03:13 PM   #3
falleaf
PIC Bang chủ
 
falleaf's Avatar
 
Tham gia ngày: May 2005
Bài gửi: 2,631
:
Send a message via Yahoo to falleaf
Giới thiệu các công cụ làm việc với PIC32

Cái này đã được giới thiệu rồi, nhưng nó thiên về buôn bán quá nên cũng hạn chế viết.

Chúc vui
falleaf vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 19-01-2008, 03:14 PM   #4
falleaf
PIC Bang chủ
 
falleaf's Avatar
 
Tham gia ngày: May 2005
Bài gửi: 2,631
:
Send a message via Yahoo to falleaf
Học lập trình cơ bản

Trong giới hạn bài viết này, chúng ta tìm hiểu trực tiếp việc lập trình PIC32 dùng trình dịch C32 của Microchip và môi trường soạn thảo MPLAB v8.0 trở lên làm cơ bản. Những nội dung khác chúng ta sẽ khảo sát sau.


1. Tìm hiểu các hàm trong plib.h

Các "hàm" trong C32 được định nghĩa dưới dạng #define, bởi đôi lúc việc thực hiện những công việc này nó quá đơn giản, và người ta đã viết thành các định nghĩa (#define) như kiểu "macro" của C vậy. Việc đơn giản là chúng ta sẽ gọi trực tiếp các định nghĩa này như gọi một "hàm" vậy. Chúng ta sẽ tìm hiểu kỹ tại sao người ta lại viết như vậy, và quy trình của nó như thế nào một cách chi tiết hơn ở các phần bên dưới.

1.1. Chức năng I/O (ngày 23/01/2008)

Chức năng I/O các bạn xem bài tập PIC32Test.zip mà F gửi, có lẽ từ đó các bạn sẽ có thể nắm được ngay nó làm gì, như thế nào. F viết chú thích vào trong đó. (các bạn nhớ mở cả workspace, file .mcp). F đã đặt cái SFR view sẵn trên đó, các bạn kéo nó xuống tới chỗ PORTD, TRISD, LATD, ODCD để xem sự thay đổi của các thanh ghi này, vì chúng ta đang tương tác PORTD (các LEDs trên PIC32 Starter Kit cắm ở RD0, RD1, RD2)

Ngoài ra, F còn chép y nguyên lại một đoạn chương trình mẫu trong PIC32 Starter Kit User Guide, đồng thời sửa các lệnh của nó để so sánh cách viết, ngoài ra F cũng ghi chú những F cần thiết trong đó. Hy vọng có thời gian sẽ mở riêng ra một luồng về các chức năng của PIC32 riêng, còn giờ thì chỉ làm những việc lặt vặt được thôi.


1.2. Chức năng ADC

Code:
#define OpenADC10(config1, config2, config3, configport, configscan) (mPORTBSetPinsAnalogIn(configport), AD1CSSL = ~(configscan), AD1CON3 = (config3), AD1CON2 = (config2), AD1CON1 = (config1) )
Code:
#define ConfigIntADC10(config) ( mAD1ClearIntFlag(), mAD1SetIntPriority(((config) & 7)), mAD1SetIntSubPriority((((config) >> 4) & 3)), mAD1IntEnable(((config) >> 15)) )
Code:
#define EnableADC10() (AD1CON1SET = _AD1CON1_ON_MASK)
Code:
#define AcquireADC10() (AD1CON1SET = _AD1CON1_SAMP_MASK)
Code:
#define BusyADC10() (AD1CON1bits.DONE)
Xem cái đoạn code dưới đây xong, chắc chúng ta cũng hiểu cách plib.h nó làm cái gì rồi. Thực ra những công việc định nghĩa với plib.h chỉ là một việc làm thuần túy giúp chúng ta viết những đoạn code cho ngắn gọn hơn một tí, và cho nó gợi nhớ hơn một tí.
Code:
typedef union {
  struct {
    unsigned DONE:1;
    unsigned SAMP:1;
    unsigned ASAM:1;
    unsigned :1;
    unsigned CLRASAM:1;
    unsigned SSRC0:1;
    unsigned SSRC1:1;
    unsigned SSRC2:1;
    unsigned FORM0:1;
    unsigned FORM1:1;
    unsigned FORM2:1;
    unsigned :2;
    unsigned SIDL:1;
    unsigned FRZ:1;
    unsigned ON:1;
  };
  struct {
    unsigned :5;
    unsigned SSRC:3;
    unsigned FORM:3;
    unsigned :2;
    unsigned ADSIDL:1;
    unsigned :1;
    unsigned ADON:1;
  };
  struct {
    unsigned w:32;
  };
} __AD1CON1bits_t;
extern volatile __AD1CON1bits_t AD1CON1bits asm ("AD1CON1") __attribute__((section("sfrs")));
Code:
#define ConvertADC10() (AD1CON1CLR = _AD1CON1_SAMP_MASK)
Code:
#define ReadActiveBufferADC10() ( AD1CON2bits.BUFS )
Code:
#define ReadADC10(bufIndex) (*(&ADC1BUF0+((bufIndex) * 4)))
Tại sao lại có cái công thức loằng ngoằng như thế này ở ReadADC10(bufIndex)? Vậy giá trị bufIndex khi đưa vào sẽ là giá trị gì?

Code:
#define SetChanADC10(config) (AD1CHS = (config))
Code:
#define CloseADC10() ( mAD1IntEnable(0), AD1CON1CLR = _AD1CON1_ON_MASK )
Câu hỏi đặt ra là, một quy trình tương tác chức năng ADC của PIC32 sẽ được diễn ra theo thứ tự nào? Có những vấn đề gì cần quan tâm?


Chúc vui

Tài liệu tham khảo:
[1] File plib.h trong thư mục C:\Program Files\MPLAB C32\libscr\include
File Kèm Theo
File Type: zip PIC32Test.zip (124.8 KB, 184 lần tải)

thay đổi nội dung bởi: falleaf, 23-01-2008 lúc 04:03 PM.
falleaf vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 19-01-2008, 03:16 PM   #5
falleaf
PIC Bang chủ
 
falleaf's Avatar
 
Tham gia ngày: May 2005
Bài gửi: 2,631
:
Send a message via Yahoo to falleaf
Các bài tập ứng dụng

Có thể khi mạng lưới phân phối của R&P đã được thiết lập, mọi người đều có thể mua các công cụ nghiên cứu phát triển về PIC32, chúng ta sẽ có thể tiến hành các cuộc thi thiết kế, hoặc là tích lũy từ các vấn đề mà các bạn thảo luận từ các luồng khác để đưa vào đây, trở thành những bài tập căn bản quan trọng và đầy đủ để những người học sau có thể học nhanh.

Chúc vui
falleaf vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 19-01-2008, 03:17 PM   #6
falleaf
PIC Bang chủ
 
falleaf's Avatar
 
Tham gia ngày: May 2005
Bài gửi: 2,631
:
Send a message via Yahoo to falleaf
Học và sử dụng các tính năng

Có lẽ các tính năng của PIC32 sẽ được phân tích và giới thiệu trong các luồng chi tiết. Bài viết này sẽ chỉ đến các luồng đó.

Chúc vui
falleaf vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 23-09-2010, 10:57 AM   #8
komikumi
Nhập môn đệ tử
 
Tham gia ngày: Sep 2010
Bài gửi: 10
:
Trích:
Nguyên văn bởi falleaf View Post
Những câu hỏi?

Một số người làm việc với các vi xử lý khác như TI và ARM đã quen với JTAG, vậy JTAG là gì? Enhanced JTAG (EJTAG) là gì? JTAG Boundary Scan là gì? Dùng ICSP thay cho JTAG và ngược lại được không? So sánh giữa JTAG và ICSP?
Xin được trả lời bác về câu hỏi này.

1> JTAG: Joint Test Action Group, là 1 công cụ được sinh ra với mục đích ban đầu phục vụ cho việc test phần cứng (kết nối giữa chíp và PCB). JTAG hiện nay được chuẩn hóa bởi tài liệu IEEE 1149.1. Thành phần chủ yếu của JTAG bao gồm 1 số tín hiệu: TCK, TMS, TDI, TDO và TRST (option).

2> Boundary Scan: Mỗi con chíp điều có các pin đưa ra ngoài. Nếu chíp có tích hợp JTAG thì giữa phần logic core của chíp và pad IO người ta chèn thêm 1 thành phần của JTAG được gọi là scan-cells. Boudary Scan là cơ chế bao gồm các thanh ghi dịch với chức năng cho phép các scan-cells này điều khiển các IO pad (ví dụ set mức logic cho pin, hoặc đọc trạng thái logic của pin) một cách trực tiếp mà không phải thông qua logic core của chíp.

3> Với những chip đơn giản thì cũng không cần phải tích hợp JTAG vào làm gì. Nhưng đối với những chíp có cấu hình phức tạp thì việc add JTAG vào là điều cần thiết. Một ví dụ điển hình là trong công nghiệp điện tử người ta sản xuất hàng nghìn board mạch in có gắn các linh kiện. Để có thể phát hiện lỗi cho tất cả các sản phẩm đó cần phải có một phương pháp test nhanh và hiệu quả (các chip trên PCB sẽ được kết nối theo 1 chuỗi gọi là daisy-chained). Công nghệ bán dẫn phát triển kéo theo các chíp ngày càng trở nên tinh vi hơn về độ phức tạp. Nếu trên 1 PCB có gắn vài chục con chíp có package BGA thì phương pháp test truyền thống dùng đầu dò tỏ ra không khả thi. Đó cũng là câu trả lời vì sau các chíp ARM và một số các chíp CPU khác hiện nay người ta điều tích hợp JTAG vào. Mỗi chíp sẽ được nhà sản xuất cung cấp 1 tài liệu đặc tả thông tin về JTAG thông qua file gọi là BSDL. Chương trình test sẽ dựa vào file này để thực hiện các phép thử phù hợp đối với con chíp.
Đôi khi ta thấy 1 con chíp có tích hợp các chân JTAG và có cảm giác quá rờm rà khi thiết kế PCB nhưng hiệu quả thật sự của JTAG đã được nêu như phần trên.

4> Enhanced JTAG (EJTAG) là gì ?
Không chỉ dừng ở mục đích test phần cứng, phiên bản cải tiến của JTAG thêm vào tín hiệu điều khiển như nSRST (system reset) nhằm thực hiện reset hệ thống (CPU, DDRAM, eth PHY...) với chủ ý thêm chức năng debug về phần mềm. EJTAG hỗ trợ các chức năng như : run control, single-step execution, breakpoints on both data and instructions, real-time trace (optional) and direct memory access. Hiện nay, tất cả các chíp ARM điều hỗ trợ EJTAG.

5> ICSP (In Circuit Serial Programming) : Đọc tên gọi ta cũng hiểu được ý nghĩa và tầm sử dụng của nó (đơn thuần chỉ là nạp firmware và debug). Vì thế cũng không cần phải so sánh ICSP và JTAG làm gì.
komikumi vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Trả lời


Quyền Sử Dụng Ở Diễn Ðàn
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is Mở
Smilies đang Mở
[IMG] đang Mở
HTML đang Tắt

Chuyển đến


Múi giờ GMT. Hiện tại là 05:32 PM.


Được sáng lập bởi Đoàn Hiệp
Powered by vBulletin®
Page copy protected against web site content infringement by Copyscape
Copyright © PIC Vietnam