Title: Starting with serial
1Starting with serial
- Chapter Ten
- 10.1, 10.2, 10.9-10.10.6
2Outline
- Introduction
- Synchronous data communication
- Asynchronous data communication
- The 16F87XA USART
- Summary
3Introduction
- Data transfer methods
- Parallel Transfer
- Faster
- Expensive
- Short distances
- Serial Transfer
- Slower
- Cheaper
- Short and long distances
4Serial Data Transfer
5The PIC 16 Series
Device Pins Features
16F873A 16F876A 28 3 parallel ports, 3 counter/timers, 2 capture/compare/PWM, 2 serial, 5 10-bit ADC, 2 comparators
16F874A 16F877A 40 5 parallel ports, 3 counter/timers, 2 capture/compare/PWM, 2 serial, 8 10-bit ADC, 2 comparators
6PIC 16F86XA Serial Ports
- MSSP The Master Synchronous Serial Port is
designed to support - SPI Serial Peripheral Interface (Motorola )
- I2C Inter-Integrated Circuit (Philips)
- USART Universal Synchronous Asynchronous
Receiver Transmitter can operate in both
synchronous and asynchronous modes. - RS-232
7Synchronous data communication
8Shift Register to Receive Data
9Synchronous Signals
10A general-purpose serial communication link
11Master/Slave Implementation
12Single synchronous master with multiple slaves
13Disadvantages of synchronous communication
- An extra line is needed to go to every data node
for the clock - The bandwidth needed for the clock is always
twice the bandwidth needed for the data - Over long distances, clock and data themselves
could lose synchronization
14Asynchronous principles
- No clock transmitted
- Data rate is predetermined both transmitter and
receiver are preset to recognize the same data
rate. - Each node needs an accurate and stable clock
source. - Each byte or word is framed with a Start and Stop
bit. These allow synchronization to be initiated
before the data starts to flow.
15A common asynchronous serial data format
16Synchronizing the asynchronous data signal
17The 16F87XA USART
- USART Addressable Universal Synchronous
Asynchronous Receiver Transmitter - Modes
- Synchronous master
- Synchronous slave
- Asynchronous full-duplex
- Has receive and transmit interrupts
- Controlled by TXSTA, RCSTA, and SPBRG
18TXSTA transmit status and control register
(address 98h)
- CSRC clock source select
- TX9 9-bit transmit enable
- TXEN transmit enable
- SYNC USART mode select
- U unimplemented
- BRGH high baud rate select
- TRMT transmit shift register status
- TX9D 9th bit of transmit data
19RCSTA receive status and control register
(address 18h)
- SPEN serial port enable
- RX9 9-bit receive enable
- SREN single receive enable
- CREN continuous receive enable
- ADDEN address detect enable
- FERR framing error
- OERR overrun error
- RX9D 9th bit of received data
20SPBRG baud rate generator (address 99h)
21USART transmit block diagram
22USART receive block diagram
23Serial Communications Example
24Asynchronous Data Transfer Example Page 1
- Initialise USART
- bcf status,rp0
- movlw B10010000 port is on, 8-bit,
- movwf rcsta continuous receiving
- bsf status,rp0
- movlw B00100100 TX enabled, 8-bit,
- movwf txsta high speed baud rate
- movlw 04 baud rate 50k _at_4MHz
- movwf spbrg
- bcf status,rp0
- ...
25Asynchronous Data Transfer Example Page 2
-
- ISR. On external interrupt, SSP reads byte
- from Hand Controller, sends it out on USART,
- receives it back through USART,
- and echoes it back to keypad.
- Received Byte stored in I2C_RX_word
-
- Interrupt_SR
- ...
26Asynchronous Data Transfer Example Page 3
- send out via async comm channel
- bcf pir1,rcif clear RX interrupt flag
- movf I2C_RX_word,0 get word
- movwf txreg
- btfss pir1,rcif test for RX INT flag,
- indicating receive complete
- goto -1
- movf rcreg,0 get and store RX word
- movwf async_RX_word
- ...
27Asynchronous Waveform
28Using address detection with the USART receive
mode
- Multiple nodes can be connected to the serial
line and a node can recognize its own address. - Set 9-bit mode RX9 and address enable bit ADDEN
- Logic 1 in the ninth bit indicates that an
address is received. - If byte equals own address, revert to normal
reception by resetting ADDEN - This continues until a further address word is
detected, which may be for another node.
29Summary
- There are two broad types of serial
communication synchronous and asynchronous. - There are a very large number of different
standards and protocols for serial communication,
ranging from the very simple to the seriously
complicated. It is important to match the right
protocol with the right application. - The 16F873A microcontroller has two extremely
flexible serial ports. The cost of flexibility is
a significant level of complexity in grasping
their use. Therefore, it is often worth adapting
publicly available routines to use, rather than
starting from scratch in writing new code.