Upload
others
View
13
Download
0
Embed Size (px)
Citation preview
Serial Communication -UARTArduino Serial Library
PC/CP 364Serial Communication-UART
Terry Sturtevant
Wilfrid Laurier University
December 15, 2016
Terry Sturtevant PC/CP 364 Serial Communication-UART
Serial Communication -UARTArduino Serial Library
Baud rate calculationRS232 communication
Serial Communication -UART
Universal Asynchronous Receiver TransmitterSimplest form of serial communicationBetween 2 devicesUses 2 signals (and Ground), Rx and TxAsynchronous, so both must agree on baud rate
Terry Sturtevant PC/CP 364 Serial Communication-UART
Serial Communication -UARTArduino Serial Library
Baud rate calculationRS232 communication
Serial Communication -UART
Universal Asynchronous Receiver Transmitter
Simplest form of serial communicationBetween 2 devicesUses 2 signals (and Ground), Rx and TxAsynchronous, so both must agree on baud rate
Terry Sturtevant PC/CP 364 Serial Communication-UART
Serial Communication -UARTArduino Serial Library
Baud rate calculationRS232 communication
Serial Communication -UART
Universal Asynchronous Receiver TransmitterSimplest form of serial communication
Between 2 devicesUses 2 signals (and Ground), Rx and TxAsynchronous, so both must agree on baud rate
Terry Sturtevant PC/CP 364 Serial Communication-UART
Serial Communication -UARTArduino Serial Library
Baud rate calculationRS232 communication
Serial Communication -UART
Universal Asynchronous Receiver TransmitterSimplest form of serial communicationBetween 2 devices
Uses 2 signals (and Ground), Rx and TxAsynchronous, so both must agree on baud rate
Terry Sturtevant PC/CP 364 Serial Communication-UART
Serial Communication -UARTArduino Serial Library
Baud rate calculationRS232 communication
Serial Communication -UART
Universal Asynchronous Receiver TransmitterSimplest form of serial communicationBetween 2 devicesUses 2 signals (and Ground), Rx and Tx
Asynchronous, so both must agree on baud rate
Terry Sturtevant PC/CP 364 Serial Communication-UART
Serial Communication -UARTArduino Serial Library
Baud rate calculationRS232 communication
Serial Communication -UART
Universal Asynchronous Receiver TransmitterSimplest form of serial communicationBetween 2 devicesUses 2 signals (and Ground), Rx and TxAsynchronous, so both must agree on baud rate
Terry Sturtevant PC/CP 364 Serial Communication-UART
Serial Communication -UARTArduino Serial Library
Baud rate calculationRS232 communication
Communication parameters
1 Start bit at “0” levelLSB transmitted firstCan have odd, even, or no parity bit1 or 2 Stop bits at “1” level
Since start and stop bits are opposite, new characters can alwaysbe detected.
Terry Sturtevant PC/CP 364 Serial Communication-UART
Serial Communication -UARTArduino Serial Library
Baud rate calculationRS232 communication
Communication parameters
1 Start bit at “0” level
LSB transmitted firstCan have odd, even, or no parity bit1 or 2 Stop bits at “1” level
Since start and stop bits are opposite, new characters can alwaysbe detected.
Terry Sturtevant PC/CP 364 Serial Communication-UART
Serial Communication -UARTArduino Serial Library
Baud rate calculationRS232 communication
Communication parameters
1 Start bit at “0” levelLSB transmitted first
Can have odd, even, or no parity bit1 or 2 Stop bits at “1” level
Since start and stop bits are opposite, new characters can alwaysbe detected.
Terry Sturtevant PC/CP 364 Serial Communication-UART
Serial Communication -UARTArduino Serial Library
Baud rate calculationRS232 communication
Communication parameters
1 Start bit at “0” levelLSB transmitted firstCan have odd, even, or no parity bit
1 or 2 Stop bits at “1” level
Since start and stop bits are opposite, new characters can alwaysbe detected.
Terry Sturtevant PC/CP 364 Serial Communication-UART
Serial Communication -UARTArduino Serial Library
Baud rate calculationRS232 communication
Communication parameters
1 Start bit at “0” levelLSB transmitted firstCan have odd, even, or no parity bit1 or 2 Stop bits at “1” level
Since start and stop bits are opposite, new characters can alwaysbe detected.
Terry Sturtevant PC/CP 364 Serial Communication-UART
Serial Communication -UARTArduino Serial Library
Baud rate calculationRS232 communication
Communication parameters
1 Start bit at “0” levelLSB transmitted firstCan have odd, even, or no parity bit1 or 2 Stop bits at “1” level
Since start and stop bits are opposite, new characters can alwaysbe detected.
Terry Sturtevant PC/CP 364 Serial Communication-UART
Serial Communication -UARTArduino Serial Library
Baud rate calculationRS232 communication
Terry Sturtevant PC/CP 364 Serial Communication-UART
Serial Communication -UARTArduino Serial Library
Baud rate calculationRS232 communication
Start
Terry Sturtevant PC/CP 364 Serial Communication-UART
Serial Communication -UARTArduino Serial Library
Baud rate calculationRS232 communication
Start
0
LSB
1
Terry Sturtevant PC/CP 364 Serial Communication-UART
Serial Communication -UARTArduino Serial Library
Baud rate calculationRS232 communication
Start
0
LSB
1
1 1
Terry Sturtevant PC/CP 364 Serial Communication-UART
Serial Communication -UARTArduino Serial Library
Baud rate calculationRS232 communication
Start
0
LSB
1 2
1 1 1
Terry Sturtevant PC/CP 364 Serial Communication-UART
Serial Communication -UARTArduino Serial Library
Baud rate calculationRS232 communication
Start
0
LSB
1 2 3
1 1 1 0
Terry Sturtevant PC/CP 364 Serial Communication-UART
Serial Communication -UARTArduino Serial Library
Baud rate calculationRS232 communication
Start
0
LSB
1 2 3 4
1 1 1 0 0
Terry Sturtevant PC/CP 364 Serial Communication-UART
Serial Communication -UARTArduino Serial Library
Baud rate calculationRS232 communication
Start
0
LSB
1 2 3 4 5
1 1 1 0 0 1
Terry Sturtevant PC/CP 364 Serial Communication-UART
Serial Communication -UARTArduino Serial Library
Baud rate calculationRS232 communication
Start
0
LSB
1 2 3 4 5 6
1 1 1 0 0 1 1
Terry Sturtevant PC/CP 364 Serial Communication-UART
Serial Communication -UARTArduino Serial Library
Baud rate calculationRS232 communication
Start
0
LSB
1 2 3 4 5 6 7
MSB
1 1 1 0 0 1 1 0
Terry Sturtevant PC/CP 364 Serial Communication-UART
Serial Communication -UARTArduino Serial Library
Baud rate calculationRS232 communication
Start Stop
0
LSB
1 2 3 4 5 6 7
MSB
1 1 1 0 0 1 1 0
Terry Sturtevant PC/CP 364 Serial Communication-UART
Serial Communication -UARTArduino Serial Library
Baud rate calculationRS232 communication
Start Stop
0
LSB
1 2 3 4 5 6 7
MSB
1 1 1 0 0 1 1 0
UART no parity - 01100111
Terry Sturtevant PC/CP 364 Serial Communication-UART
Serial Communication -UARTArduino Serial Library
Baud rate calculationRS232 communication
Start Stop
Parity0 1 2 3 4 5 6 7
UART even parity
Terry Sturtevant PC/CP 364 Serial Communication-UART
Serial Communication -UARTArduino Serial Library
Baud rate calculationRS232 communication
Start Stop
Parity0 1 2 3 4 5 6 7
UART even parity
Terry Sturtevant PC/CP 364 Serial Communication-UART
Serial Communication -UARTArduino Serial Library
Baud rate calculationRS232 communication
Start Stop
Parity0 1 2 3 4 5 6 7
UART odd parity
Terry Sturtevant PC/CP 364 Serial Communication-UART
Serial Communication -UARTArduino Serial Library
Baud rate calculationRS232 communication
Baud rate calculation
Baud rate is the number of bits possible in a seconde.g. 9600 baud → 1 bit takes 1
9600 secondAfter start bit is detected, wait time for 11
2 bit to testfor first data bit and then after every 1 bit intervalResetting at the start bit allows some clock variation
Terry Sturtevant PC/CP 364 Serial Communication-UART
Serial Communication -UARTArduino Serial Library
Baud rate calculationRS232 communication
Baud rate calculation
Baud rate is the number of bits possible in a second
e.g. 9600 baud → 1 bit takes 19600 second
After start bit is detected, wait time for 112 bit to test
for first data bit and then after every 1 bit intervalResetting at the start bit allows some clock variation
Terry Sturtevant PC/CP 364 Serial Communication-UART
Serial Communication -UARTArduino Serial Library
Baud rate calculationRS232 communication
Baud rate calculation
Baud rate is the number of bits possible in a seconde.g. 9600 baud → 1 bit takes 1
9600 second
After start bit is detected, wait time for 112 bit to test
for first data bit and then after every 1 bit intervalResetting at the start bit allows some clock variation
Terry Sturtevant PC/CP 364 Serial Communication-UART
Serial Communication -UARTArduino Serial Library
Baud rate calculationRS232 communication
Baud rate calculation
Baud rate is the number of bits possible in a seconde.g. 9600 baud → 1 bit takes 1
9600 secondAfter start bit is detected, wait time for 11
2 bit to testfor first data bit and then after every 1 bit interval
Resetting at the start bit allows some clock variation
Terry Sturtevant PC/CP 364 Serial Communication-UART
Serial Communication -UARTArduino Serial Library
Baud rate calculationRS232 communication
Baud rate calculation
Baud rate is the number of bits possible in a seconde.g. 9600 baud → 1 bit takes 1
9600 secondAfter start bit is detected, wait time for 11
2 bit to testfor first data bit and then after every 1 bit intervalResetting at the start bit allows some clock variation
Terry Sturtevant PC/CP 364 Serial Communication-UART
Serial Communication -UARTArduino Serial Library
Baud rate calculationRS232 communication
Terry Sturtevant PC/CP 364 Serial Communication-UART
Serial Communication -UARTArduino Serial Library
Baud rate calculationRS232 communication
Start
Terry Sturtevant PC/CP 364 Serial Communication-UART
Serial Communication -UARTArduino Serial Library
Baud rate calculationRS232 communication
Start
0
1
Terry Sturtevant PC/CP 364 Serial Communication-UART
Serial Communication -UARTArduino Serial Library
Baud rate calculationRS232 communication
Start
0 1
1 1
Terry Sturtevant PC/CP 364 Serial Communication-UART
Serial Communication -UARTArduino Serial Library
Baud rate calculationRS232 communication
Start
0 1 2
1 1 1
Terry Sturtevant PC/CP 364 Serial Communication-UART
Serial Communication -UARTArduino Serial Library
Baud rate calculationRS232 communication
Start
0 1 2 3
1 1 1 0
Terry Sturtevant PC/CP 364 Serial Communication-UART
Serial Communication -UARTArduino Serial Library
Baud rate calculationRS232 communication
Start
0 1 2 3 4
1 1 1 0 0
Terry Sturtevant PC/CP 364 Serial Communication-UART
Serial Communication -UARTArduino Serial Library
Baud rate calculationRS232 communication
Start
0 1 2 3 4 5
1 1 1 0 0 1
Terry Sturtevant PC/CP 364 Serial Communication-UART
Serial Communication -UARTArduino Serial Library
Baud rate calculationRS232 communication
Start
0 1 2 3 4 5 6
1 1 1 0 0 1 1
Terry Sturtevant PC/CP 364 Serial Communication-UART
Serial Communication -UARTArduino Serial Library
Baud rate calculationRS232 communication
Start
0 1 2 3 4 5 6 7
1 1 1 0 0 1 1 0
Terry Sturtevant PC/CP 364 Serial Communication-UART
Serial Communication -UARTArduino Serial Library
Baud rate calculationRS232 communication
Start Stop
0 1 2 3 4 5 6 7
1 1 1 0 0 1 1 0
Terry Sturtevant PC/CP 364 Serial Communication-UART
Serial Communication -UARTArduino Serial Library
Baud rate calculationRS232 communication
Start Stop
0 1 2 3 4 5 6 7
1 1 1 0 0 1 1 0
Bit timing
Terry Sturtevant PC/CP 364 Serial Communication-UART
Serial Communication -UARTArduino Serial Library
Baud rate calculationRS232 communication
RS232 communication
Voltages are inverted±3→ ±12Zero is not a valid voltageMark level (inactive/1) is a negative voltageSpace level (active/0) is a positive voltage
Terry Sturtevant PC/CP 364 Serial Communication-UART
Serial Communication -UARTArduino Serial Library
Baud rate calculationRS232 communication
RS232 communication
Voltages are inverted
±3→ ±12Zero is not a valid voltageMark level (inactive/1) is a negative voltageSpace level (active/0) is a positive voltage
Terry Sturtevant PC/CP 364 Serial Communication-UART
Serial Communication -UARTArduino Serial Library
Baud rate calculationRS232 communication
RS232 communication
Voltages are inverted±3→ ±12
Zero is not a valid voltageMark level (inactive/1) is a negative voltageSpace level (active/0) is a positive voltage
Terry Sturtevant PC/CP 364 Serial Communication-UART
Serial Communication -UARTArduino Serial Library
Baud rate calculationRS232 communication
RS232 communication
Voltages are inverted±3→ ±12Zero is not a valid voltage
Mark level (inactive/1) is a negative voltageSpace level (active/0) is a positive voltage
Terry Sturtevant PC/CP 364 Serial Communication-UART
Serial Communication -UARTArduino Serial Library
Baud rate calculationRS232 communication
RS232 communication
Voltages are inverted±3→ ±12Zero is not a valid voltageMark level (inactive/1) is a negative voltage
Space level (active/0) is a positive voltage
Terry Sturtevant PC/CP 364 Serial Communication-UART
Serial Communication -UARTArduino Serial Library
Baud rate calculationRS232 communication
RS232 communication
Voltages are inverted±3→ ±12Zero is not a valid voltageMark level (inactive/1) is a negative voltageSpace level (active/0) is a positive voltage
Terry Sturtevant PC/CP 364 Serial Communication-UART
Serial Communication -UARTArduino Serial Library
Baud rate calculationRS232 communication
ParityMark 0 1 2 3 4 5 6 7
Terry Sturtevant PC/CP 364 Serial Communication-UART
Serial Communication -UARTArduino Serial Library
Baud rate calculationRS232 communication
Start
ParityMark
Space
0 1 2 3 4 5 6 7
Terry Sturtevant PC/CP 364 Serial Communication-UART
Serial Communication -UARTArduino Serial Library
Baud rate calculationRS232 communication
Start Stop
ParityMark
Space
0 1 2 3 4 5 6 7
Terry Sturtevant PC/CP 364 Serial Communication-UART
Serial Communication -UARTArduino Serial Library
Baud rate calculationRS232 communication
Start Stop
ParityMark
Space
0 1 2 3 4 5 6 7
RS232 levels
Terry Sturtevant PC/CP 364 Serial Communication-UART
Serial Communication -UARTArduino Serial Library
Arduino Serial
Serial.begin(9600)start port and set baudratewhile(!Serial)wait to connectif (Serial.available() > 0)returns True if data available, False if not
Terry Sturtevant PC/CP 364 Serial Communication-UART
Serial Communication -UARTArduino Serial Library
Arduino Serial
Serial.begin(9600)start port and set baudrate
while(!Serial)wait to connectif (Serial.available() > 0)returns True if data available, False if not
Terry Sturtevant PC/CP 364 Serial Communication-UART
Serial Communication -UARTArduino Serial Library
Arduino Serial
Serial.begin(9600)start port and set baudratewhile(!Serial)wait to connect
if (Serial.available() > 0)returns True if data available, False if not
Terry Sturtevant PC/CP 364 Serial Communication-UART
Serial Communication -UARTArduino Serial Library
Arduino Serial
Serial.begin(9600)start port and set baudratewhile(!Serial)wait to connectif (Serial.available() > 0)returns True if data available, False if not
Terry Sturtevant PC/CP 364 Serial Communication-UART
Serial Communication -UARTArduino Serial Library
Arduino Serial (continued)
Serial.write(value)write valueSerial.print(’A’)write string as ASCIIinByte = Serial.read()read byteSerial.end()close port
Terry Sturtevant PC/CP 364 Serial Communication-UART
Serial Communication -UARTArduino Serial Library
Arduino Serial (continued)
Serial.write(value)write value
Serial.print(’A’)write string as ASCIIinByte = Serial.read()read byteSerial.end()close port
Terry Sturtevant PC/CP 364 Serial Communication-UART
Serial Communication -UARTArduino Serial Library
Arduino Serial (continued)
Serial.write(value)write valueSerial.print(’A’)write string as ASCII
inByte = Serial.read()read byteSerial.end()close port
Terry Sturtevant PC/CP 364 Serial Communication-UART
Serial Communication -UARTArduino Serial Library
Arduino Serial (continued)
Serial.write(value)write valueSerial.print(’A’)write string as ASCIIinByte = Serial.read()read byte
Serial.end()close port
Terry Sturtevant PC/CP 364 Serial Communication-UART
Serial Communication -UARTArduino Serial Library
Arduino Serial (continued)
Serial.write(value)write valueSerial.print(’A’)write string as ASCIIinByte = Serial.read()read byteSerial.end()close port
Terry Sturtevant PC/CP 364 Serial Communication-UART
Serial Communication -UARTArduino Serial Library
Arduino Serial sample code
v o i d s e t u p ( ) {S e r i a l . b e g i n ( 9 6 0 0 ) ;w h i l e ( ! S e r i a l ) {
;}
}
v o i d l o o p ( ) {i f ( S e r i a l . a v a i l a b l e ( ) > 0) {
i n B y t e = S e r i a l . r e a d ( ) ;S e r i a l . w r i t e ( i n B y t e ) ;}
}
Terry Sturtevant PC/CP 364 Serial Communication-UART
Serial Communication -UARTArduino Serial Library
Arduino Serial sample code
v o i d s e t u p ( ) {S e r i a l . b e g i n ( 9 6 0 0 ) ;w h i l e ( ! S e r i a l ) {
;}
}
v o i d l o o p ( ) {i f ( S e r i a l . a v a i l a b l e ( ) > 0) {
i n B y t e = S e r i a l . r e a d ( ) ;S e r i a l . w r i t e ( i n B y t e ) ;}
}
Terry Sturtevant PC/CP 364 Serial Communication-UART