Hello, All!
ëÔÏ ÈÏÒÏÛÏ ÚÎÁËÏÍ Ó SPI × MSP430F1xxx ?
ïÞÅÎØ ÎÅÐÏÎÑÔÎÙÊ ÇÌÀË, ÐÏËÁ ÎÅ ÎÁÛÅÌ × ÞÅÍ ÄÅÌÏ. ë SPI ÐÏÄËÌÀÞÅÎÏ Serial RAM.
éÎÉÃÉÁÌÉÚÉÒÕÀ ÅÇÏ ÔÁË: void SPIInit(void){ U0CTL = SWRST + SYNC + CHAR + MM; U0TCTL |= SSEL1 + SSEL0 + STC + CKPH /*+ CKPL*/;
U0BR1 = 0x00; U0BR0 = 0x02;
U0MCTL = 0x000; ME1 = USPIE0; U0CTL &= ~SWRST; }
äÁÌÅÅ ÉÎÉÃÉÁÌÉÚÁÃÉÑ Serial RAM:
void SRAMInit(void){ SPI_CS_ON; U0TXBUF = SRAMCMD_STWRITE; // Write STATUS CMD U0TXBUF = SRAMCMD_SEQNH; // Write STATUS = SEQUENCE WRITE, no HOLD use while(!(U0TCTL & TXEPT)); SPI_CS_OFF; }
á ÐÏÔÏÍ Õ ÍÅÎÑ ÅÓÔØ ÐÒÏÃÅÄÕÒÁ ÔÅÓÔÉÒÏ×ÁÎÉÑ ÐÁÍÑÔÉ: bool SRAMTest(void){ char dh,dl; int i; bool done; // read status: ÔÕÔ Ñ ÐÒÏ×ÅÒÑÀ, ÞÔÏ × ÓÔÁÔÕÓÅ ÔÏ ÞÔÏ Ñ ÔÕÄÁ ÚÁÐÉÓÁ×ÙÌ ÐÒ ÉÎÉÃÉÁÌÉÚÁÃÉÉ SPI_CS_ON; U0TXBUF = SRAMCMD_STREAD; // Read CND U0TXBUF = 0; // data request while(!(U0TCTL & TXEPT)); dh = U0RXBUF; // read Status w/o HOLD bit SPI_CS_OFF;
if (dh!=SRAMCMD_SEQNH) return false;
// ÄÁÌÅÅ × ÃÉËÌÅ ÐÉÛÕ ÁÄÒÅÓ × ÄÁÎÎÙÅ:
done = true; SPI_CS_ON; U0TXBUF = SRAMCMD_WRITE; // Write CMD = WRITE U0TXBUF = 0x00; // Addr-High while(!(IFG1 & UTXIFG0));
U0TXBUF = 0x00; // Addr-Low while(!(IFG1 & UTXIFG0));
for (i=0; i<(BUF_LENGTH/2);i++){ U0TXBUF = (byte)(i>>8); // Data-High while(!(IFG1 & UTXIFG0)); U0TXBUF = (byte)(i); // Data-Low while(!(U0TCTL & TXEPT)); } SPI_CS_OFF; // // ÔÅÐÅÒØ ÞÉÔÁÀ, ÎÁÄÅÑÓØ ÐÏÌÕÞÉÔØ ÔÏÖÅ ÓÁÍÏÅ :)
SPI_CS_ON; U0TXBUF = SRAMCMD_READ; // Read CMD U0TXBUF = 0x00; // Addr-High while(!(IFG1 & UTXIFG0)); U0TXBUF = 0x00; // Addr-Low while(!(IFG1 & UTXIFG0)); for (i=0; i<(BUF_LENGTH/2);i++){ U0TXBUF = 0; // data request while(!(U0TCTL & TXEPT)); dh = U0RXBUF; // read 1st U0TXBUF = 0; // data request while(!(U0TCTL & TXEPT)); dl = U0RXBUF; // read 2nd
if ( ((byte)(i>>8)!=dh) || ((byte)(i)!=dl) ) done = false; } SPI_CS_OFF;
return done; } //
÷Ï 1-È, Ñ ÎÅ ÐÏÎÉÍÁÀ, ÐÏÞÅÍÕ ÐÒÉ ÞÔÅÎÉÉ, ËÏÇÄÁ Ñ ÐÏÓÌÁÌ ÈÏÌÏÓÔÏÊ ÂÁÊÔ "ÔÕÄÁ", ÎÅ ÐÏÌÕÞÁÅÔÓÑ ÏÐÒÁÛÉ×ÁÔØ ÂÉÔ URXIFGO × IFG1 ? ðÒÉÈÏÄÉÔÓÑ ÏÖÉÄÁÔØ ÏÐÕÓÔÏÛÅÎÉÑ ÂÕÆÅÒÏ×, Ô.Å. ÏÐÒÁÛÉ×ÁÔØ TXEPT U0TCTL.
÷Ï 2-È - ÓÔÒÁÎÎÏÅ ÐÏ×ÅÄÅÎÉÅ, ×ÓÅ ×ÙÛÅÎÁÐÉÓÁÎÏÅ ÐÒÅËÒÁÓÎÏ ÒÁÂÏÔÁÌÏ ÎÁ ÍÁËÅÔÅ Ó ÐÒÏÃÏÍ 169, ÇÌÀËÉ ÐÏÌÅÚÌÉ ÎÁ ÎÏÒÍÁÌØÎÏÊ ÐÌÁÔÅ Ó ÐÒÏÃÏÍ 1611 (ÏÎÉ ×ÒÏÄÅ ËÁË ËÏÌÉÞÅÓÔ×ÏÍ ÐÁÍÑÔÉ ×ÓÅÈ ×ÉÄÏ×, ÂÏØÛÅ ÎÉÞÅÍ ÎÅ ÏÔÌÉÞÁÀÔÓÑ!). á Ó 1611 ×ÏÔ ÞÔÏ: Á) ÐÒÉ ÚÁÐÕÓËÅ × ÄÅÂÁÇÇÅÒÅ É ÏÔËÌÀÞÅÎÎÏÊ ÏÐÔÉÍÉÚÁÃÉ, ×ÓÅ ÒÁÂÏÔÁÅÔ. Â) ÐÒÉ ÚÁÐÕÓËÅ × ÄÅÂÁÇÇÅÒÅ É ×ËÌÀÞÅÎÎÏÊ ÏÐÔÉÍÉÚÁÃÉÉ, ÐÒÉ ÞÔÅÎÉÉ ÍÁÓÓÉ×Á (ÐÏÓÌÅÄÎÑÑ ÞÁÓÔØ Ð/Ð SRAMTest) ÞÉÔÁÀÔÓÑ ÎÕÌÉ, É ÓÌÅÄÏ×ÁÔÅÌØÎÏ ×ÙÌÁÚÉÔ ÏÛÉÂËÁ. ×) ÐÒÉ ÚÁÐÕÓËÅ ÂÅÚ ÄÅÂÁÇÇÅÒÁ (ÏÔËÌÀÞÁÀ ÄÖÅÊÔÁÇ) ÏÛÉÂËÁ ×ÙÌÁÚÉÔ ÐÏ ÌÀÂÏÍÕ, ÞÔÏ Ó ÞÔÏ ÂÅÚ ÏÐÔÉÍÉÚÁÃÉÉ. ô.Å. ÄÅÌÁÀ ËÁË × Ð. Á), ×ÓÅ ÒÁÂÏÔÁÅÔ, ÏÔËÌÀÞÁÀ ÄÖÅÊÔÁÇ, ÐÅÒÅÄÅÒÇÉ×ÁÀ ÐÉÔÁÎÉÅ - ÏÛÉÂËÁ.
HÁ ÍÁËÅÔËÅ ÓÏ 169-Í ÒÁÂÏÔÁÌÏ × ÌÀÂÏÍ ×ÉÄÅ, ÎÏ Ñ ×ÓÅ ÖÅ ÐÏÄÏÚÒÅ×ÁÀ ÎÅËÏÒÒÅËÔÎÕÀ ÒÁÂÏÔÕ Ó SPI, ÐÏÓËÏÌØËÕ ÉÌÉ Ñ ÎŠרÅÈÁÌ × ÅÇÏ ÄÁÔÁÛÉÔÏ×ÓËÏÅ ÏÐÉÓÁÎÉÅ, ÉÌÉ ÒÁÂÏÔÁ ÐÒÏÃÁ ÅÍÕ ÎÅ ÏÞÅÎØ ÓÏÏÔ×ÅÔÓ×ÕÅÔ. äÕÍÁÀ ×ÅÒÏÑÔÎÅÅ ÐÅÒ×ÏÅ, ÐÏÜÔÏÍÕ ÎÁÄÅÀÓØ ÎÁ ÐÏÍÏÝØ ÂÏÌÅÅ ÏÐÙÔÎÙÈ × ÒÁÂÏÔÅ Ó TI MSP430. ðÏÜÔÏÍÕ ÓÔÁÎÄÁÒÔÎÙÊ ×ÏÐÒÏÓ - "ÞÔÏ Ñ ÄÅÌÁÀ "ÎÅ ÔÁË" :)
With best regards, Alexander Torres.