Re: 關於I2C
|
||||
---|---|---|---|---|
中級會員
|
在請教一下
Ans6-1 void Initialize_I2C_Master(void) { OpenI2C(MASTER,SLEW_ON); SSPADD= 28; } 我現在是Master 那MASTER,SLEW_ON 要如何算
發表於: 2007/7/6 16:55
|
|||
|
Re: 關於I2C
|
||||
---|---|---|---|---|
版主
|
會亂的原因是因為 I2C Bus 的通訊協定不甚了解。建議將I2C研讀清楚。
開始 ->0xf8->資料->結束 的格式是不對的,如果以標準的 I2C 寫入資料的格式應該是 : Start + Slave Address and R/W + address for write rggister + Write data + Stop (Read 又不一樣) http://www.microchip.com.tw/example.htm 簡單的範例在這哩,你也可以下載 W401 Workshop 教材將第六章讀一下。
發表於: 2007/7/5 20:00
|
|||
|
Re: 關於I2C
|
||||
---|---|---|---|---|
中級會員
|
越來越亂了!!!
有pic i2c教學可以看嗎? 我下的方式是 開始 ->0xf8->資料->結束 只會去選到 case 29 原本應該是 開始 ->0xf8->29->結束 才會選到 case 29不是嗎? 0x3c-->亂了
發表於: 2007/7/5 17:11
|
|||
|
Re: 關於I2C
|
||||
---|---|---|---|---|
中級會員
|
我大概是這樣
#define I2C_Address 0xf8 . . . . . . . . SSPADD=I2C_Address; . . . . . . . . unsigned char x=0x00,i2c_address=0x00; . . . . . . . x = (0x2D & SSPSTAT); switch (x) { case 09: i2c_address = SSPBUF; break; case 29: case 0c: . . . . . . . 假設 1傳 0xf8 0x29 0x01 會執行 case 29 的動作 假設 2傳 0xf8 0x01 也會執行 case 29 的動作 那到底是為什麼 case 29 一直動
發表於: 2007/7/5 13:16
|
|||
|
Re: 關於I2C
|
||||
---|---|---|---|---|
高級會員
|
這有些奇怪!
接收的第一筆一定為位址,所以D/A Bit(SSPSTAT) 會為0。 你的x=0x29,判斷如果對的話,這筆data就是master丟出的data!
發表於: 2007/7/4 19:03
|
|||
|
Re: 關於I2C
|
||||
---|---|---|---|---|
中級會員
|
了解~在請教一下
x= 0x2D & SSPSTAT; 為什麼我收第一組 0xf8時 x會等於0x29
發表於: 2007/7/3 19:21
|
|||
|
Re: 關於I2C
|
||||
---|---|---|---|---|
高級會員
|
這時候的SSPBUF是什麼,我無法確定,因為你的i2c的接收判別式太少了(建議使用S、R/W、 D/A 、BF),只由BF FLAG要判斷SSPBUF收到的內容是什麼,很難!!
Microchip 的 AN734 "Using the PICmicro® SSP for Slave I2CTM Communication"有敘述!
發表於: 2007/7/3 13:53
|
|||
|
Re: 關於I2C
|
||||
---|---|---|---|---|
中級會員
|
是slave
(3).X = 0x01 & SSPSTAT,X為BF ! 為什麼是 等於 bf 那這時的SSPBUF等於多少
發表於: 2007/7/2 10:12
|
|||
|
Re: 關於I2C
|
||||
---|---|---|---|---|
高級會員
|
(1).SSPSTAT(SYNC SERIAL PORT STATUS REGISTER):很多顯示i2c狀態的bit都在這暫存器,你必須判斷此戰存器的一些bit去確定i2c module是idle的。
(2).The SSPADD register:Master、Slave時使用的方式不一樣。 Slave時SPADD的值就是設定你的MCU為SLAVE的位址。 (3).X = 0x01 & SSPSTAT,X為BF ! 你的mcu是master或slave呢?
發表於: 2007/7/2 9:06
|
|||
|