I2C módban a mester adatfogadása a szolgától 7 bites címzéssel |
?- A mester által továbbított címsávban lévő 8. bitet használják annak meghatározására, hogy a mester szeretne olvasni a Slave dev ice-ből vagy írni. Ha be van állítva, azt jelöli, hogy a mester a slave-ről akar olvasni, és ha törölni akarja, azt jelenti, hogy a mester a slave eszközre akar írni.
Ha van egy címegyezés, az R / W bit átmásolódik az I2CxSTAT0 regiszter R / W bitjére.
?-Ez a leírás ismerteti az I2C modul konfigurálását I2C 7-bites címzési módban konfigurált eseménysorozatait, és adatokat fogad. 33-6. Ábra, 33-7. Ábra és 33-8. Ábra vizuális referenciaként szolgál erre a leírásra |
Katalógus 552 oldal.
SLAVE OPERATION IN 7-BIT ADDRESSING MODE
The 8th bit in an address byte transmitted by the master is used to determine if the Master wants to read from or write to the Slave dev ice. If set, it denotes that the Master wants to read from the slave and if cleared it means the master wants to write to the slave device.
If there is an address match, the R/W bit is copied to the R/W bit of the I2CxSTAT0 register.
This section describes the sequence of events for the I2C module configured as an I2C slave in 7-bit Addressing mode and is receiving data. Figure 33-6, Figure 33-7, and Figure 33-8 are used as a visual reference for this description. |
1. |
?-A mester a buszon elindítja a start állapotot (lehet újraindítás is). Az indítási állapot Megszakítási zászló (SCIF) van beállítva az I2CxPIR regiszterben. |
Master asserts Start condition (can also be a restart) on the bus. Start condition Interrupt Flag (SCIF) in I2CxPIR register is set. |
2. |
?- Ha az indítási állapot megszakítása engedélyezett (SCIE bit beállítása), az általános megszakítás I2CxIF beállításra kerül. |
If Start condition interrupt is enabled (SCIE bit is set), generic interrupt I2CxIF is set. |
3. |
?-A mester nyolc bitet küld - 7 bites címet és R / W = 0. |
Master transmits eight bits – 7-bit address and R/W=0. |
4. |
?-A beérkezett címet összehasonlítjuk az I2CxADR0 / I2CxADR1 / I2CxADR2 / I2CxADR3 regiszterek értékeivel. A slave címzési módokról lásd a 33.4.1 szakasz "Slave Addressing Mode" című részét. |
Received address is compared with the values in I2CxADR0/I2CxADR1/I2CxADR2/I2CxADR3 registers. Refer to section Section 33.4.1 “Slave Addressing Modes”for slave addressing modes. |
5. |
?-Ha a cím megegyezik; SMA az I2CxSTAT0 regiszterben van beállítva, az R / W át lett másolva R / W bitre, a D / A bit törlődik. Ha a cím nem egyezik meg; a modul üresjáratban marad. |
If address matches; SMA in I2CxSTAT0 register is set, R/W is copied to R/W bit, D/A bit is cleared. If the address does not match; module becomes idle. |
6. |
?-Az illesztett címadatokat I2CxADB0-ba töltik be, és I2CxPIR regiszterben ADRIF be van állítva. |
The matched address data is loaded into I2CxADB0 and ADRIF in I2CxPIR register is set. |
7. |
?-Ha a Címtartás megszakítás engedélyezve van (ADRIE = 1), a CSTR be van állítva. I2CxIF van beállítva. A slave szoftver képes olvasni az I2CxADB0 címet, és az SCL felszabadítása előtt beállítani / törölni az ACKDT-t. |
If Address hold interrupt is enabled (ADRIE=1), CSTR is set. I2CxIF is set. Slave software can read address from I2CxADB0 and set/clear ACKDT before releasing SCL. |
8. |
?- Ha vannak korábbi hibaállapotok, például a Receive buffer overflow vagy az átviteli buffer aluláteresztő hibái, akkor a slave egy NACK-ot kényszerít és a modul üresjáratba kerül. |
If there are any previous error conditions, e.g., Receive buffer overflow or transmit buffer under- flow errors, Slave will force a NACK and the module becomes idle. |
9. |
?- Az ACKDT értéket SDA-ra másolja az ACK impulzusra, hogy a Mester a 9. SCL impulzuson leolvassa. |
ACKDT value is copied out to SDA for ACK pulse to be read by the Master on the 9th SCL pulse. |
10. |
Ha a nyugtázó szakítani, és tartsa be van kapcsolva (ACKTIE = 1), CSTR van beállítva, I2CxIF van beállítva, akkor Slave program tudja olvasni címet I2CxADB0 regisztrálni és módosítsa az értéket a ACKDT kiadása előtt SCL törlésével CSTR. |
If the Acknowledge interrupt and hold is enabled (ACKTIE=1), CSTR is set, I2CxIF is set, then Slave software can read address from I2CxADB0 register and change the value of ACKDT before releasing SCL by clearing CSTR. |
11. |
A mester az adatbájt első hét SCL impulzusát vagy a Stop állapotot (NACK esetén) küldi. |
Master sends first seven SCL pulses of the data byte or a Stop condition (in the case of NACK). |
10. |
Ha Stop állapot; PCIF I2CxPIR regiszterben van beállítva, a modul készenléti állapotba kerül. |
If Stop condition; PCIF in I2CxPIR register is set, module becomes idle. |
13. |
Ha a vételi puffer tele van az előző tranzakciótól, azaz RXBF = 1 (I2CxRXIF = 1), a CSTR be van állítva. A slave szoftvernek ki kell olvasnia az I2CxRXB-ből származó adatokat a kommunikáció folytatásához. |
If the receive buffer is full from the previous transaction i.e. RXBF=1 (I2CxRXIF=1), CSTR is set. Slave software must read data out of I2CxRXB to resume communication. |
14. |
A mester az adatbájt 8. SCL impulzusát küldi. D / A bit be van állítva, a WRIF be van állítva. |
Master sends 8th SCL pulse of the data byte. D/A bit is set, WRIF is set. |
15. |
Az I2CxRXB új adatokat tölt be, az RXBF bit be van állítva, az I2CxRXIF be van állítva. |
I2CxRXB is loaded with new data, RXBF bit is set, I2CxRXIF is set. |
16. |
Ha az Adat megírása megszakítás és a tartás engedélyezve van (WRIE = 1), a CSTR be van állítva, az I2CxIF be van állítva. Az Slave szoftver az I2CxRXB-ről és az ACKDT beállításáról / törléséről olvasható az SCL felszabadítása előtt a CSTR törlésével. |
If Data write interrupt and hold is enabled (WRIE=1), CSTR is set, I2CxIF is set. Slave software can read data from I2CxRXB and set/clear ACKDT before releasing SCL by clearing CSTR. |
17. |
Ha I2CxCNT = 0, akkor az ACKCNT érték az SDA-ba kerül; Egyébként, ha I2CxCNT! = 0, az ACKDT értéket használják, és az I2CxCNT értéke csökken. |
If I2CxCNT=0, the ACKCNT value is output to the SDA; else, if I2CxCNT!=0, the ACKDT value is used and the value of I2CxCNT is decremented. |
18. |
Az ACK értéket SDA-ba másolja, hogy a Mester a 9. SCL impulzuson leolvassa. |
The ACK value is copied out to SDA to be read by the Master on the 9th SCL pulse. |
19. |
Ha I2CxCNT = 0, a CNTIF be van állítva. |
If I2CxCNT=0, CNTIF is set. |
20. |
Ha egy NACK-t küldtek, a NACKIF be van állítva, a modul üresjáratban marad. |
If a NACK was sent, NACKIF is set, module becomes idle. |
21. |
Ha ACKTIE = 1, CSTR van beállítva, I2CxIF van beállítva. A slave szoftver az I2CxRXB clearing RXBF-ből származó adatokat képes olvasni, mielőtt az SCL-t felszabadítaná a CSTR törlésével. |
If ACKTIE=1, CSTR is set, I2CxIF is set. Slave software can read data from I2CxRXB clearing RXBF, before releasing SCL by clearing CSTR. |
22. |
Folytassa a 11. lépéssel. |
Go to step 11. |