1. Trang chủ
  2. » Kỹ Thuật - Công Nghệ

PSP và ứng dụng

29 205 2
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 29
Dung lượng 449,65 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

PSP và ứng dụng

Trang 1

Với  sự  tham  gia  của  khối  PSP,  các  chức  năng  giao  tiếp  của  vi  điều  khiển  PIC  trở  nên hoàn thiện hơn, giống như một máy tính, với các cổng nối tiếp và một cổng song song. Ta 

có thể tạm so sánh các khối giao tiếp nối tiếp của PIC như cổng COM hoặc cổng USB của máy tính, còn khối giao tiếp song song 8 bit PSP có thể so sánh như cổng LPT (cổng song song) của máy tính. 

Một điểm tương đồng giữa PSP và các giao tiếp nối tiếp khác trong vi điều khiển PIC, 

đó là PSP cũng là giao tiếp theo mô hình master‐ slave. Một master được phép điều khiển các giao tiếp với một hoặc nhiều slave. master có nhiệm vụ đưa ra các yêu cầu giao tiếp, ví 

dụ như giao tiếp với slave nào, nội dung giao tiếp, định hướng chiều dữ liệu (đọc hay ghi 

dữ  liệu),  …  và  slave  có  nhiệm  vụ  đáp  ứng  các  yêu  cầu  đó  của  master.  Tùy  theo  phương thức  giao  tiếp,  ta  có  các  qui  định  riêng  về  cách  “ra  lệnh”  của  master,  cách  đáp  ứng  của slave cũng như cách truyền nhận dữ liệu. 

PSP cũng có các yêu cầu riêng về hoạt động giao tiếp. Tuy nhiên, có một điểm cần lưu ý 

ở đây, là PSP của vi điều khiển PIC chỉ hoạt động được ở vai trò của một slave. Các hoạt động giao tiếp trên PSP sẽ được điều khiển hoàn toàn bởi một master. 

Trên đây là một vài điểm sơ lược về PSP. Trong phần tiếp theo ta sẽ đi sâu vào cấu tạo 

và hoạt động của PSP, cũng như xây dựng một số ứng dụng cơ bản cho PSP. 

 

Trang 2

1.1 Cấu tạo phần cứng của PSP trong vi điều khiển PIC16F877A 

PSP được tích hợp trong khá nhiều vi điều khiển PIC. Tùy theo vi điều khiển mà cách 

bố trí các chân chức năng và các thanh ghi điều khiển cho PSP trong một vi điều khiển có thể khác nhau, tuy nhiên về bản chất, cấu tạo của PSP là không đổi. Trong bài này, vi điều khiển PIC16F877A được lựa chọn để tìm hiểu và xây dựng các ứng dụng cho PSP. 

0.  

Khi được cho phép hoạt động ở chế độ PSP, các chân điều khiển nêu trên sẽ không còn 

được cho phép hoạt động ở chế độ I/O (port D) hoặc chế độ I/O Analog (port E) nữa. Lúc  này, port D và port E sẽ được điều khiển bởi các thiết bị ngoại vi khác (một vi điều khiển 

khác đóng vai trò là một master chẳng hạn) để truyền nhận dữ liệu song song 8 bit. Vai trò 

cụ thể của chúng như sau: 

‐ Port D là ngõ xuất nhập dữ liệu và hoàn toàn được điều khiển bởi khối PSP. Vai trò  của thanh ghi TRISD trong trường hợp này sẽ được bỏ qua.  

‐ Port E là các chân điều khiển và phải được thiết lập các chế  độ hoạt động thích hợp, 

đó là chế độ ngõ vào Digital. Chế độ này được điều khiển bởi thanh ghi TRISE và  thanh ghi ADCON1. 

Bên cạnh các chân điều khiển, PSP còn được hỗ trợ ngắt PSP và các bit trạng thái dùng 

để điều khiển hoạt động của khối. Các thành phần hỗ trợ này được trình bày trong bảng sau(ta chỉ quan tâm tới các bit điều khiển liên quan tới PSP): 

Thanh 

ghi 

Địa  chỉ 

TRISE 

 

89h 

6  OBF: Output Buffer Full status bit  OBF = 1 : Có dữ liệu ở bộ đệm ngõ ra 

Trang 3

5  IBOV : Input Buffer OVerflow detect bit  IBOV = 1 : bộ đệm dữ liệu ngõ vào bị tràn  IBOV = 0 : bộ đệm dữ liệu ngõ vào không bị tràn 

4  PSPMODE : Parallel slave Port MODE  PSPMODE = 1 : cho phép khối PSP hoạt động  PSPMODE = 0 : không cho phép khối PSP hoạt động  

2 :0  Các bit điều khiển hướng truy xuất của PORT E. 

TRISE<2 :0> = 1 : Input  TRISE<2 :0> = 0 : Output 

Chứa cờ ngắt các ngắt ngoại vi 

Bit  Chức năng  PIR1  0Ch 

7   

PSPIF : Parallel Slave Port Interrupt Flag bit  PSPIF = 1 : Xảy ra ngắt PSP 

PSPIE = 0 : Không cho phép ngắt ngoại vi PSP  ADCON1  9Fh  Chứa các bit điều khiển ADC. Cần thiết lập các giá trị thích hợp cho 

thanh ghi này để các cổng I/O của port E là Digital input 

 

1.2 Quá trình truyền nhận dữ liệu qua PSP 

Ở chế độ PSP, port D đóng vai trò là nơi đọc và ghi dữ liệu được điều khiển bởi một  master. Để thực hiện được cả hai vai trò là truyền và nhận dữ liệu, port D được bố trí hai 

bộ chốt dữ liệu nhập và xuất tách biệt với nhau. Các chốt dữ liệu này được điều khỉển trực 

tiếp  bởi  các  chân  điều  khiển  RD*,  WR*  và  CS*.  Tùy  theo  mức  logic  trên  các  chân  điều 

khiển này mà quá trình đọc hay ghi dữ liệu được tiến hành.  

Ta sẽ dựa vào giản đồ xung để tìm hiểu quá trình truyền nhận dữ liệu của PSP. Trước tiên là quá trình ghi dữ liệu lên PSP: 

Trang 4

chuyển trạng thái  từ  mức logic 0 lên mức logic 1 và ngắt ngoại vi PSP (nếu đã được cho 

phép  trước  đó  bằng  cách  set  bit  PSPIE  trong  thanh  ghi  PIE1)  sẽ  được  kích  hoạt.  Bit  IBF   (thanh ghi TRISE) chuyển lên mức logic 1 dùng để  báo hiệu rằng dữ liệu bộ đệm ngõ vào 

đã đầy. Bit PSPIF chuyển lên mức logic 1  dùng để chỉ thị  trạng thái  ngắt PSP. Bit PSPIF 

phải  được  xóa  bằng  chương  trình  để  nhận  biết  được  trường  hợp  xảy  ra  ngắt  tiếp  theo. 

Trong khi bit IBF chỉ được xóa khi dữ liệu từ buffer đệm được đọc vào. Trong trường hợp 

dữ liệu cũ chưa được đọc vào mà dữ liệu mới đã muốn ghi lên PSP, bit IBOV sẽ chuyển lên  mức logic 1. 

Xét quá trình đọc dữ liệu từ PSP: 

 

Hình 2: Giản đồ xung quá trình đọc dữ liệu từ PSP. 

 

Trang 5

Giản đồ xung quá trình đọc dữ liệu từ PSP có thể phức tạp hơn so với giản đồ xung của quá  trình  ghi  dữ  liệu.  Tuy  nhiên  nếu  để  ý  phân  tích  kĩ,  ta  vẫn  có  thể  hình  dung  được 

‐ Thứ hai, khi dữ liệu chưa được đọc, buffer đệm đã có sẵn dữ liệu nên bit OBF sẽ ở  mức logic 1. Khi dữ liệu được đọc, buffer đệm rỗng nên mức logic của OBF sẽ bằng 

Ta  sẽ  xây  dựng  các  ứng  dụng  này  theo  từng  bước,  từ  thiết  kế  phần  cứng  đến  viết chương trình. 

Trang 6

Dựa trên một vài ý tưởng như vậy, ta có thể xây dựng mạch nguyên lí cho ứng dụng 

như hình 3. 

Trong mạch ứng dụng ở hình 3, PSP của PIC16F877A slave sẽ được điều khiển bởi các 

chân RE2 :RE0 của PIC16F877A master. Các chân dữ liệu của slave được nối với các chân  của port D. Như vậy khối PSP của cả 2 PIC master và slave đều được nối chung với nhau 

(xét trên quan điểm cấu tạo phần cứng của PIC16F877A). Tuy nhiên vai trò của mỗi PIC là 

hoàn toàn khác biệt, đó là PIC master sẽ điều khiển PSP của PIC slave. Như vậy PIC slave được cho phép hoạt động ở chế độ PSP, còn PIC master sẽ không được cho phép hoạt động 

ở chế  độ PSP. 

Thực  chất  ta  hoàn  toàn  có  thể  sử  dụng  các  port  điều  khiển  khác  của  master  để  điều khiển PSP slave (dùng Port B và Port A chẳng hạn) mà không nhất thiết phải là port D và port E. 

Ngoài ra, ta chỉ sử dụng một PSP slave nên việc điều khiển chân CS* (Chip Select) là  không cần thiết và có thể nối trực tiếp chân CS* của PSP slave xuống mass. Trong trường  hợp nhiều PSP slave được sử dụng, chân CS* được dùng để lựa chọn việc PSP slave nào 

được cho phép truy xuất. Ở đây, do yêu cầu của ứng dụng là chỉ mang tính chất tìm hiểu 

phương thức hoạt động của PSP, và để ứng dụng mang tính tổng quát cao hơn, chân CS* 

vẫn sẽ được điều khiển.   

Trang 7

RD1 RD6

11

12 13

14

15 16 17 18

19 20 21 22

23 24 25 26

27 29 30

31 32

33 34 35 36 37 38 39 40

MCLR/VPP RA0/AN0 RA1/AN1 RA2/AN2/VREF-/CVREF RA3/AN3/VREF+

RA4/TOCKI/C1OUT RA5/AN4/SS/C2OUT RE0/RD/AN5 RE1/WR/AN6 RE2/CS/AN7

VDD

VSS OSC1/CLKI

OSC2/CLKO

RC0/T1OSO/T1CKI RC1/T1OSI/CCP2 RC2/CCP1 RC3/SCK/SCL

RD0/PSP0 RD1/PSP1 RD2/PSP2 RD3/PSP3

RC4/SDI/SDA RC5/SD0 RC6/TX/CK RC7/RX/DT

RD4/PSP4 RD6/PSP6 RD7/PSP7

VSS VDD

RB0/INT RB1 RB2 RB3/PGM RB4 RB5 RB6/PGC RB7/PGD

30 pF

D1 SW1

31 32

33 34 35 36 37 38 39 40

MCLR/VPP RA0/AN0 RA1/AN1 RA2/AN2/VREF-/CVREF RA3/AN3/VREF+

RA4/TOCKI/C1OUT RA5/AN4/SS/C2OUT RE0/RD/AN5 RE1/WR/AN6 RE2/CS/AN7

VDD

VSS OSC1/CLKI

OSC2/CLKO

RC0/T1OSO/T1CKI RC1/T1OSI/CCP2 RC2/CCP1 RC3/SCK/SCL

RD0/PSP0 RD1/PSP1 RD2/PSP2 RD3/PSP3

RC4/SDI/SDA RC5/SD0 RC6/TX/CK RC7/RX/DT

RD4/PSP4 RD5/PSP5 RD6/PSP6 RD7/PSP7

VSS VDD

RB0/INT RB1 RB2 RB3/PGM RB4 RB5 RB6/PGC RB7/PGD

D3

4 MHz

RD4

0 D7

0

D4 R8

sẽ được kích hoạt, đồng thời quá trình đọc dữ liệu của master cũng đã kết thúc. Đây chỉ 

mới là những phản ứng của phần cứng PSP khi được điều khiển bởi master, mà chưa có sự  can thiệp của chương trình. Như vậy, một khi PSP slave đã có sẵn dữ liệu ở buffer đệm thì 

mọi  thao  tác  truy  xuất  sẽ  hoàn  toàn  được  điều  khiển  bởi  master,  và  công  việc  của  PSP slave, đơn giản chỉ là chuẩn bị dữ liệu tiếp theo cho master, và công việc này tốt nhất nên 

Trang 8

được  tiến  hành  trong  chương  trình  ngắt  (ngay  sau  khi  master  kết  thúc  thao  tác  đọc  dữ 

liệu). Công việc chuẩn bị dữ liệu mới này sẽ được hỗ trợ bởi các bit OBF và PSPIF. 

Dựa trên những phân tích như trên, ta dã có thể viết được chương trình cho cả hai vi điều khiển. Các chương trình cụ thể như sau : 

Trang 10

CONFIG  _CP_OFF & _WDT_OFF & _BODEN_OFF & _PWRTE_ON & _XT_OSC & _WRT_OFF & _LVP_OFF & _CPD_OFF 

BCF    PIR1,PSPIF      ; nê’u co’, xo’a co*` nga*’t và ba*’t ‐dầu        ; xu* ? li’ nga*’t 

BSF       STATUS,RP0       ; thanh ghi TRISE na*`m o*? BANK 1  

       ; ‐duo*.c –dọc chu*a ?? 

Trang 11

 MOVLW  bʹ00010111ʹ       ; RE2:RE0 la` ca’c ngo~ va`o MOVWF  TRISE      ; cho phe’p PSPMODE MOVLW  0x06       ; Ta^’t ca ? ca’c cha^n la` Digital I/O 

Trang 13

8 9 10

11

12 13

14

15 16 17

19 20 22

23 24 25 26

27 28 29 30

31 32

33 35 36 37 38 39 40

MCLR/VPP RA0/AN0 RA1/AN1 RA2/AN2/VREF-/CVREF RA3/AN3/VREF+

RA4/TOCKI/C1OUT RA5/AN4/SS/C2OUT RE0/RD/AN5 RE1/WR/AN6 RE2/CS/AN7

VDD

VSS OSC1/CLKI

OSC2/CLKO

RC0/T1OSO/T1CKI RC1/T1OSI/CCP2 RC2/CCP1 RC3/SCK/SCL

RD0/PSP0 RD1/PSP1 RD2/PSP2 RC4/SDI/SDA

RC5/SD0 RC6/TX/CK RC7/RX/DT

RD4/PSP4 RD5/PSP5 RD6/PSP6 RD7/PSP7

VSS VDD

RB0/INT RB1 RB3/PGM RB4 RB5 RB6/PGC RB7/PGD

D7

RD1 RE0

31 32

33 35 36 37 38 39 40

MCLR/VPP RA0/AN0 RA1/AN1 RA2/AN2/VREF-/CVREF RA3/AN3/VREF+

RA4/TOCKI/C1OUT RA5/AN4/SS/C2OUT RE0/RD/AN5 RE1/WR/AN6 RE2/CS/AN7

VDD

VSS OSC1/CLKI

OSC2/CLKO

RC0/T1OSO/T1CKI RC1/T1OSI/CCP2 RC2/CCP1 RC3/SCK/SCL

RD0/PSP0 RD1/PSP1 RD2/PSP2 RC4/SDI/SDA

RC5/SD0 RC6/TX/CK RC7/RX/DT

RD4/PSP4 RD5/PSP5 RD6/PSP6 RD7/PSP7

VSS VDD

RB0/INT RB1 RB3/PGM RB4 RB5 RB6/PGC RB7/PGD

RD6

D2 D3

30 pF

R4

R8 0

Hoạt động của PSP slave lần lượt được tiến hành như sau. Khi nhận được tín hiệu yêu 

cầu  ghi  dữ  liệu  của  master  (WR*  và  CS*  ở  mức  logic  0),  dữ  liệu  lập  tức  được  đưa  vào  buffer đệm. Khi nhận được tín hiêu kết thúc thao tác ghi dữ liệu (một trong hai chân WR*  hoặc  CS*  trở  về  mức  logic  cao),  bit  IBF  và  PSPIF  được  set,  ngắt  ngoại  vi  (nếu  được  cho 

phép trước đó) sẽ được kích hoạt. Nhiệm vụ của phần cứng PSP đến đây là kết thúc. Công 

việc còn lại của chương trình điều khiển là đọc dữ liệu từ bộ đệm vào và xử lí dữ liệu đó. 

Trong trường hợp của ứng dụng này, ta sẽ đọc dữ liệu đó vào và xuất ra port B của slave 

để kiểm tra xem dữ liệu nhận được hay chưa, và nhận được đúng hay sai. Thao tác này tốt nhất cũng nên được tiến hành trong chương trình ngắt (ngay khi dữ liệu vừa được nhận vào), như vậy sẽ tránh được trường hợp tràn bộ đệm. Hiện tượng này xảy ra khi dữ liệu cũ 

Trang 14

chưa được đọc vào mà dữ liệu mới đã chuẩn bị ghi lên. Bit chỉ thị trạng thái này là IBOV  (thanh ghi TRISE).  

Trang 15

 

Trang 18

‐ Nếu nút “READBUT” được ấn, master sẽ đọc dữ liệu từ PSP slave, sau đó xuất dữ liệu nhận được ra các LED ở PORT B. Sau mỗi lần đọc, giá trị đọc từ PSP slave sẽ tăng lên một đơn vị. 

Trang 19

30 pF

0

RD2 RD6

30 pF

10 K READBUT

0

RD1 RD5

RE2 RE0

31 32

33 34 35 36 37 38 39 40 MCLR/VPP

RA0/AN0 RA1/AN1 RA2/AN2/VREF-/CVREF RA3/AN3/VREF+

RA4/TOCKI/C1OUT RA5/AN4/SS/C2OUT RE0/RD/AN5 RE1/WR/AN6 RE2/CS/AN7

VDD

VSS OSC1/CLKI

OSC2/CLKO

RC0/T1OSO/T1CKI RC1/T1OSI/CCP2 RC2/CCP1 RC3/SCK/SCL

RD0/PSP0 RD1/PSP1 RD2/PSP2 RD3/PSP3

RC4/SDI/SDA RC5/SD0 RC6/TX/CK RC7/RX/DT

RD4/PSP4 RD5/PSP5 RD6/PSP6 RD7/PSP7

VSS VDD

RB0/INT RB1 RB2 RB3/PGM RB4 RB5 RB6/PGC RB7/PGD

11

12 13

14

15 16 17 18

19 20 21 22

23 24 25 26

27 28 29 30

31 32

33 34 35 36 37 38 39 40 MCLR/VPP

RA0/AN0 RA1/AN1 RA2/AN2/VREF-/CVREF RA3/AN3/VREF+

RA4/TOCKI/C1OUT RA5/AN4/SS/C2OUT RE0/RD/AN5 RE1/WR/AN6 RE2/CS/AN7

VDD

VSS OSC1/CLKI

OSC2/CLKO

RC0/T1OSO/T1CKI RC1/T1OSI/CCP2 RC2/CCP1 RC3/SCK/SCL

RD0/PSP0 RD1/PSP1 RD2/PSP2 RD3/PSP3

RC4/SDI/SDA RC5/SD0 RC6/TX/CK RC7/RX/DT

RD4/PSP4 RD5/PSP5 RD6/PSP6 RD7/PSP7

VSS VDD

RB0/INT RB1 RB2 RB3/PGM RB4 RB5 RB6/PGC RB7/PGD

Giải thuật của các chương trình trong ứng dụng này sẽ được trình bày dưới các luu đồ sau: 

Trang 20

GOI CHUONG TRINH

CON readPSP

XUAT DU LIEU DOC DUOC

RA PORT B

WRITEBUT DUOC AN??

TANG GIA TRI THANH GHI DATAOUT

GOI CHUONG TRINH

CON writePSP

Trang 21

Trong  đó  chương  trình  con  “writePSP”  dùng  để  xuât  giá  trị  chứa  trong  thanh  ghi 

“DATAOUT” ra PSP slave. Chương trình con “readPSP” dùng để đọc dữ liệu từ PSP vào 

và lưu dữ liệu đọc được vào trong thanh ghi ”DATAIN”. 

Đối với chương trình cho slave, chương trình chính chỉ thực hiện các thao tác khởi tạo, phần việc còn lại được thực hiện trong chương trình ngắt. Lưu đồ giải thuật chương trình ngắt như sau: 

 

START INTERRUPT

PSPIF = 1??

IBF = 1 ??

DOC DU LIEU VAO THANH GHI DATAIN

XUAT RA PORT B

OBF = 0 ??

TANG GIA TRI THANH GHI DATAOUT

DUA VAO BUFFER DEM

N

N

 

Trang 22

;‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐ 

Trang 24

  GOTO   loop 

wait2       ; do*.i cho –de^’n khi nu’t a^’n              CALL       delay_50ms      ;  ‐duo*.c tha? ra   

Trang 25

 

Trang 29

PSP  cho  phép  truyền  nhận  dữ  liệu  8  bit  cho  phép  một  tốc  độ  truyền  dữ  liệu  cao,  bên  cạnh đó phương thức giao tiếp cũng rất đơn giản và dễ sử dụng.   

Tuy nhiên, có thể nhận thấy một số điểm hạn chế của PSP như sau: 

‐ Số lượng chân điều khiển nhiều: để thực hiện giao tiếp bằng PSP, ta cần đến 8 chân 

dữ liệu và 3 chân điều khiển. Điều này gây ra nhiều hạn chế  khi số lượng chân điều khiển của một thiết bị ngoại vi là có giới hạn, đồng thời gây tốn kém khi cần nối dài đường truyền dữ liệu. 

‐ Độ  tin  cậy  của  thông  tin  không  cao:  việc  truyền  nhận  dữ  liệu  được  diễn  ra  mà 

không có được sự kiểm soát của các thiết bị truyền nhận. master hay slave không thể biết được rằng dữ liệu có được truyền đến đầu bên kia hay không, và không có sự phản hồi về thông tin của thiết bị truyền nhận. Điều này cũng gây nhiều khó khăn trong quá trình truyền nhận dữ liệu, đặc biệt là khi khoảng cách đường truyền được nối dài. 

Ngày đăng: 28/03/2014, 00:05

HÌNH ẢNH LIÊN QUAN

Hình 2: Giản đồ xung quá trình đọc dữ liệu từ PSP. - PSP và ứng dụng
Hình 2  Giản đồ xung quá trình đọc dữ liệu từ PSP (Trang 4)
Hình 1: Giản đồ xung thể hiện quá trình ghi dữ liệu lên PSP. - PSP và ứng dụng
Hình 1  Giản đồ xung thể hiện quá trình ghi dữ liệu lên PSP (Trang 4)
Hình 3 : Sơ đồ nguyên lí ứng dụng đọc dữ liệu từ PSP sử dụng PIC16F877A. - PSP và ứng dụng
Hình 3  Sơ đồ nguyên lí ứng dụng đọc dữ liệu từ PSP sử dụng PIC16F877A (Trang 7)
Hình 5 : Sơ đồ nguyên lí  ứng dụng tổnh hợp. - PSP và ứng dụng
Hình 5  Sơ đồ nguyên lí  ứng dụng tổnh hợp (Trang 19)
Hình 6 : Lưu đồ giải thuật chương trình chính của master. - PSP và ứng dụng
Hình 6  Lưu đồ giải thuật chương trình chính của master (Trang 20)
Hình 7 : Lưu đồ giải thuật chương trình ngắt của PSP slave. - PSP và ứng dụng
Hình 7  Lưu đồ giải thuật chương trình ngắt của PSP slave (Trang 22)

TỪ KHÓA LIÊN QUAN

w