Cấu hình truyền thống 3 Phần cứng... UART - Transmit Buffers • Bộ đệm truyền 4 byte – Dữ liệu truyền sẽ được chuyển đến thành ghi UxTSR • Người dùng chỉ truy cập tới được byte đầu tiên
Trang 1Truyền thông qua RS232
DSPIC
the dsPIC30F UART Module
• Dữ liệu truyền nối tiếp
– 8-bit or 9-bit data
– Truyền song công
• Hỗ trợ truyền dữ liệu với
– Bộ đệm truyền nhân 4 bytes
– Ngắt nhận và gửi
– Cơ chế kiểm tra lỗi
• Hỗ trợ nhận địa chỉ gửi
2
Trang 2Cấu
hình
truyền
thống
3
Phần cứng
Trang 3Các thanh ghi
5
Giải thích thanh ghi
6
Trang 4Thanh ghi (tiếp)
7
UART - Baud Rate Generator
• Thanh ghi xác định tốc độ truyền nhận
• UxBRG register với (x = 1 hoặc 2)
– Baud Rate = Fcy / ( 16 * (UxBRG + 1) )
với Fcy = Tần số lệnh (Instruction Cycle
Frequency)
• Cả nhận và truyền đều sử dụng chung 1 tần
số
Trang 5Ví dụ
• Nếu FCY=8MHz, và tốc độ truyền là 9600
baud,
– UxBRG=(8•106/(16•9600))-1=51.083
• UxBRG=51
• Sai số truyền là UxBRG=51 is 9615.384, i.e
the deviation is 0.16%
9
Ví dụ (tiếp)
10
Trang 6UART - Transmission
11
UART - Transmission
Trang 7UART - Transmit Buffers
• Bộ đệm truyền 4 byte
– Dữ liệu truyền sẽ được chuyển đến thành ghi
UxTSR
• Người dùng chỉ truy cập tới được byte đầu
tiên của bộ đệm
• UTXBF status bit thông báo bộ đệm đầy
13
UART – Ngắt truyền
• Cờ ngắt xác định bởi bit UxTXIF và cho
phép ngăt bởi bit UxTXIE
• Chế độ UTXISEL= 1
Ngắt xảy ra khi bộ đệm hoàn toàn
trống
• Khi UTXISEL bit = 0
– Ngắt xảy ra khi mỗi byte được truyền
• UTXEN bit là bit cho phép truyền dữ liệu
14
Trang 8UART – nhận
15
UART nhận
• Bộ đệm nhận 4 byte
– Dữ liệu truyền sẽ được chuyển từ thành ghi
UxRSR, và người dùng đọc thanh ghi UxRXREG
• Người dùng chỉ truy cập tới được byte đầu
tiên của bộ đệm
• Khi bộ đệm 4 byte đầy và thanh ghi UxRSR
cũng nhận dữ liệu, thì bit OERR sẽ báo
• Việc xóa OERR sẽ xóa bộ đệm 4 byte này
Trang 9UART - Receive Interrupts
• Ngắt nhận xác định bởi cờ UxRXIF và cho
phép ngắt bới bit UxRXIE
• Có 3 chế độ ngắt khác nhau
• URXISEL = 11
– Ngắt xảy ra khi bộ đệm đầy, 4 bytes
• URXISEL bits = 10
– Ngắt xảy ra khi bộ đệm có 3 bytes
• When URXISEL bits = 01 or 00
– Ngắt xảy ra khi bộ đệm có dữ liệu
17
UART - Error Detection
• Parity Error
– When received parity does not match the parity
calculated by module from received data
– Indicated by PERR bit in the UxSTA register set
• Framing Error
– When a STOP bit is expected on UxRX pin but a low
logic level is detected
– Indicated by FERR bit in the UxSTA register set
• Receive Overrun Error
– When the Receive Buffer is full and a 5 th character
is received
– Indicated by OERR bit in the UxSTA register set
18
Trang 10UART - Address Detection
• When the UART is operating in 9-bit mode
(PDSEL = 11), and the ADDEN bit in the UxSTA
register is set
– The module will wait for an Address word, i.e.,
a 9-bit word with the 9th bit set
• At this stage, the URXISEL bits in the UxSTA
register must be set to 00 or 01
– On receiving the Address word, the user inspects
the lower byte to verify an address match
– If an address match occurred, the user should
clear the ADDEN bit, after which the module will
wait for Data words (9-bit words with MSB clear)
19
UART – Những đặc điểm phụ
• Alternate I/O
– Sử dụng cặp đôi chân TX/RX khác
– Cho phép bơi bít ALTIO trong thanh ghiUxMODE
• Loopback Mode
– UxTX pin được nối ngầm với nhau UxRX pin
– Cho phép bởi bit LPBACK UxMODE
• Wake-up from SLEEP
– Device can be woken up from SLEEP by START bit
– Enabled by setting WAKE bit in UxMODE register
Trang 11Ví dụ
21
Circular Buffer
22
Trang 12Phương pháp hoạt động
• Difficulites
23
Xử lý lỗi
• Always Keep One Slot Open
• Use a Fill Count
• Read / Write Counts
Trang 13Ví dụ
25