我正在研究MCU透過I2C通訊傳輸至914,914透過雙絞線傳輸到913,913在傳送出I2C通訊訊號,
但是913無法傳出I2C通訊訊號
Slave ID 為 0x48
我的作法是在MCU端透過I2C設定了914的
reg 0x07 , data 0xB2 (0x59<<1)
reg 0x08 , data 0x90 (0x48<<1)
reg 0x10 , data 0x92 (0x49<<1)
設定完後讀取下列這些和出現一些的數值
ID 0x60 , reg 0x06,讀值為 0xB0
ID 0x60 , reg 0x07,讀值為 0xB2
ID 0x60 , reg 0x08,讀值為 0x90
ID 0x60 , reg 0x10,讀值為 0x92
ID 0x59 , reg 0x01,讀值為 0x30
ID 0x59 , reg 0x03,讀值為 0xC5
如上ID 0x59可以讀到預設值代表我可以讀取到913,
但是我在多讀取ID 0x49 , reg0x01,讀值為0xFF
使用示波器量測913 I2C Data腳位,並無法測出波形
我哪邊設定錯誤所以無法讓913的I2C對外通訊呢?
qing jiang:
還是有人可以分享你的913/194設定I2C的範例或是步驟嗎??
Jeff Wang1:
回复 qing jiang:
913 register 03 bit[2,3] set to 11
914 register 03 bit[3] set to 1
这样913 I2C 就会有输出。
qing jiang:
回复 Jeff Wang1:
Jeff Wang1
913 register 03 bit[2,3] set to 11
914 register 03 bit[3] set to 1
这样913 I2C 就会有输出。
原本的914 register 03 為0xE9,所以這個符合你說的bit[3] set to 1
原本的913 register 03 為0xC5,我把他設定成你說的bit[2,3] set to 11,所以設定為0xCD
設定為在讀取ID 0x59 , reg 0x03,讀值為 0xCD,所以已經有變更設定了
以上都好了之後,我一樣讀取ID 0x49 , reg0x01,讀值還是0xFF
使用示波器量測913 I2C Data腳位還是無法測出波形
還有哪裡有重點可能我還沒設定到的嗎?
Jeff Wang1:
回复 qing jiang:
你是用触发吗?
qing jiang:
回复 Jeff Wang1:
Jeff Wang1
你是用触发吗?
不是,
一開始先設定好第一篇說對914設定的部分和你說的多設定 913 register 0x03 ,
在while迴圈裡打以下這些
__delay_ms(500); slave_data0 = i2c_read( I2C_DesID , 0x06 ); __delay_ms(500); slave_data1 = i2c_read( I2C_DesID , 0x07 ); __delay_ms(500); slave_data2 = i2c_read( I2C_DesID , 0x08 ); __delay_ms(500); slave_data3 = i2c_read( I2C_DesID , 0x10 ); __delay_ms(500); slave_data4 = i2c_read( I2C_DesID , 0x03 ); __delay_ms(500); slave_data5 = i2c_read( I2C_SerIDAli , 0x01 ); __delay_ms(500); slave_data6 = i2c_read( I2C_SerIDAli , 0x03 ); __delay_ms(500); slave_data7 = i2c_read( I2C_SerIDAli , 0x0D ); __delay_ms(500); slave_data8 = i2c_read( I2C_SerIDAli , 0x0E ); __delay_ms(500); slave_data9 = i2c_read( I2C_SlaveIDAli , 0x01 ); __delay_ms(500);
使用Debug Mode去觀看上面那些讀取到的回傳值
Jeff Wang1:
回复 qing jiang:
你要写挂在913上的设备,913 I2C才会有输出。
qing jiang:
回复 Jeff Wang1:
Jeff Wang1
你要写挂在913上的设备,913 I2C才会有输出。
請問,你說的寫掛在913的設備的意思是如何操作流程?
我測試了對914寫入這些資訊給913,如下
ID 0x59 reg 0x08 data 0x90 (0x48<<1)
ID 0x59 reg 0x09 data 0x92 (0x49<<1)
然後
寫入 ID 0x48 reg 0x01 data 0x01
or ID 0x49 reg 0x01 data 0x01
or ID 0x59 reg 0x09 data 0x01
913的I2C還是都沒有送出資料
Jeff Wang1:
回复 qing jiang:
设置913 register 03 bit3 I2C pass all, 这样你写与913/914 设备不同的地址,913 I2C 就会有输出。
qing jiang:
回复 Jeff Wang1:
Jeff Wang1
设置913 register 03 bit3 I2C pass all, 这样你写与913/914 设备不同的地址,913 I2C 就会有输出。
我設定了4組ID分別為
#define I2C_SlaveID 0x50#define I2C_SlaveIDAli 0x51#define I2C_SlaveID1 0x52#define I2C_SlaveIDAli1 0x53
前兩組丟給914的 reg 0x08 和 reg 0x10,
後兩組丟給913的 reg 0x08 和 reg 0x09,
913的 reg 0x03 值為 0xCD = 0b11001101,所以 bit3 也有設定為 1 了
可是我測試了上面四組ID,在913的 I2C 還是沒有輸出
miao zhou:
回复 qing jiang:
你好,你的问题解决了吗?我现在也遇到一样的问题。913那边的I2C测不到信号。