Next: D-Kanal Protokolle
Up: ISDN
Previous: Serial Communication Controller
HDLC im D-Kanal mit SCC und TSA
In den Abschnitten 3.6.1.2 und 3.6.1.3 wurden die Grundlagen für TSA und SCC vorgestellt. Nun soll mit diesen beiden Komponenten ein HDLC-Protokoll im D-Kanal der IDL-Schnittstelle implementiert werden.
Das Programmierbeispiel des MPC-860-Handbuch zum HDLC-Modus des SCC ist auf Seite 16-233 zu finden. Leider verwendet dieses Beispiel (wie alle anderen Beispiele) nicht den TSA, sondern leitet den Ausgangsstrom des SCC auf externe Pins. Die folgende Darstellung orientiert sich an der Beschreibungsweise im MPC-860-Handbuch. Abkürzungen und Funktionen der einzelnen Bits und der Register müssen dem MPC860-Handbuch [24] entnommen werden. Die entsprechenden Seitenzahlen sind angegeben.
Tabelle 3.7:
IDL-Signale auf dem 860/COMM Expansion Connector
| Signalname |
860/COMM Pin |
| L1TCLKa |
Row B Pin 11 |
| L1RXDa |
Row B Pin 13 |
| L1TXDa |
Row B Pin 14 |
| L1RSYNCa |
Row B Pin 21 |
| |
oder Row A Pin 17 |
SCC HDLC Beispiel mit TSA:
Die folgende Initialisierungssequenz verwendet den SCC4. Externes Takt- und Synchronisationssignal werden über die Pins L1RCLKa und L1RSYNCa vom IDL-Master zur Verfügung gestellt. Tabelle 3.7 ordnet den verwendeten Signalnamen Pins auf dem 860/COMM Expansion Connector zu.
- 1.
- Programmieren des SI-RAMs. Alle nicht verwendeten Einträge werden mit 0x0001 beschrieben. Die anderen Einträge erfolgen laut Tabelle 3.5.
- 2.
- SIMODE = 0x00000141. TDMa wird verwendet. 1-Bit-Delay bei Rx und Tx, TDMa verwendet externe Clock und Sync-Signale. (vgl. MPC860-Handbuch S. 16-114).
- 3.
- SICR Bit1 = 1. SCC4 wird mit dem TSA verbunden. (vgl. MPC860-Handbuch S. 16-121)
- 4.
- PAPAR Bits 9, 8 und 7 = 1. PADIR Bits 9 und 8 = 1, Bit 7 = 0. Konfiguriert Port A Pins L1TXDa, L1RXDa und L1RCLKa. PAODR Bit 9 = 0. Konfiguriert L1TXDa als Open-Drain-Ausgang. (vgl. MPC860-Handbuch S.16-455, MBX Series Programmer's Guide [22] Seite 3-6 für die Funktionen der Port A Pins, MBX Series Installation and Use [21] Seite 6-19 für Zuordnung der Signal auf dem 860/COMM Expansion Connector).
- 5.
- PCPAR Bits 12, 5 und 4 = 1. PADIR Bits 12, 5, 4 = 0. Konfiguriert Port C Pins L1RQa, L1TSYNCa und L1RSYNCa. (vgl. MPC860-Handbuch S.16-465, MBX Series Programmer's Guide [22] Seite 3-9 für die Funktionen der Port C Pins, MBX Series Installation and Use [21] Seite 6-19 für Zuordnung der Signal auf dem 860/COMM Expansion Connector).
- 6.
- SIGMR = 0x04. Ermöglichen des TDMa im ,,One Multiplexed Channel with Static Frames``-Modus (vgl. MPC860-Handbuch S. 16-113).
- 7.
- Programmieren des SCC4 Parameter-RAMs (liegt bei IMM + 0x3F00 = 0xfa203F00):
- Schreibe RXBASE und TXBASE, die auf die BD-Tabellen zeigen. Angenommen die Tx-BD-Tabellen liegen bei 0xfa202A40 und die Rx-BD-Tabellen bei 0xfa202A80, schreibe TXBASE = 0x0A40 und RXBASE = 0x0A80 (vgl. MPC860-Handbuch Seite 16-164).
- RFCR und TFCR = 0x18 für Big-Endian Bytereihenfolge. (vgl. MPC860-Handbuch Seite 16-165)
- Schreibe MRBLR mit der maximalen Anzahl von Bytes pro Empfangspuffer.
- C_MASK = 0x0000F0B8 und C_PRES = 0x0000FFFF, um beim HDLC-Protokoll 16-Bit-CRC zu verwenden (vgl. MPC860-Handbuch Seite 16-216).
- Lösche DISFC, CRCEC, ABTSC, NMARC und RETRC.
- Beschreibe MFLR mit der maximalen HDLC-Rahmenlänge.
- HMASK = 0x0000, um alle Adressen zu erkennen.
- Lösche HADDR1, HADDR2, HADDR3, HADDR4.
- 8.
- Ausführen eines INIT RX PARAMS und INIT TX PARAMS der CPCR für den SCC4. Durch diese Befehle aktualisiert der SCC4 die Werte RBPTR und TBPTR mit den Werten von RXBASE und TXBASE (vgl. MPC860-Handbuch 16-11).
- 9.
- Initialisieren eines Rx-BDs. Rx_BD_Status = 0xB000 (E-Bit = 1 für leerer Speicher, W-Bit = 1 für letzter BD und I-Bit = 1 für Interrupt aktiviert (vgl. MPC860-Handbuch 16-226). In der Interruptroutine wird das E-Bit kontrolliert. Wenn E-Bit = 0 wurde ein HDLC-Rahmen empfangen. E-Bit = 1 setzen, um neuen HDLC-Rahmen zu empfangen.) Rx_BD_Length = 0x0000. Rx_BD_Pointer wird mit der Startadresse des Empfangspuffers im externen Speicher beschrieben.
- 10.
- Initialisieren eines Tx-BDs. Tx_BD_Status = 0xBC00 (R-Bit = 1 für fertiger Speicher, W-Bit = 1 für letzter BD, und I-Bit = 1 für Interrupt aktiviert, TC-Bit für 16-Bit-CRC (vgl. MPC860-Handbuch 16-228). In der Implementierungsphase ist es sehr nützlich, ebenfalls das CM-Bit zu setzten, um eine kontinuierlichen Sendestrom zu erzeugen.) Tx_BD_Length = Länge des Sendepuffers. Tx_BD_Pointer wird mit der Startadresse des Sendepuffers im externen Speicher beschrieben.
- 11.
- SCCE4 = 0xFFFF, um vorherige Ereignisse zu löschen.
- 12.
- SCCM4 = 0x009F, um bei diesen Ereignissen Interrupts auszulösen. (vgl. MPC860-Handbuch S. 16-231)
- 13.
- CIMR Bit 4 = 1, damit SCC4 einen System-Interrupt auslösen kann (vgl. MPC860-Handbuch S. 16-483).
- 14.
- GSMR_H4 = GSMR_L4 = 0x00000000 (vgl. MPC860-Handbuch S. 148). Achtung: Beim Transparent-Modus des SCC GSMR_H4 = 0x00003D80.
- 15.
- PSMR = 0x0000 für 16-Bit-CRC und normale HDLC-Operation (vgl. MPC860-Handbuch 16-222).
- 16.
- GSMR_L4 = 0x00000030, um das Senden und Empfangen mit dem SCC4 zu starten.
Das entsprechende C-Programm ist in den Dateien ,,MpcTsaHdlc.c`` und ,,MpcTsaHdlc.h`` zu finden, die auf der CD im Anhang A im Verzeichnis ,,mbx860isdn`` abgelegt worden sind.
Next: D-Kanal Protokolle
Up: ISDN
Previous: Serial Communication Controller
Thorsten Thormaehlen
2000-03-27