會員登陸
帳號:

密碼:

記住我



忘記密碼?

現在註冊!
網站導航
最新下載
訪問統計 (自2012/5/3)


正在流覽:   1 名訪客





[請教]PIC32MX230F064D的I2C Slave Mode
中級會員
註冊日期:
2010/10/19 13:16
所屬群組:
註冊會員
文章: 45
等級: 5; EXP: 51
HP : 0 / 112
MP : 15 / 2586
離線
請教一下各位大大,我使用MCC所產生的I2C Slave mode的功能,但我送資料進去時,void __ISR( _I2C_2_VECTOR, IPL1AUTO) _I2C_2 ( void )這個函數完全沒有動作,我有用示波器量SDA和SCL上有訊號,所以想請教一下,是否有大大有試這I2C slave mode的功能?

附加檔案:



jpg  1.JPG (44.35 KB)
7508_5a601329a1e0f.jpg 532X448 px

jpg  2.JPG (24.61 KB)
7508_5a60132f244a0.jpg 382X276 px

1月18日 11:21:16
轉換PDF檔 列印


Re: [請教]PIC32MX230F064D的I2C Slave Mode
版主
註冊日期:
2004/04/30 10:53
來自 CAE, Microchip
所屬群組:
站務管理者
註冊會員
MICROCHIP
文章: 14432
等級: 72; EXP: 95
HP : 1079 / 1798
MP : 4810 / 75194
離線
有 I2C Slave 功能的。

同一個 I2C Module 當下只能設定是 Master 或是 Slave 功能的。

I2C 的 Slave 是被動的,它需要有 I2C Master 的訊號號才會動作。所以一般練習 I2C Salve 時候都會先寫一個 I2C Master 再連接一個 I2C EEPROM (24LC02B) 先確認 Master 可以正常讀寫後再寫 I2C Slave Device.


注意一下這裡的 Slave Address 是 Command 裡的 b7 ~ b1 共七個位元,而 b0 是 R/W 位元。所ˇ再填入 Slave Address 時要注意。

還有你的 Master 送過來的 Slave Address 會與真正的 Slave Address 做比對,要 Match 後才會產生中斷的。

1月18日 13:46:19
轉換PDF檔 列印


Re: [請教]PIC32MX230F064D的I2C Slave Mode
中級會員
註冊日期:
2010/10/19 13:16
所屬群組:
註冊會員
文章: 45
等級: 5; EXP: 51
HP : 0 / 112
MP : 15 / 2586
離線
謝謝大大的回覆.
原來我之前是位置設定到10bits的.

想請教另一個問題,我現在進到
void __ISR( _I2C_2_VECTOR, IPL1AUTO) _I2C_2 ( void )裡的

if (I2C2_READ_NOT_WRITE_STATUS_BIT == 0)
{

// it is a write, go to receive mode
not_busy = I2C2_StatusCallback(I2C2_SLAVE_RECEIVE_REQUEST_DETECTED);
i2c2_slave_state = S_SLAVE_RECEIVE_MODE;

if (not_busy == true)
{
// read the receive register only when
// we are ready for the next transaction.
// this one is a dummy read
dummy = I2C2_RECEIVE_REG;
}

}

就會在收不下來資料,請問"dummy = I2C2_RECEIVE_REG;"這裡是要怎麼處理?

1月19日 14:55:34
轉換PDF檔 列印


Re: [請教]PIC32MX230F064D的I2C Slave Mode
中級會員
註冊日期:
2010/10/19 13:16
所屬群組:
註冊會員
文章: 45
等級: 5; EXP: 51
HP : 0 / 112
MP : 15 / 2586
離線
請教一下各位大大,我現在從I2C Master送0x1A 0x10 0x01,但我的MCU只會收到0x1A 0x10時,我的I2C Master就會當掉,它會回說Slave沒有回應ACK,想請問,這是什麼樣狀況才會產生?

1月22日 15:59:36
轉換PDF檔 列印


Re: [請教]PIC32MX230F064D的I2C Slave Mode
中級會員
註冊日期:
2010/10/19 13:16
所屬群組:
註冊會員
文章: 45
等級: 5; EXP: 51
HP : 0 / 112
MP : 15 / 2586
離線
自己解答一下,我是收完master送完address後的第一個byte時,我的clock會拉不起來,後來在bool I2C2_StatusCallback(I2C2_SLAVE_DRIVER_STATUS status)裡的case I2C2_SLAVE_RECEIVED_DATA_DETECTED:
加上了
// set the SCL clock to be released
I2C2_RELEASE_SCL_CLOCK_CONTROL_BIT = 1;就結案了.
也不知這是不是正規的做法?

2月01日 18:02:24
轉換PDF檔 列印


Re: [請教]PIC32MX230F064D的I2C Slave Mode
版主
註冊日期:
2004/04/30 10:53
來自 CAE, Microchip
所屬群組:
站務管理者
註冊會員
MICROCHIP
文章: 14432
等級: 72; EXP: 95
HP : 1079 / 1798
MP : 4810 / 75194
離線
Slave 收到正確的資料時會將進入中斷時會將 SCL 拉成 Low 訊號已通知 Master 暫停送下一個資料進來。這是 I2C Master 與 Slave 的控制方式。
Slave 在中斷裡須將資料快速的提走,釋放中斷時再做 Release SCK 的動作即可。

參考一下附圖,8-bit 的 PIC 是寫 1 到 CKP 位元就可以 Release SCK 了。

附加檔案:



jpg  擷取.JPG (59.26 KB)
16_5a73e07a526aa.jpg 771X707 px

2月02日 11:52:26
轉換PDF檔 列印






無法在此發表文章
可以在此觀看文章
無法回覆文章
無法編輯自己的文章
無法刪除自己的文章
無法發起投票調查
無法在此投票
無法上傳附加檔案
無法不經審核直接發表文章

[進階搜尋]


搜尋
Microchip連結

網頁捷徑
2018 Winter Elite 報名
教育訓練
其它網站連結
電話: 02-25000405
產品技術問題產品技術支援專線:0800-717718 台北02-25088600 新竹03-5778366 Ext. 8600 高雄07-2137830 MicrochipDIRECT 專線: 07-2137830
Powered by XOOPS © 2001-2012 The XOOPS Project