SPI

 

Adatlap (pdf): PIC18F(L)xxK42.pdf

http://esca.atomki.hu/PIC18/spi.html

 

 

32.0 SOROSS PERIFÉRIA INTERFÉSZ (SPI) MODUL 
Dokumentáció 512. old.
32.0    SERIAL PERIPHERAL INTERFACE (SPI) MODULE
32.1SPI-modul áttekintéseAz SPI (Serial Peripheral Interface) modul aszinkron soros adatkommunikációs busz, amely teljes duplex üzemmódban működik. Az eszközök kommunikálnak egy master / slave környezetben, ahol a master eszköz kezdeményezi a kommunikációt. A szolga eszközt egy Chip Select segítségével, SlaveSelect néven vezérlik. A példakénti szolgaberendezések közé tartoznak a soros EEPROM-ok, a műszaknyilvántartók, a képernyőmeghajtók, az A / Dkonverterek vagy más PIC® eszközök. Az SPI busz négy jelcsatlakozást határoz meg: • Soros óra (SCK) • Soros adat kimenet (SDO) • Soros adat IN (SDI) • Slave Select (SS) Az SPI interfész a következő üzemmódokat és funkciókat támogatja: • Mester üzemmód • Szolga üzemmód • Óra polaritás és szélválasztás • SDI, SDO és SS polaritás-vezérlés • Külön átvitel és vétel engedélyezve • Szolga kiválasztása szinkronizálás • Szolga eszközök Daisy-láncának csatlakoztatása • Külön átviteli és fogadási pufferek 2 bájtos FIFO és DMA képességekkel A 32-1 ábra mutatja az SPImodule blokk diagramja.
Az SPI átviteli kimenet (SDO_out) elérhető az ott használható PPS SDO tűkre és a következő perifériákra: • Konfigurálható logikai cella (CLC) • Adatjel-modulátor (DSM). Az SPI busz általában egyetlen főkészülékkel és egy vagy több slave eszközzel működik. Többszörös slave eszközök használata esetén független Slave Select kapcsolat szükséges a master eszközről az egyes slave eszközökre. A mester egyszerre csak egy szolgot választ ki. A legtöbb slavedevice háromállapotú kimenetekkel rendelkezik, így azok kimeneti jelzőfényei leválasztódnak a busztól, ha nem választják meg őket. Az átvitel tipikusan eltolódási regisztereket foglal magában, nyolc bites méretű, egyet a masterben és egy a slave-ben. A master- vagy a slave-eszköznél az adatokat mindig egyenként bontják el, és a legjelentősebb bit (MSb) előbb kerül ki. Ugyanakkor egy új bit kicsúszott az eszközbe. A régebbi Microchip eszközökkel ellentétben a SPI a PIC18 (L) F2X / 4X / 5XK42 készüléken kettős különálló regisztereket tartalmaz a bejövő és kimenő adatokhoz. Mindkét regiszternek 2 bájtos FIFO pufferei vannak, és lehetővé teszik a DMA buszkapcsolatot. A 32-2. Ábra egy tipikus kapcsolatot mutat be két masterand rabszolgaként konfiguráltPIC18F2X / 4X / 5XK42 eszköz között. Az adatok eltolódnak az átvitt FIFO-ból a beprogramozott óra szélén és az átváltási regiszterbe az óra ellentétes szélén. A fő eszköz információkat továbbít az SDO kimeneti pin-jén, amely csatlakoztatva van a rabszolga SDI bemeneti pin-jéhez és fogadja azt. A rabszolga eszköz továbbítja az információkat az SDO kimeneti pin-jén, amely csatlakoztatva van, és amelyet a mester SDI bemeneti PIN-je fogad. A fő eszköz az órajelet küldi. Mind a mester, mind a szolga eszközöket ugyanabban az óra polaritásban kell konfigurálni. Minden SPI óraciklus alatt egy teljes duplex adatátvitel történik. Ez azt jelenti, hogy amíg a főkészülék az MSb-t kiküldi a kimeneti regiszteréből (az SDO PIN-kódján), és a slave eszköz ezt a biteket olvassa, és a bemeneti regiszter LSb-jeként megtakarítja, addig a slavedevice az MSb-t is küldi a műszakból regisztráljon (az SDO tűn), és a fő eszköz olvassa ezt a bitet, és menti bemeneti regiszterének LSb-ként. Nyolc bit kivezetése után a master és a slave kicserélt regisztrációs értékeket, és a bejövő adatokat a fogadó FIFO-kba tárolta. Ha több adat van cserélhető, a regiszterekbe új adatok kerülnek, és a folyamat megismétlődik. Az adatok értelmessége vagy sem (dummy data) az alkalmazástól függ. Ez hármas forgatókönyvet eredményez az adatátvitelben: • A mester hasznos adatokat és a szolga küld dummy adatokat • A Master küld hasznos adatokat és a slave hasznos adatokat • Mester küld dummy adatokat és a slave hasznos adatokat küld ebben az adott SPI modulban, a dummy adatokat a szoftver bevonása nélkül is el lehet küldeni. , vagy az RXR bit (dummy adatok fogadására), vagy az TXR bit (a dummy adatok elmulasztása) törlésével (lásd a 32-1. táblázatot, valamint a 32.5. szakasz „Mester üzemmód” és a 32.6. szakasz „Slave mód” további részleteket a TXR / RXR beállításokkal kapcsolatban) ). Ez az SPI modul bármennyi bitet továbbíthat, és információkat küldhet különböző méretű szegmensekben (1-8 bit szélességtől). Mint ilyen, az átvitel tetszőleges számú óraciklust tartalmazhat, a továbbítandó adatok mennyiségétől függően. Ha nincs több továbbítandó adat, a mester leállítja az órajel továbbítását, és megszünteti a szolga kiválasztását. Minden, a buszhoz csatlakoztatott szolga eszköz, amelyet nem választott a szolga választó vonalon keresztül, figyelmen kívül hagyja az órát és az átviteli jeleket, és nem továbbítja a saját adatait.
32.1SPI Module OverviewThe SPI (Serial Peripheral Interface) module is asynchronous serial data communication bus thatoperates in Full-Duplex mode. Devices communicatein a master/slave environment where the master deviceinitiates the communication. A slave device iscontrolled through a Chip Select known as SlaveSelect. Example slave devices include serial EEPROMs, shift registers, display drivers, A/Dconverters, or another PIC® device. The SPI bus specifies four signal connections:•  Serial Clock (SCK)•  Serial Data Out (SDO)•  Serial Data IN (SDI)•  Slave Select (SS)The SPI interface supports the following modes andfeatures:•  Master mode•  Slave mode•  Clock Polarity and Edge Select•  SDI, SDO, and SS Polarity Control•  Separate Transmit and Receive Enables•  Slave Select Synchronization•  Daisy-chain connection of slave devices•  Separate Transmit and Receive Buffers with 2-byte FIFO and DMA capabilitiesFigure 32-1 shows the block di agram of the SPImodule. 
The SPI transmit output (SDO_out) is available to theremappable PPS SDO pin and internally to thefollowing peripherals:•  Configurable Logic Cell (CLC)•  Data Signal Modulator (DSM)The SPI bus typically operates with a single masterdevice and one or more slave devices. When multipleslave devices are used, an independent Slave Selectconnection is required from the master device to eachslave device. The master selects only one slave at a time. Most slavedevices have tri-state outputs so their output signalappears disconnected from the bus when they are notselected. Transmissions typically involve shift registers, eight bitsin size, one in the master and one in the slave. Witheither the master or the slave device, data is alwaysshifted out one bit at a time, with the Most Significant bit (MSb) shifted out first. At the same time, a new bit isshifted into the device. Unlike older Microchip devices, the SPI on the PIC18(L)F2X/4X/5XK42 contains twoseparate registers for incoming and outgoing data. Both registers also have 2-byte FIFO buffers and allowfor DMA bus connections. Figure 32-2 shows a typical connection between twoPIC18F2X/4X/5XK42 devices configured as masterand slave devices. Data is shifted out of the transmit FIFO on theprogrammed clock edge and into the receive shiftregister on the opposite edge of the clock. The master device transmits information on its SDO output pin which is connected to, and received by, the slave’s SDI input pin. The slave device transmits information on its SDO output pin, which is connectedto, and received by, the master’s SDI input pin. The master device sends out the clock signal. Both themaster and the slave devices should be configured forthe same clock polarity. During each SPI clock cycle, a full-duplex datatransmission occurs. This means that while the masterdevice is sending out the MSb from its output register (on its SDO pin) and the slave device is reading this bitand saving as the LSb of its input register, that the slavedevice is also sending out the MSb from its shift register (on its SDO pin) and the master device is reading thisbit and saving it as the LSb of its input register. After eight bits have been shifted out, the master andslave have exchanged register values and stored theincoming data into the receiver FIFOs. If there is more data to exchange,the  registers are loaded with new data and the process repeats itself. Whether the data is meaningful or not (dummy data) depends on the application software. This leads tothree scenarios for data transmission:•  Master sends useful data and slave sends dummy data•  Master sends useful data and slave sends useful data•  Master sends dummy data and slave sends useful dataIn this particular SPI module, dummy data may be sentwithout software involvement, by clearing either the RXR bit (for receiving dummy data) or the TXR bit (forsending dummy data) (see Table 32-1 as well asSection 32.5  “Master mode” and Section 32.6“Slave Mode” for further TXR/RXR setting details). This SPI module can send transmissions of anynumber of bits, and can send information in segmentsof varying size (from 1-8 bits in width). As such, transmissions may involve any number of clock cycles, depending on the amount of data to be transmitted. When there is no more data to be transmitted, themaster stops sending the clock signal and deselectsthe slave. Every slave device connected to the bus that has notbeen selected through its slave select line disregardsthe clock and transmission signals and does nottransmit out any data of its own.
32.2SPI RISZTRISZTIKÁK
• SPI Megszakító Zászló Nyilvántartás (SPIxINTF) • SPI Megszakítás Engedélyezési Nyilvántartás (SPIxINTE) • SPI Bájtos Szám magas és Alacsony regiszterek (SPIxTCTH / L) • SPI Bit Szám Szám Nyilvántartás (SPIxTWIDTH) • SPI Baud Ráta Nyilvántartás (SPIxBAUD) • SPI 0 vezérlőregiszter (SPIxCON0) • SPI vezérlő regiszter 1 (SPIxCON1) • SPI vezérlő regiszter 2 (SPIxCON2) • SPI FIFO állapotregiszter (SPIxSTATUS) • SPI vevő puffer regiszter (SPIxRB) • SPI átviteli puffer regiszter (SPIxTB) • SPI óra kiválasztása Regisztráció (SPIxCLK) Az SPIxCON0, SPIxCON1 és SPIxCON2 az SPI modul vezérlőregiszterei. Az SPIxSTATUS számos Status bitet tartalmaz, amelyek jelzik mind az SPI modul, mind a fogadó és továbbított FIFO-k állapotát. Az SPIxBAUD és az SPIxCLK vezérli az SPI modul adatátviteli sebességét generátor módban. A TheSPIxCLK kiválasztja a használt óraforrást. A TheSPIxBAUD konfigurálja az adott órán használt óraelosztót. Az adatátviteli sebesség-generátorral kapcsolatos további információk a 32.5.6. Szakaszban találhatók. Mindkettő közvetett hozzáférést kínál a shift-nyilvántartásokhoz, amelyeket az adatok be- és kikapcsolására használnak. Mindkét regiszter hozzáfér a kétbájtos FIFO-khoz, lehetővé téve a formális átvitel / fogadás tárolását a szoftverek közötti adatátvitel között. A SPIxTCTH: L regisztrálja a párokat, vagy megszámolja, vagy vezérli az adatátvitel során a bitek vagy bájtok számát. AmikorBMODE = 1, a SPIxTCT érték bájtot jelent, azSPIxTWIDTH érték pedig az abyban lévő bitszámot jelöli. Amikor a BMODE = 0, akkor az SPIxTCT érték hozzáigazításra kerül az SPIxTWIDTH regiszterrel a jelekért. Csak fogadó Master módban (TXR = 0 ésRXR = 1) az adatátvitelt azSPIxTCT írásával indítják el a kívánt bit- vagy byte-értékkel az átvitelhez. Mester átviteli módban (TXR = 1) az adatátvitelt az SPIxTxB regiszter megírásával kezdeményezzük, amely esetben az SPIxTCT egy lefelé számláló az átvitt bitekre vagy orbitokra. Az SPIxINTF és az SPIxINTE az SPI-specifikus megszakításokhoz használható zászlók. Az SPIxIF jelzőhöz és az SPIxIE-hez kötődő lehetőségek engedélyezhetők a PIR és PIE nyilvántartásokban, amely akkor indul el, amikor az SPIxINTF / SPIxINTE nyilvántartásokban esetlegesen megszakítás bekapcsol. A PIR / PIE regiszterek tartalmazzák az SPIxTXIF / SPIxTXIE biteket is, amelyek megszakítás jelzőként szolgálnak, és lehetővé teszik az SPI átviteli megszakítást, valamint az SPIxRXIF / SPIxRXIE biteket, amelyek az SPI vételi megszakítás megszakítási jelzőfényét teszik lehetővé.
32.2SPI REGISTERS
•  SPI Interrupt Flag Register (SPIxINTF)•  SPI Interrupt Enable Register (SPIxINTE)•  SPI Byte Count High and Low Registers (SPIxTCTH/L)•  SPI Bit Count Register (SPIxTWIDTH)•  SPI Baud Rate Register (SPIxBAUD)•  SPI Control Register 0 (SPIxCON0)•  SPI Control Register 1 (SPIxCON1)•  SPI Control Register 2 (SPIxCON2)•  SPI FIFO Status Register (SPIxSTATUS)•  SPI Receiver Buffer Register (SPIxRB)•  SPI Transmit Buffer Register (SPIxTB)•  SPI Clock Select Register (SPIxCLK)SPIxCON0, SPIxCON1, and SPIxCON2 are controlregisters for the SPI module. SPIxSTATUS contains several Status bits that indicatethe status of both the SPI module and the receive andtransmit FIFOs. SPIxBAUD and SPIxCLK control the baud rate gener-ator of the SPI module when in Master mode. TheSPIxCLK selects the clock source that is used. TheSPIxBAUD configures the clock divider used on thatclock. More information on the baud rate generator isavailable in Section 32.5.6 “Master Mode SPI ClockConfiguration”.”SPIxTxB and SPIxRxB  are the transmit and receivebuffer registers used to send and receive data on theSPI bus. They both offer indirect access to shiftregisters that are used for shifting the data in and out.Both registers access the two-byte FIFOs, allowing formultiple transmissions/receptions to be stored betweensoftware transfers the data. The SPIxTCTH:L register pair either count or controlthe number of bits or bytes in a data transfer. WhenBMODE = 1, the SPIxTCT value signifies bytes and theSPIxTWIDTH value signifies the number of bits in abyte. When BMODE = 0, the SPIxTCT value isconcatenated with the SPIxTWIDTH register to signifybits. In Master Receive-only mode (TXR = 0 andRXR = 1), the data transfer is initiated by writingSPIxTCT with the desired bit or byte value to transfer. In Master Transmit mode (TXR = 1), the data transferis initiated by writing the SPIxTxB register, in whichcase the SPIxTCT is a down counter for the bits orbytes transferred. The SPIxINTF and SPIxINTE are the flags andenables, respectively, for SPI-specific interrupts. Theyare tied to the SPIxIF flag and SPIxIE enable in the PIRand PIE registers, which is triggered when any interruptcontained in the SPIxINTF/SPIxINTE registers istriggered. The PIR/PIE registers also containSPIxTXIF/SPIxTXIE bits, which are the interrupt flag and enable for the SPI Transmit Interrupt, as well as theSPIxRXIF/SPIxRXIE bits, which are the interrupt flagand enable for the SPI Receive Interrupt.
32.3SPI ÜZEMMÓD MŰKÖDÉSA SPI inicializálásakor számos lehetőséget kell meghatározni. Ezt úgy végezzük, hogy programozzuk a megfelelő vezérlőbiteket (SPIxCON0 <2: 0>, SPIxCON1 <7: 4>, SPIxCON1 <2: 0> és SPIxCON2 <2: 0>). Ezek a vezérlőbitek lehetővé teszik a következők meghatározását: • Fő mód (SCK az óra kimenete) • Szolga mód (SCK az óra bemenete) • Óra polaritása (SCK tétlen állapot) • Bemeneti, kimeneti és szolga kiválasztott polaritás • Adatok bevitele Mintafázis (az adatok kimeneti idejének közepén vagy végén) • Clock Edge (az adatok kimenete az SCK első / második szélén) • Clock Rate (csak Master üzemmódban) • Slave Select Mode (Master vagy Slave mód) • MSB-First vagy LSB- Első • Fogadási / átviteli módok - Teljes duplex - Fogadás-átvitel nélkül - Adás-átvétel nélküli - Átviteli számláló mód (Átvitel-fogadás nélküli mód) 32.3SPI MODE OPERATIONWhen initializing the SPI, several options need to bespecified. This is done by programming the appropriatecontrol bits (SPIxCON0<2:0>, SPIxCON1<7:4>,SPIxCON1<2:0>, and SPIxCON2<2:0>). Thesecontrol bits allow the following to be specified:•  Master mode (SCK is the clock output)•  Slave mode (SCK is the clock input)•  Clock Polarity (Idle state of SCK)•  Input, Output, and Slave Select Polarity•  Data Input Sample Phase (middle or end of data output time)•  Clock Edge (output data on first/second edge of SCK)•  Clock Rate (Master mode only)•  Slave Select Mode (Master or Slave mode)•  MSB-First or LSB-First•  Receive/Transmit Modes- Full duplex- Receive-without-transmit- Transmit-without-receive• Transfer Counter Mode (Transmit-without-receive mode)
32.3.1 A SPI-MODUL KIVÉTELE ÉS KIKAPCSOLÁSA A soros periféria engedélyezéséhez be kell állítani az SPI engedélyezõ bitjét (ENin SPIxCON0). Az SPImode visszaállításához vagy újrakonfigurálásához törölje az EN bit, indítsa újra az SSPxCONx regisztereket, majd állítsa be az EN bit. Az EN beállítása meghosszabbítja az SPI bemeneteket és kimeneteket: SDI, SDO, SCK (ki), SCK (be), SS (ki) és SS (be). Mindezeket a bemeneteket és kimeneteket a PPS vezérli, ezért funkcióikat megfelelően hozzá kell igazítani az eszközcsapok működéséhez (lásd 17.0. Szakasz „Perifériás csapválasztó (PPS) modul”). Ezenkívül az SS (ki) és az SCK (ki) csapoknak rendelkezniük kell az irányított csapokkal, hogy kimenetként legyenek beállítva (a TRIS bitnek „0” -nak kell lennie) a megfelelő kimenet érdekében. Az SDO PIN-kódjának TRIS bitjének törlése esetén az SPI-modul mindig irányítja azt a PIN-kódot, de az SDO-funkcióhoz ez nem szükséges. (lásd a 32.3.5. szakaszt „Bemeneti és kimeneti polaritási bitek”). A következő nyilvántartások által kiválasztott konfigurációkat nem szabad megváltoztatni, amíg az ENbit be van állítva: • SPIxBAUD • SPIxCON1 • SPIxCON0 (kivéve az EN bit törlését) Az EN bit törlése megszakítja az összes átvitelt, folyamatban van, letiltja a megszakítás jelzők beállítását a hardver segítségével, és visszaállítja a FIFO-t. foglaltság (lásd a 32.3.3. „A FIFO-k küldése és fogadása” fejezetet a FIFO részleteiben). 32.3.1ENABLING AND DISABLING THE SPI MODULE To enable the serial peripheral, the SPI enable bit (ENin SPIxCON0) must be set. To reset or reconfigure SPImode, clear the EN bit, re-initialize the SSPxCONx registers and then set the EN bit. Setting the EN bitenables the SPI inputs and outputs: SDI, SDO,SCK(out), SCK(in), SS(out), and SS(in). All of theseinputs and outputs are steered by PPS, and thus musthave their functions properly mapped to device pins tofunction (see Section 17.0 “Peripheral Pin Select (PPS) Module”). In addition, SS(out) and SCK(out) must have the pins they are steered to set as outputs (TRIS bits must be ‘0’) in order to properly output. Clearing the TRIS bit of the SDO pin will cause the SPI module to always control that pin, but is not necessaryfor SDO functionality. (see Section 32.3.5 “Input andOutput Polarity Bits”). Configurations selected by thefollowing registers should not be changed while the ENbit is set:•  SPIxBAUD•  SPIxCON1•  SPIxCON0 (except to clear the EN bit) Clearing the EN bit aborts any transmissions inprogress, disables the setting of interrupt flags byhardware, and resets the FIFO occupancy (seeSection 32.3.3 “Transmit and Receive FIFOs” formore FIFO details).
32.3.2 BUSY BITMíg az adatátvitel folyamatban van, az SPI modul beállítja az SPIxCON2 BUSY bitjét. Ezt a bitet a felhasználó megkérdezheti, hogy meghatározza az SPImodul aktuális állapotát, és megtudja, mikor van a kommunikáció hiányos. A következő regisztereket / biteket nem írhatja a szoftver a BUSY bit beállításakor: • SPIxTCNTH / L • SPIxTWIDTH • SPIxCON2 • A SPIxSTATUSNote CLRBF bitje: Az SPIx-TCNTH / L olvasása szintén nem javasolt, ha a BUSY bit be van állítva. , mivel a nyilvántartásokban szereplő érték nem biztos, hogy megbízhatóan jelzi a Transzferszámlálót. Használja az Átadási szám nulla megszakító jelzőt (az SPIxINTF TCZIF bitje) annak pontos meghatározásához, hogy az átviteli számláló elérte-e a nullát. 32.3.2 BUSY BITWhile a data transfer is in progress, the SPI modulesets the BUSY bit of SPIxCON2. This bit can be polledby the user to determine the current status of the SPImodule, and to know when a communication iscomplete. The following registers/bits should not bewritten by software while the BUSY bit is set:• SPIxTCNTH/L• SPIxTWIDTH• SPIxCON2• The CLRBF bit of SPIxSTATUSNote:It is also not recommended to read SPIx-TCNTH/L while the BUSY bit is set, as thevalue in the registers may not be a reliableindicator of the Transfer Counter. Use theTransfer Count Zero Interrupt Flag (theTCZIF bit of SPIxINTF) to accuratelydetermine that the Transfer Counter hasreached zero.
32.3.3 FIFOS ÁTVITEL ÉS VÉTEL FIFOS Az adatok SPI-modulból történő továbbítását és fogadását két FIFO kezeli, az egyiket a vételre és egy az átvitelre (az SPR SPSxRXB és SPIxTXB címzettek kezelik.). A TXFIFO-t a szoftverek írják, és az SPI-modul elolvassa az adatáthelyezéshez az SDO-pin. Az RXFIFO-t az SPI modul írja, mivel eltolja az adatokat az SDI pin-ből, és a szoftverek elolvasják. Az SPIxSTATUS CLRBF bitjének beállítása visszaállítja mindkét FIFO kihasználtságát, és mindkét puffert kiüríti. A FIFO-k szintén visszaállíthatók az SPI-modul letiltásával. Az SPIxRXB regiszter a fogadó FIFO-t csak olvashatóként kezeli. Ebből a nyilvántartásból az olvasás az első FIFO helyről, amelyet a hardver írt, és az RXFIFO kihasználtságát csökkenti. Ha a FIFO hihetetlen, akkor ebből a nyilvántartásból történő olvasás ehelyett nulla értéket ad vissza, és beállítja az SPIxSTATUS regiszter RXRE (Receive Buffer ReadError) bitjét. Az RXRE bitminust ezután a szoftverben törölni kell, hogy megfelelően tükrözze az olvasási hiba állapotát. Amikor az RXFIFO megtelt, akkor az SPIxSTATUS regiszter RXBF bitjét beállítja. Amikor az eszköz adatokat fogad az SDI-tűn, akkor a FIFO-t hardverrel lehet megírni, és növelni lehet a foglaltságot, az üzemmód és a vevő beállításaitól függően, amint azt a 32-1. Táblázat foglalja össze. Az SPIxTXB regiszter a továbbított FIFO-t címezi, és csak írásos. A regisztrációval történő írás megírja az első üres FIFO helyet, és növeli a kihasználtságot. Ha a FIFO megtelt, akkor a regisztrációba történő írás nem érinti az adatokat, és beállítja az SPIxSTATUS regisztráció TXWE bitjét. Ha a TXFIFO üres, akkor azSPIxSTATUS TXBE bitjét beállítja. Ha adatátvitel történik, akkor az adatok olvashatók az első FIFO helyről, amelyen a kihasználtság csökken, az üzemmód és az adó beállításaitól függően, amint azt a Ta b l e 3 2 - 1 és a 32.6.1. Szakasz is tartalmazza. 32.3.3 TRANSMIT AND RECEIVE FIFOS The transmission and reception of data from the SPI module is handled by two FIFOs, one for reception andone for transmission (addressed by the SFRs SPIxRXBand SPIxTXB, respectively.). The TXFIFO is written bysoftware and is read by the SPI module to shift the dataonto the  SDO  pin. The RXFIFO is written by the SPI module as it shifts in the data from the SDI pin and isread  by software. Setting the CLRBF bit  ofSPIxSTATUS resets the occupancy for both FIFOs, emptying both buffers. The FIFOs are also reset by disabling the SPI module. The SPIxRXB register addresses the receive FIFO andis read-only. Reading from this register will read fromthe first FIFO location that was written to by hardwareand decrease the RXFIFO occupancy. If the FIFO isempty, reading from this register will instead  return  avalue of zero and set the RXRE (Receive Buffer ReadError) bit of the SPIxSTATUS register. The RXRE bitmust then be cleared in software in order to properly reflect the status of the read error. When RXFIFO is full, the RXBF bit of the SPIxSTATUS register will be set. When the device receives data on the SDI pin, thereceive FIFO may be written to by hardware and theoccupancy increased, depending on the mode andreceiver settings, as summarized in Table 32-1. The SPIxTXB register addresses the transmit FIFO and is write-only. Writing to the register will write to the first empty FIFO location and increase the occupancy. If the FIFO is full, writing to this register will not affectthe data and will set the TXWE bit of the SPIxSTATUSregister. When the TXFIFO is empty, the TXBE bit ofSPIxSTATUS will be set. When a data transfer occurs,data may be read from the first FIFO location written toand the occupancy decreases, depending on modeand transmitter settings, as summarized in Ta b l e 3 2 - 1and Section 32.6.1 “Slave Mode Transmit options”.
32.3.4 LSB VS. MSB ELSŐ MŰKÖDÉS Jellemzően az SPI kommunikáció először a legszignifikánsabb kimenetet adja ki, de egyes eszközök / buszok nem felelnek meg a szabványnak. Ebben az esetben az LSBF bit felhasználható annak a sorrendnek a megváltoztatására, amelyben a biteket az adatcsere során eltolják. Mind Master, mind Slave módban az SPIxCON0 LSBF bitje vezérli, ha az adatok előbb MSb vagy LSb el vannak tolva. A bit törlése (alapértelmezett) az MSb adatátvitelét konfigurálja először, ami a hagyományos SPI művelet, míg a bit beállításakor az adatok konfigurálása az LSb első továbbítására történik. 32.3.4 LSB VS. MSB-FIRST OPERATION Typically, SPI communication is output Most-Significantbit first, but some devices/buses may not conform tothis standard. In this case, the LSBF bit may be used toalter the order in which bits are shifted out during thedata exchange. In both Master and Slave mode, the LSBF bit of SPIxCON0 controls if data is shifted MSb or LSb first. Clearing the bit (default) configures the datato transfer MSb first, which is traditional SPI operation, while setting the bit configures the data to transfer LSb first. 
32.3.5 BE- és KIMENET POLARITÁS BIT
Az SSPIxCON1 három bittel rendelkezik, amelyek szabályozzák az SPI bemenetek és kimenetek polaritását. Az SDIP bit az SDI bemenet polaritását, az SDOP bit az SDO kimenet polaritását, az SSP bit pedig a slave SS bemenet és a master SS kimenet polaritását vezérli. Mindhárom bit esetében, ha a bit tiszta, az inputor kimenete aktív-magas, és amikor a bit be van állítva, a bemenet vagy a kimenet aktív-alacsony. Az SPIxCON0 EN bitjének törlésekor az SS (ki) és az SCK (ki) visszaáll az inaktív állapotba, amelyet a polaritási bitek diktálnak. Az SDO kimeneti állapotot az SPIxCON0 EN bitjének törlésekor több tényező határozza meg. • Ha az SDO PIN-kódhoz tartozó TRIS bit törlődik, és az SPI átváltás után alapjáraton megy, az SDO kimenet az utolsó bit szinten marad. Ha az EN törlődik, az SDO tű visszatér alapjárati állapotba. • Ha az SDO tűhöz társított TRIS bit be van állítva, a viselkedés slave és master módban változik. - Szolga módban az SDO PIN-kód három állapotba kerül, ha: - A Slave Select inaktív, - az SPIxCON0 EN bitje törlődik, vagy ha - az SPIxCON2 TXR bitje törlődik. - Mester üzemmódban az SDO-PIN háromszor állapotban van, amikor TXR = 0. Ha a TXR = 1 és az SPI átvitel után alapjáraton megy, az SDO-kimenet az utolsó bitszinten marad. Ha az EN törlődik, az SDO tű visszatér alapjárati állapotba.
32.3.5 INPUT AND OUTPUT POLARITY BIT
SSPIxCON1 has three bits that control the polarity of the SPI inputs and outputs. The SDIP bit controls thepolarity of the SDI input, the SDOP bit controls the polarity of the SDO output, and the SSP bit controls thepolarity of both the slave SS input and the master SS output. For all three bits, when the bit is clear, the inputor output is active-high, and when the bit is set, theinput or output is active-low. When the EN bit of SPIxCON0 is cleared, SS(out) and SCK(out) bothrevert to the inactive state dictated by their polarity bits. The SDO output state when the EN bit of SPIxCON0 is cleared is determined by several factors. •  When the associated TRIS bit for the SDO pin is cleared, and the SPI goes idle after a transmis-sion, the SDO output will remain at the last bit level. The SDO pin will revert to the Idle state if EN is cleared. •  When the associated TRIS bit for the SDO pin is set, behavior varies in Slave and Master mode. - In Slave mode, the SDO pin tri-states when: -  Slave Select is inactive, - the EN bit of SPIxCON0 is cleared, or when - the TXR bit of SPIxCON2 is cleared. - In Master mode, the SDO pin tri-states when TXR = 0. When TXR = 1 and the SPI goes idle after a transmission, the SDO output will remain at the last bit level. The SDO pin will revert to the Idle state if EN is cleared.
32.4 Átviteli számlálóAz összes fő módban az átviteli számláló segítségével meghatározható, hogy az SPI hány adatátvitelt küld / fogad. Az átviteli számláló SPIxTCTH / L regiszterkészletből áll, és részben az SPIxTWIDTH regiszter irányítja. Az Transfer Counternek két elsődleges módja van, amelyeket az SPIxCON0 regiszter BMODE bitje határoz meg. Mindegyik üzemmódban a SPIxTCTH / L és az SPIxTWIDTH regisztrációkat használják az átutalások számának és méretének meghatározására. Mindkét módban, amikor az átviteli számláló eléri a nullát, a TCZIF megszakítási jelzője be van állítva. 32.4 Transfer CounterIn all master modes, the transfer counter can be used to determine how many data transfers the SPI willsend/receive. The transfer counter is comprised of the SPIxTCTH/L set of registers, and is also partially controlled by the SPIxTWIDTH register. The Transfer Counter has two primary modes, determined by the BMODE bit of the SPIxCON0 register. Each mode usesthe SPIxTCTH/L and SPIxTWIDTH registers to determine the number and size of the transfers. In bothmodes, when the transfer counter reaches zero, the TCZIF interrupt flag is set.
32.4.1 ÖSSZES BITOK SZÁMÍTÁSI ÜZEMMÓD (BMODE = 0) Ebben az üzemmódban az SPIxTCTH / L és az SPIxTWIDTH összekapcsolódik, hogy meghatározzuk az átvitt bitok számát. Ezeket a biteket 8 bites lépésekben tölti be az átvitel / fogadás FIFO-ba / és az átadási számláló nyolcszor csökken, amíg a fennmaradó bitek száma összesen kevesebb, mint nyolc. Ha van fennmaradó bit (SPIxTWIDTH ≠ 0), akkor az átvitt FIFO egy utolsó üzenetet küld minden további bitteljesebbtel, mint a maradék, ha nem veszik figyelembe. A SPIxTWIDTH a fennmaradó bitszám, de az érték nem változik, mint az SPIxTCT értéknél. Hasonlóképpen, a vevő betölti a végső bájtot a FIFO vevőbe, és nullával tölti be az extra biteket. A SPIxCON0 LSBF bitje határozza meg, hogy ennek a végső bájtnak a legjelentősebb vagy a legkevésbé jelentős bitjei vannak-e megadva / töltve. Például, ha LSBF = 0 és a végső átvitel csak két bitet tartalmaz, akkor ha az utolsó küldött bájt 5Fh, akkor a vevő RXB-je 40 órát fog tartalmazni, amely az utolsó bájt két MSbitetje, amelyek nullákkal vannak kitöltve az LSbitekben. Ebben az üzemmódban az SPI-mester csak akkor küld üzeneteket, ha az SPIxTCT érték nullánál nagyobb, függetlenül a TXR és az RXR beállításától. MasterTransmit módban az átvitel az SPIxTXB regiszterbe történő adatírással vagy az SPIxTCTL regiszterbe írt számlálási értékkel kezdődik, amely valaha utoljára történik. Csak fogadó Master módban az átviteli órák az SPIxTCTL érték írásakor indulnak. Az átadási órák felfüggesztésre kerülnek, amikor a fogadó FIFO 32.4.1 TOTAL BIT COUNT MODE (BMODE = 0) In this  mode, SPIxTCTH/L and SPIxTWIDTH are concatenated to determine the total number of bits tobe transferred. These bits will be loaded from/into thetransmit/receive FIFOs in 8-bit increments and thetransfer counter will be decremented by eight until thetotal number of remaining bits is less than eight. If thereare any remaining bits (SPIxTWIDTH ≠0), the transmit FIFO will send out one final message with any extra bitsgreater than the remainder ignored. The SPIxTWIDTH is the remaining bit count but the value does not change as it does for the SPIxTCT value. Similarly, the receiver will load a final byte into the receiver FIFO, and pad the extra bits with zeros. The LSBF bit of SPIxCON0 determines whether the Most Significant orLeast Significant bits of this final byte are  gnored/padded. For example, when LSBF = 0 and the final transfer contains only two bits then if the last byte sentwas 5Fh then the RXB of the receiver will contain 40h which are the two MSbits of the final byte padded with zeros in the LSbits. In this mode, the SPI master will only transmit messages when the SPIxTCT value is greater thanzero, regardless of TXR and RXR settings. In MasterTransmit mode, the transfer starts with the data write tothe SPIxTXB register or the count value written to the SPIxTCTL register, which ever occurs last. In Master Receive-only mode, the transfer clocks start when the SPIxTCTL value is written. Transfer clocks aresuspended when the receive FIFO is full and resumeas the FIFO is read.
32.4.2 VÁLTOZÓ ÁTADÁS MÉRETŰ ÜZEMMÓD (BMODE = 1) Ebben az üzemmódban a SPIxTWIDTH az adatátvitel minden egyes darabjának bitjeiben megadott szélességét adja meg. SPIxTCTH / SPIxTCTL meghatározza ennek a bithossznak az átvitelét. Ha SPIxTWIDTH = 0, akkor minden darab teljes byte-os adatot tartalmaz. Ha SPIxTWIDTH ≠ 0, akkor csak az átvitt FIFO-ból a megadott számú bit kerül kiszorításra, a nem használt biteket figyelmen kívül hagyva. A fogadott adatok nullával vannak feltöltve a fel nem használt bit területeken, amikor átadják a FIFO-t. Az SPIxCON0 LSBF bitje határozza meg, hogy az átvitel legfontosabb vagy legkevésbé jelentős bitjeit figyelmen kívül hagyják-e. Ebben a módban, ha az átviteli számláló nulla, akkor csak az „üzenetek” küldése / fogadása leállítja, ha „Fogadás” módban van. Megjegyzés: Ha a BMODE = 1, akkor az átadási számláló (SPIxTCTH / L) nulla alá eshet, bár “Csak vétel” Master módban az átadási órák leállnak, amikor az átviteli számláló eléri a nullát. 32.4.2 VARIABLE TRANSFER SIZE MODE (BMODE = 1) In this mode, SPIxTWIDTH specifies the width of everyindividual piece of the data transfer in bits. SPIxTCTH/SPIxTCTL specifies the number of transfers of this bitlength. If SPIxTWIDTH = 0, each piece is a full byte ofdata. If SPIxTWIDTH ≠0, then only the specified number of bits from the transmit FIFO are shifted out, with the unused bits ignored. Received data is paddedwith zeros in the unused bit areas when transfered intothe receive FIFO. The LSBF bit of SPIxCON0 determines whether the Most Significant or Least Significant bits of the transfers are ignored/padded. Inthis mode, the transfer counter being zero only stopsmessages from being sent/received when in “Receiveonly” mode. Note:With BMODE = 1, it is possible for thetransfer counter (SPIxTCTH/L) to decrement below zero, although when in“Receive only” Master mode, transfer clocks will cease when the transfercounter reaches zero.
32.4.3. ÁTRTALÁLÓ SZÁMLÁLÓ ÜZEMMÓD Szolga üzemmódban az átviteli számláló továbbra is csökken, mivel az adatok átkerülnek az SPI modulba és ki, de az adatátvitelt nem fogja irányítani. Ráadásul szolga módban a BMODE bit és az átviteli számláló szolgál annak meghatározására, hogy az eszköznek mikor kell keresnie a SlaveSelect hibákat. Ha BMODE = 0, akkor az SSFLT bit akkor lesz beállítva, ha a Slave Select aktívról aktívra állítja az aktív kijelentéses adatbájtot, valamint ha az utolsó bájt alatt elküldött utolsó bit előtt átvált (ha SPIx-TWIDTH ≠ 0). Ha BMODE = 1, akkor az SSFLT bit be lesz állítva, ha a Slave Select aktív állapotból inaktív állapotba kerül, mielőtt az egyes átvitel utolsó bitje befejeződik. Vegye figyelembe, hogy az SSFLT-hez nincs társított megszakítás, ezért ellenőrizni kell azt a szoftverben. Ideális idő erre, ha a Slave Select Interrupt vége (EOSIF) aktiválódik (lásd a 32.8.3.3 „A Slave Select indítása és a Slave Select Interrupts vége” szakaszt). 32.4.3TRANSFER COUNTER IN SLAVE MODE In Slave Mode, the transfer counter will still decrementas data is shifted in and out of the SPI module, but it willnot control data transfers. In addition, in slave mode, the BMODE bit along with the transfer counter is used to determine when the device should look for SlaveSelect faults. If BMODE = 0, the SSFLT bit will be set if Slave Select transitions from its active to inactive stateduring bytes of data, as well as if it transitions beforethe last bit sent during the final byte (if SPIx-TWIDTH≠0). If BMODE=1, the SSFLT bit will be set if Slave Select transitions from its active to inactive state before the final bit of each individual transfer is completed. Note that SSFLT does not have an associated interrupt, so it should be checked in software. An idealtime to do this is when the End of Slave Select Interrupt (EOSIF) is triggered (see Section 32.8.3.3 “Start ofSlave Select and End of Slave Select Interrupts”).
32.5 Mester üzemmód Mester üzemmódban az eszköz vezérli az SCK vonalat, és mint ilyen kezdeményezi az adatátvitelt, és meghatározza, hogy a rabszolgák mikor sugározzák az adatokat az SPI buszra. Ennek az eszköznek a fő módja négy különbözõ módban konfigurálható, amelyeket a TXR és az RXR bitek konfigurálnak: • Teljes duplex üzemmód • Csak vételi mód • Csak átviteli mód • Átvitel kikapcsolt üzemmód Az üzemmódok az alábbi 32-1. Táblázatban találhatók: 32.5 Master modeIn master mode, the device controls the SCK line, and as such, initiates data transfers and determines when any slaves broadcast data onto the SPI bus. Master mode of this device can be configured in fourdifferent modes, configured by the TXR and RXR bits: • Full Duplex mode • Receive Only mode • Transmit Only mode • Transfer Off modeThe modes are illustrated in Table 32-1, below:
32.5.1FULL DUPLEX MODE Ha mind a TXR, mind az RXR beállítva, az SPI master teljes duplex üzemmódban van. Ebben az üzemmódban az adatátvitel indítását a SPIxCON0 BMODE bitje befolyásolja. Amikor a BMODE = 1, akkor az adatátvitel akkor történik, ha az RXFIFO nem tele van, és vannak adatok a TXFIFO-ban. A gyakorlatban mindaddig, amíg az RXFIFO nem valósul meg, az adatok továbbításra / fogadásra kerülnek, amint az SPIxTxB regiszter meg van írva, az SPI (MSSP) modulok megfelelő funkcióival a régebbi 8 bites Microchip eszközökön. Az SPIxTCNT csökken minden egyes átadáskor. Ha azonban SPIxTCNT nulla, akkor a következő átvitelt nem gátolják, és a megfelelő SPIxTCNT csökkentés a számlálás maximális értékre való visszatekerését idézi elő. A 32-3. Ábra egy példát mutat az e móddal történő kommunikációra. Ha BMODE = 0, akkor az átutalási számlálót (SPIxTCNTH / SPIxTCNTL) szintén meg kell írni, mielőtt az átvitel megtörténik, és az átvitel leáll, amikor az átutalási számláló eléri a „0” értéket. Például, ha az SPIxTXB kétszer íródik, majd az SPIxTCTL '3' betűvel íródik, akkor az átvitel az SPIxTCTL írással kezdődik. A két bájt a TXFIFO-ban elküldésre kerül, miután az átvitel felfüggeszti, amíg a harmadik és az utolsó bájtot nem írják az SPIxTXB-re. 32.5.1FULL DUPLEX MODE When both TXR and RXR are set, the SPI master is in Full Duplex mode. In this mode, data transfer triggeringis affected by the BMODE bit of SPIxCON0. When BMODE = 1, data transfers will occur when everboth the RXFIFO is not full and there is data present in the TXFIFO. In practice, as long as the RXFIFO is notfull, data will be transmitted/received as soon as the SPIxTxB register is written to, matching functionality of SPI (MSSP) modules on older 8-bit Microchip devices. The SPIxTCNT will decrement with each transfer. However, when SPIxTCNT is zero the next transfer isnot inhibited and the   corresponding SPIxTCNT decrement will cause the count to roll over to the maximum value. Figure 32-3 shows an example of acommunication using this mode. When BMODE = 0, the transfer counter (SPIxTCNTH/SPIxTCNTL) must also be written to before transfers will occur, and transfers will cease when the transfer counter reaches ‘0’. For example, if SPIxTXB is written twice and then SPIxTCTL is written with ‘3’ then the transfer will start with the  SPIxTCTL write. The two bytes in the TXFIFO will be sent after which the transfer will suspend until the third and last byte is written to SPIxTXB.
32.5.2 TRUSTMIT ONLY MODEW
Ha a TXR=1 és az RXR=0, az SPI master csak csak adatküldési üzemmódban van. Ebben az üzemmódban az SPIxCON0 BMODE bitje befolyásolja az adatátvitelt. Ha a BMODE=1, akkor az adatátvitel akkor történik, amikor a TXFIFO nem üres. Az adatokat úgy továbbítják, ahogyan a TXFIFO regiszter meg van írva, az SPI (MSSP) modulok megfelelő működésével a korábbi 8-bitMicrochip eszközökön.
Az SPIxTCNT csökkenti az az értékét minden elküldött adatbájtkor. Ha azonban SPIxTCNT nulla lesz, akkor ezzel a következő átvitelt nem gátolja, viszont a SPIxTCNT csökkentés miatt a szám meghaladja a maximális értéket mert alulcsordulás valósul meg ami azzal jár, hogy SPIxTCNT-be olyan adat keletkezik, ami meghaladja az elküldhető adatszámot, vagyis hiba keletkezik . Az ebben az üzemmódban és ebben az esetben a léptetőregiszternek küldött adatok nem tárolódnak az RXFIFO-ban. A 32-4. ábra példát mutat egy parancs elküldésére, majd az adatok bájtjának elküldésére ebben a módban. Ha BMODE = 0, akkor az átviteli számlálót (SPIxTCNTH / L) szintén meg kell írni, mielőtt az átvitel megtörténik, és az átvitel leáll, ha az átviteli szám „0” -ra csökken. Például, ha az SPIxTXB kétszer, az SPIxTCTL pedig „ 3 ', az átvitel az SPIxTCTL írással kezdődik. A két bájt a TXFIFO-ban elküldésre kerül, miután az átvitel felfüggesztésre kerül addig, amíg a harmadik, vagyis az utolsó bájtot az SPIxTXB-be nem írják be.
32.5.2TRANSMIT ONLY MODE
When TXR is set and RXR is clear, the SPI master is inTransmit Only mode. In this mode, data transfertriggering is affected by the BMODE bit of SPIxCON0. When BMODE=1, data transfers will occur wheneverTXFIFO is not empty. Data will be transmitted as soonas the TXFIFO register is written to, matchingfunctionality of SPI (MSSP) modules on previous 8-bitMicrochip devices.
The SPIxTCNT will decrement witheach  transfer. However, when SPIxTCNT is zero thenext transfer is not inhibited and the correspondingSPIxTCNT decrement will cause the count to roll overto the maximum value. Any data received in this modeis not stored in RXFIFO. Figure 32-4 shows an example of sending a command and then sending abyte of data, using this mode. When BMODE= 0, the transfer counter (SPIxTCNTH/L) must also be written to before transfers will occur,and transfers will cease when the transfer counterreaches ‘0’.For example, if SPIxTXB is written twice and thenSPIxTCTL is written with ‘3’, the transfer will start withthe SPIxTCTL write. The two bytes in the TXFIFO willbe sent after which the transfer will suspend until thethird and last byte is written to SPIxTXB.
32.5.3 CSAK VÉGREHAJTÁSI ÜZEMMÓD Ha az RXR beállítva és a TXR tiszta, az SPI-master csak vételi módban van. Ebben az üzemmódban az adatátvitel akkor történik, ha az RXFIFO nem tele van, és az átviteli számláló nulla nem. Ebben az üzemmódban az érték SPIxTCNTL-re történő írása elindítja az átváltási órákat. Az órák felfüggesztésre kerülnek, amíg az RXFIFO tele van, és leállnak, amikor az SPIxTCNT eléri a nullát (lásd 32.4. Szakasz „Átviteli számláló”). Ha van adat a TXFIFO-ban, akkor a TXFIFO-nak írt első adatok kerülnek továbbításra minden adatcserénél, bár a TXFIFO kihasználtsága nem változik, vagyis ugyanaz az üzenet jelenik meg minden átvitelnél. Ha a TXFIFO-ban nincs adat, akkor a legutóbb kapott adatok kerülnek továbbításra. A 32-5. Ábra egy példát mutat a küldési parancsra a 32.5.2. Szakaszban, “Csak átvitt állapotban”, és egy bájtnyi adat vételével ebben az üzemmódban. 32.5.3 RECEIVE ONLY MODE When RXR is set and TXR is clear, the SPI master is in Receive Only mode. In this mode, data transfers when the RXFIFO is not full and the Transfer Counter is non-zero. In this mode, writing a value to SPIxTCNTL will start the clocks for transfer. The clocks will suspend while the RXFIFO is full and cease when the SPIxTCNT reaches zero (see Section 32.4 “Transfer Counter”). If there is any data in the TXFIFO, the firs data written to the TXFIFO will be transmitted on each data exchange, lthough  the TXFIFO occupancy will not change, meaning that the same message will besent on each transmission. If there is no data in the TXFIFO, the most recently received data will instead be transmitted. Figure 32-5 shows an example of sendinga command using Section 32.5.2 “Transmit OnlyMode” and then receiving a byte of data using this mode.
32.5.4 ÁTVITEL KI ÜZEMMÓD Ha mind a TXR, mind az RXR törlődik, az SPI master átviteli kikapcsolt üzemmódban van. Ebben az üzemmódban az SCK nem válthat, és nincs adatcsere. Az SPIxTXB számára írt írás azonban átkerül a TXFIFO-ba, amelyet továbbítanak, ha az TXR bit be van állítva. 32.5.4 TRANSFER OFF MODE When both TXR and RXR are cleared, the SPI masteris in Transfer Off mode. In this mode, SCK will not toggle and no data is exchanged. However, writes to SPIxTXB will be transferred to the TXFIFO which will be transmitted if the TXR bit is set. 
32.5.5 MASTER MODE SLAVE SELECT CONTROL 32.5.5 MASTER MODE SLAVE SELECT CONTROL
32.5.5.1 Hardver Slave Select vezérlés Ez az SPI modul lehetővé teszi a Slave Select kimenet közvetlen hardveres vezérlését. A Slave Select kimeneti SS (kimenetet) egyaránt közvetlenül, az SPIxCON2 SSET bitjével, és a hardveren keresztül közvetett módon is ellenőrzi, miközben az átadási számláló nulla nem (lásd 32.4. Szakasz “Átviteli számláló”). Az SS-t (kimenetet) a PPS-regiszterek csapokra irányítják (lásd 17.2. Szakasz „PPS-kimenetek”), és polaritását azSPIxCON1 SSP bitje vezérli. Az SSET bit beállításával az SS (ki) is érvényesül. Az SSET bit törlésével az SS (out) az átviteli számláló általi ellenőrzés alatt marad. A TransferCounter betöltésekor az SPI modul automatikusan behelyezi az SS-t. Amikor az átviteli számláló nullára csökken, az SPI modul az SS átadását az utolsó átvitel utolsó SCK impulzusát követõen egyhangú periódussal (ha CKE / SMP = 0/1), vagy féláram periódust periódusban (lásd a 32-6. Ábrát). 32.5.5.1 Hardware Slave Select Control This SPI module allows for direct hardware control of a Slave Select output. The Slave Select output SS(out) iscontrolled both directly, through the SSET bit of SPIxCON2, as well indirectly by the hardware while thetransfer counter is non-zero (see Section 32.4“Transfer  Counter”). SS(out) is steered by the PPS registers to  pins  (see  Section 17.2  “PPS  Outputs”) and   its   polarity   is   controlled   by   the   SSP   bit   ofSPIxCON1.  Setting  the  SSET  bit  will  also  assertSS(out). Clearing the SSET bit will leave SS(out) to becontrolled by the Transfer Counter. When the TransferCounter  is  loaded,  the  SPI  module  will  automaticallyassert the SS. When the Transfer Counter decrementsto zero, the SPI module will deassert SS either onebaud period after the final SCK pulse of the final transfer (if CKE/SMP = 0/1) or one half baud periodotherwise(see Figure 32-6).
32.5.5.2 Szoftver-slave Select A ControlSlave Select szoftveren keresztül egy általános célú I / O tüskével is vezérelhető. Ebben az esetben ellenőrizze, hogy a kérdéses PIN-kód GPIO-n keresztül van-e konfigurálva a PPS-n keresztül (lásd a 17.2. Szakaszt “PPS-kimenetek”), és ellenőrizze, hogy a csap legyen kimenetként beállítva (törölje a megfelelő bitot a megfelelő TRIS-regiszterben). Ebben az esetben az SSET nem befolyásolja a szolga kiválasztását, az Átviteli számláló nem automatikusan vezérli a szolga kiválasztási kimenetet, és a szolga választó kimeneti sor összeszerelését és törlését közvetlenül a szoftver vezérli. 32.5.5.2 Software Slave Select ControlSlave Select can also be controlled through softwarevia a general purpose I/O pin. In this case, ensure thatthe pin in question is configured as a GPIO throughPPS (see Section 17.2 “PPS Outputs”), and ensurethat the pin is set as an output (clear the appropriate bitin the appropriate TRIS register). In this case, SSETwill not affect the slave select, the Transfer Counter willnot automatically control the slave select output, and allsetting and clearing of the slave select output line mustbe directly controlled by software.