|
|
LIN módok (csak UART1)
A LIN elsősorban az autóipari alkalmazásokban használt protokoll. A LIN hálózat kétféle szoftverfolyamatból áll: Master folyamatból és Slave folyamatból. Minden hálózatnak csak egy mesteri folyamata és egy vagy több szláv folyamata van. Fizikai rétegbeli szempontból az egyik processzoron lévő UART-t mester- és slave-eljárás vezérelheti, amennyiben csak egy mesterfolyam létezik a hálózaton.
A LIN tranzakció Master folyamatból áll, amelyet Slave folyamat követ. A slave-folyamat több olyan szlávot is magában foglalhat, ahol az egyik az átvitelt és a
más (k) fognak. A tranzakció a következő Mesterfeldolgozási sorrendben kezdődik:
1. Break
2. Határoló bit
3. Szinkron mező
4. PID byte
A PID meghatározza, mely Slave folyamatok várhatóan reagálnak a Mesterre. Amikor a PID byte befejeződött, a TX kimenet készenléti állapotban marad. A Slave folyamatok közül egy vagy több válaszolhat a Master folyamatra. Ha senki sem válaszol az inter-bájt periódus alatt, a mester szabadon indíthat egy másik átvitelt. Az inter-byte periódus időzített szoftverrel, az UART kivételével.
A slave folyamat a mesterfolyamatot követi. Amikor a Slave szoftver elismeri a PID-t, akkor a Slave-folyamat válaszként továbbítja a kívánt választ vagy a továbbított adatokat. Csak a Slave feldolgozza az adatokat. Ezért az Slave adatfeldolgozó folyamatai egy másik Slave-eljáráshoz jutnak.
Amikor egy slave adatokat küld, a Slave UART automatikusan kiszámolja az elküldött bájtok ellenőrző összegét, és elküldi őket, és hozzáadja az invertált ellenőrző bájtot a slave válaszhoz.
Amikor egy slave adatokat fogad, az ellenőrző összeg minden egyes bájtra felhalmozódik, ugyanazt az algoritmust fogadja, mint a küldés. Az utolsó bájtot, amely a küldő folyamat által kiszámított inverz ellenőrző összeg, hozzáadódik az UART helyileg kiszámított ellenőrzőösszeghez. A csekk átmegy, ha az eredmény mindegyik 1-es, ellenkező esetben az ellenőrzés meghiúsul és a CERIF bit be van állítva.
Az ellenőrző összeg számításának két módja áll rendelkezésre: örökölt és továbbfejlesztett. A régi ellenőrzőösszeg csak az adatbájtokat tartalmazza. A továbbfejlesztett ellenőrző összeg tartalmazza a PID-t és az adatokat. Az UxCON2 regiszter C0EN vezérlőbitje meghatározza az ellenőrzőösszeg-módszert. A C0EN beállítása "1" -re állítja be a továbbfejlesztett módszert. A szoftvernek ki kell választania a megfelelő módszert, mielőtt megkapja az ellenőrzőösszeg-bájt kezdő bitjét. |
31.5
LIN Modes (UART1 only)
LIN is a protocol used primarily in automotive applications. The LIN network consists of two kinds of software processes: a Master process and a Slave process. Each network has only one Master process and one or more Slave processes. From a physical layer point of view, the UART on one processor may be driven by both a Master and a Slave process, as long as only one Master process exists on the network.
A LIN transaction consists of a Master process followed by a Slave process. The Slave process may involve more than one Slave where one is transmitting and the
other(s) are receiving. The transaction begins by the following Master process transmission sequence:
1. Break
2. Delimiter bit
3. Sync Field
4. PID byte
The PID determines which Slave processes are expected to respond to the Master. When the PID byte is complete, the TX output remains in the Idle state. One or more of the Slave processes may respond to the Master process. If no one responds within the inter-byte period, the Master is free to start another transmission. The inter-byte period is timed by software using a means other than the UART.
The Slave process follows the Master process. When the Slave software recognizes the PID then that Slave process responds by either transmitting the required response or by receiving the transmitted data. Only Slave processes send data. Therefore, Slave processes receiving data are receiving that of another Slave process.
When a Slave sends data, the Slave UART automatically calculates the checksum for the transmitted bytes as they are sent and appends the inverted checksum byte to the slave response.
When a Slave receives data, the checksum is accumulated on each byte as it is received using the same algorithm as the sending process. The last byte, which is the inverted checksum value calculated by the sending process, is added to the locally calculated checksum by the UART. The check passes when the result is all ‘1’s, otherwise the check fails and the CERIF bit is set.
Two methods for computing the checksum are available: legacy and enhanced. The legacy checksum includes only the data bytes. The enhanced checksum includes the PID and the data. The C0EN control bit in the UxCON2 register determines the checksum method. Setting C0EN to ‘1’ selects the enhanced method. Software must select the appropriate method before the Start bit of the checksum byte is received. |
31.5.1
LIN MASTER / SLAVE MODE
A LIN Master módban lehetőség van Slave folyamatok létrehozására. A master folyamat leáll a PID továbbításnál. Minden olyan adatot, amelyet a Master /
A slave üzemmód Slave eljárásként történik. A LIN Master / Slave mód a következő beállításokkal van konfigurálva:
• MODE <3: 0> = 1100
• TXEN = 1
• RXEN = 1
• UxBRGH: L = érték a kívánt adatátviteli sebesség eléréséhez
• TXPOL = 0
(nagy üresjárati állapot esetén)
• STP = kívánt Stop bit kiválasztása
• C0EN = a kívánt ellenőrző ellenőrző mód
• RxyPPS = TX tüskeválasztó kód
• TRIS vezérlés = 0
• BE = 1
Jegyzet:
A TXEN bitet be kell állítani, mielőtt a Master folyamat fogadása megtörténne és LIN módban marad, amíg a slave folyamat egy adó. A mesterfolyamat elindul, ha a PID-t UxP1L regiszterbe írja, amikor az UxP2 "0" és a Az UART készenléti állapotban van. Ebben az esetben az UxTXIF nem állítható be. Csak az UxP1L hat legfontosabb bitjét használják a PID továbbításban. A továbbított PID két legfontosabb bitje PID paritás bit. PID <6> az exkluzív vagy a PID bit 0,1, 2, és 4. A PID <7> az exkluzív vagy a 1,3, 4 és 5 PID bitek inverze. Az UART kiszámítja és beilleszti ezek a bitek a soros streamben. Az UxP1L írása automatikusan törli az UxTXCHK és az UxRXCHK regisztereket, és generálja a tranzakció Break, delimiter bitjét, szinkron karakterét (55h) és PID átviteli részét. A tranzakció adatrésze
ebből következik, ha van ilyen, egy slave folyamat. A folyamat részleteiről lásd a 31.5.2 "LIN Slave Mode" részt. A mester megkapja saját PID-kódját, amikor az RXEN be van állítva. A szoftver végrehajtja a Slave folyamatot, amely megfelel a küldött és fogadott PID-nek. Ha megpróbál írni az UxP1L-t, mielőtt az aktív mesterprocesszor befejeződött, nem sikerül. Ehelyett a TXWRE bit lesz beállítva. |
31.5.1
LIN MASTER/SLAVE MODE
The LIN Master mode includes capabilities to generate Slave processes. The Master process stops at the PID transmission. Any data that is transmitted in Master/
Slave mode is done as a Slave process. LIN Master/Slave mode is configured by the following settings:
• MODE<3:0> = 1100
• TXEN = 1
• RXEN = 1
• UxBRGH:L = Value to achieve desired baud rate
• TXPOL = 0
(for high Idle state)
• STP = desired Stop bits selection
• C0EN = desired checksum mode
• RxyPPS = TX pin selection code
• TX pin TRIS control = 0
• ON = 1
Note:
The TXEN bit must be set before the Master process is received and remain set while in LIN mode whether or not the slave process is a transmitter.The Master process is started by writing the PID to the UxP1L register when UxP2 is ‘0’ and the UART is idle. The UxTXIF will not be set in this case. Only the six Least Significant bits of UxP1L are used in the PID transmission. The two Most Significant bits of the transmitted PID are PID parity bits. PID<6> is the exclusive-or of PID bits 0,1,2,and 4. PID<7> is the inverse of the exclusive-or of PID bits 1,3,4,and 5. The UART calculates and inserts these bits in the serial stream. Writing UxP1L automatically clears the UxTXCHK and UxRXCHK registers and generat es the Break, delimiter bit, Sync character (55h), and PID transmission portion of the transaction. The data portion of the transaction
that follows, if there is one, is a Slave process. See Section 31.5.2 “LIN Slave Mode” for more details of that process. The Master receives it’s own PID when RXEN is set. Software performs the Slave process corresponding to the PID that was sent and received. Attempting to write UxP1L before an active master process is complete will not succeed. Instead, the TXWRE bit will be set. |
31.5.2
LIN SLAVE MODE
A LIN Slave üzemmódot az alábbi beállítások konfigurálják:
• MODE <3: 0> = 1011
• TXEN = 1
• RXEN = 1
• UxP2 = Adott adatbájtok száma
• UxP3 = A fogadni kívánt bájtok száma
• UxBRGH: L = Az alapértelmezett átviteli sebesség elérésének értéke
• TXPOL = 0
(nagy üresjárati állapot esetén)
• STP = kívánt Stop bit kiválasztása
• C0EN = a kívánt ellenőrző ellenőrző mód
• RxyPPS = TX tüskeválasztó kód
• TRIS vezérlés = 0
• BE = 1
A Slave-folyamat az RX-pólus megszakadásának észlelésekor indul. A Break törli az UxTXCHK, UxRXCHK, UxP2 és UxP3 regisztereket. A szünet végén az automatikus baud áramkör aktiválódik, és a sebesség átvitele automatikusan megtörténik a szünet után. A Sync karaktert követő karakter PID kódként fogadódik, és a FIFO fogadása elmentésre kerül. Az UART kiszámítja a két PID paritásbitet a PID hat legfontosabb bitje közül. Ha valamelyik paritás bit nem egyezik a kapott PID kód megfelelő bitjével, a PERIF zászló a PID kóddal azonos FIFO helyre van állítva és mentve. Az UxRXIF bit beállítva jelzi, hogy a PID rendelkezésre áll. A szoftver visszakeréli a PID-t az UxRXB regiszter olvasásával, és meghatározza a végrehajtandó Slave folyamatot. Az ellenőrzőösszeg-módszert, az adatbájtok számát és az adatok küldését vagy fogadását a PID-kód szerinti szoftver határozza meg. |
31.5.2
LIN SLAVE MODE
LIN Slave mode is configured by the following settings:
• MODE<3:0> = 1011
• TXEN = 1
• RXEN = 1
• UxP2 = Number of data bytes to transmit
• UxP3 = Number of data bytes to receive
• UxBRGH:L = Value to achieve default baud rate
• TXPOL = 0
(for high Idle state)
• STP = desired Stop bits selection
• C0EN = desired checksum mode
• RxyPPS = TX pin selection code
• TX pin TRIS control = 0
• ON = 1
The Slave process starts upon detecting a Break on the RX pin. The Break clears the UxTXCHK, UxRXCHK, UxP2, and UxP3 registers. At the end of the Break, the auto-baud circuity is activated and the baud rate is automatically set using the Sync character following the Break. The character following the Sync character is received as the PID code and is saved in the receive FIFO. The UART computes the two PID parity bits from the six Least Significant bits of the PID. If either parity bit does not match the corresponding bit of the received PID code, the PERIF flag is set and saved at the same FIFO location as the PID code. The UxRXIF bit is set indicating that the PID is available. Software retrieves the PID by reading the UxRXB register and determines the Slave process to execute from that. The checksum method, number of data bytes, and whether to send or receive data, is defined by software according to the PID code. |
31.5.2.1
LIN Slave Receiver
Amikor a Slave folyamat vevőkészülék, a szoftver a következő feladatokat végzi el:
• Az UxP3 regiszter értéke megegyezik a fogadni kívánt bájtok számával.
• A C0EN bit beállítása vagy törlése a megfelelő ellenőrző összeg kiválasztásához. Ezt be kell fejezni, mielőtt megkapja az ellenőrző bájt kezdő bitjét.
• A folyamat válaszának minden byte-ja az UxRXB-ből olvasható, amikor a PIR6 regiszter UxRXIF bitje 1 lesz, majd kiolvasva 0-ra vált.
Az UART frissíti az egyes fogadott bájtok ellenőrző összegét. Amikor az utolsó adatbájt érkezik, a kiszámított
a teljes ellenőrző összeg az UxRXCHK regiszterben van tárolva. A következő fogadott bájt a vételi FIFO-ba kerül, és hozzáadódik az UxRXCHK értékhez. Az adagolás eredménye nem hozzáférhető. Ha azonban az eredmény nem mindegyik, akkor az UxERRIR-ben lévő CERIF bit be van állítva. A CERIF zászló továbbra is fennmarad, amíg szoftver el nem hagyja. A szoftvernek el kell olvasnia az UxRXB-t, hogy eltávolítsa a checksum byte-ot a FIFO-ból, de a bájt eldobható, ha más célra nem szükséges.
Miután megkapta az ellenőrzőösszeget, az UART figyelmen kívül hagy minden tevékenységet az RX tüskén, amíg egy Break megkezdi a következő tranzakciót. |
31.5.2.1
LIN Slave Receiver
When the Slave process is a receiver, the software performs the following tasks:
• UxP3 register is written with a value equal to the number of data bytes to receive.
• C0EN bit is set or cleared to select the appropriate checksum. This must be completed before the Start bit of the checksum byte is received.
• Each byte of the process response is read from UxRXB when UxRXIF is set.
The UART updates the checksum on each received byte. When the last data byte is received, the computed
checksum total is stored in the UxRXCHK register. The next received byte is saved in the receive FIFO and added with the value in UxRXCHK. The result of this addition is not accessible. However, if the result is not all ‘1’s, the CERIF bit in the UxERRIR is set. The CERIF flag persists until cleared by software. Software needs to read UxRXB to remove the checksum byte from the FIFO, but the byte can be discarded if not needed for any other purpose.
After the checksum is received, the UART ignores all activity on the RX pin until a Break starts the next transaction. |
31.5.2.2
LIN Slave Transmitter
Ha a slave folyamat adó, akkor a szoftver az alábbi sorrendben végzi a feladatokat:
• Az UxP2 regisztert olyan értékkel kell írni, amely megegyezik az elküldendő bájtok számával. Ez lehetővé teszi a TXIF zászlót, amely le van tiltva, ha az UxP2 "0".
• A C0EN bit beállítása vagy törlése a megfelelő ellenőrző összeg kiválasztásához
• Végrehajtja az inter-byte késleltetést
• A folyamatválasz minden bájtja fel van írva
UxTXB, amikor az UxTXIF be van állítva Az UART összegyűjti az ellenőrző összeget, mivel minden byte UxTXB-re van írva. Az utolsó bájt írása után az UART tárolja a kiszámított ellenőrzőösszeget az UxTXCHK regiszterben, és az invertált eredményt a válaszban az utolsó bájtumból továbbítja.
A TXIF zászló le van tiltva, ha UxP2 byte-okat írtak. Minden olyan UxTXB-re írt, amely meghaladja az UxP2-számot, figyelmen kívül hagyja és beállítja a TXWRE jelzőt az UxFIFO regiszterben. |
31.5.2.2
LIN Slave Transmitter
When the Slave process is a transmitter, software performs the following tasks in the order shown:
• UxP2 register is written with a value equal to the number of bytes to transmit. This will enable TXIF flag which is disabled when UxP2 is ‘0’.
• C0EN bit is set or cleared to select the appropriate checksum
• Inter-byte delay is performed
• Each byte of the process response is written to
UxTXB when UxTXIF is set The UART accumulates the checksum as each byte is written to UxTXB. After the last byte is written, the UART stores the calculated checksum in the UxTXCHK register and transmits the inverted result as the last byte in the response.
The TXIF flag is disabled when UxP2 bytes have been written. Any writes to UxTXB that exceed the UxP2 count will be ignored and set the TXWRE flag in the UxFIFO register. |