Communication Processor Module
MOTOROLA
MPC823 USER’S MANUAL
16-291
SCC2
COMMUNICATION
16
PROCESSOR
MODULE
16.9.20.5.4 Middle-Speed IrDA Programming Example. Middle-speed infra-red
programming is very similar to SCC2 synchronous HDLC programming. The parameter
RAM programming and the RX and TX buffer descriptors are the same as in the SCC2
HDLC. All of the SCC2 synchronous registers and the infra-red registers must be initialized.
The following list is an initialization sequence for a middle-speed infra-red channel assuming
that an external clock is provided. The CLK3 pin is used for the infra-red receiver and
transmitter.
1. Configure the port A pins to enable the TXD2 and RXD2 pins. Write PAPAR bits 13
and 12 with ones. Write PADIR bits 13 and 12 with zeros. Write PAODR bits 13 and
12 with zeros.
2. Configure port A to enable the CLK3 pin. Write PAPAR bit 5 with a one. Write PADIR
bit 5 with a zero.
3. Connect the CLK3 pin to the SCC2 using the serial interface. Write the R2CS field in
SICR to 110. Write the T2CS bits in the SICR to 110.
4. Connect the SCC2 to the NMSI (its own set of pins). Clear the SC2 bit in the SICR.
5. Write the SDCR with the appropriate arbitration ID.
6. Write RBASE and TBASE in the SCC2 parameter RAM to point to the RX buffer
descriptor and TX buffer descriptor in the dual-port RAM. Assuming one RX buffer
descriptor at the beginning of dual-port RAM and one TX buffer descriptor following
that RX buffer descriptor, write RBASE with 0x2000 and TBASE with 0x2008.
7. Program the CPCR to execute the INIT RX AND TX PARAMS command for the serial
communication controller.
8. Write RFCR with 0x18 and TFCR with 0x18 for normal operation.
9. Write MRBLR with the maximum number of bytes per receive buffer. For this case,
assume 256 bytes, so MRBLR = 0x0100. The value 256 was chosen to allow an entire
receive frame to fit into one receive buffer.
10. Write CRC_P with 0xFFFFFFFF to comply with 16-bit CRC32.
11. Write CRC_C with 0xDEBB20E3 to comply with 16-bit CRC32.
12. Clear DISFC, CRCEC, ABTSC, NMARC, and RETRC for the sake of clarity.
13. Write MFLR with 0x0100 to make the maximum frame size 256 bytes.
14. Write RFTHR with 0x0001 to allow interrupts after each frame.
15. Write HMASK with 0x0000 to allow all addresses to be recognized.
16. Clear HADDR1, HADDR2, HADDR3, and HADDR4 for clarity.
17. Initialize the RX buffer descriptor. Assume the RX data buffer is at 0x00001000 in main
memory. Write 0xB000 to RX_BD_Status. Write 0x0000 to RX_BD_Length (not
required-done for instructional purposes only). Write 0x00001000 to RX_BD_Pointer.
18. Initialize the TX buffer descriptor. Assume the TX data frame is at 0x00002000 in main
memory and contains five 8-bit characters. Write 0xBC00 to TX_BD_Status. Write
0x0005 to TX_BD_Length. Write 0x00002000 to TX_BD_Pointer.
19. Write 0xFFFF to the SCCE–HDLC to clear any previous events.