Re: 請問.......下載範例F4520_S.c是否少一行設定.....
|
||||
---|---|---|---|---|
版主
|
SSPCON2bits.SEN = 1 ; 是在主程式裡送出 Start condition 訊號用的,Slave 端無須使用。I2C Master 是呼叫 EEPROM 的函數送出 I2C 的訊號的,其中 EEPROM 的函數是由Microchip 所提供的周邊函數庫。
CKP 在 Slave 是用來 Enable SCL for handshake control, Master 傳送讀取資料命令後並在Slave 傳完 ACK 後 CKP 位元自動設為零,需將要傳給 Master 的資料寫入 SSPBUF 後將 CKP 設為 1 後 Master 就可以傳 Clock 將資料讀走。 如果 Master 只是傳資料給 Slave 而已,則 CKP 不會有限制 SCL 的功能,這時要注意 overflow 的問題發生。 可以參考 I2C Slave mode waveforms for reception (7-bit address) & transmission waveforms 這兩張圖對 CKP 的說明是不一樣的。
發表於: 2008/2/20 14:00
|
|||
|
訪客
|
請問.......下載範例F4520_S.c是否少一行設定.....
|
|||
---|---|---|---|---|
使用PIC18F452當 I2C slave,送資料給master沒問題,
(参考本網站下載範例 F4520_S.c) 但..收資料,一進入中斷,尚未做任何處理,SSPOV即為1, why???? 此時,slave尚未送ACK,master應該不會傳送 第二筆資料?????(示波器量測發現,資料有送出....) ==>F4520_S.c是否少一行設定 SSPCON2bits.SEN = 1 ; 才會出現上述現象,因為收資料時SSPCON1bits.CKP 無動作...........master資料一直送出 若以上敘述有錯,請各位修正......謝謝!!!! < F4520_S.c> //************************************************ //* Initial I2C Master Mode with 7 bits Address * //* Clock Speed : 100KHz @16MHz * //************************************************ void Initialize_I2C_Slave(void) { TRISCbits.TRISC3=1; TRISCbits.TRISC4=1; OpenI2C(SLAVE_7,SLEW_ON); SSPADD= EEPROM_ADDR; SSPSTATbits.CKE=1; // SMBus specific inputs PIR1bits.SSPIF = 0 ; PIE1bits.SSPIE = 1 ; RCONbits.IPEN = 0 ; SSPCON1bits.CKP = 1 ; } |
||||
|