DS90UB913_914A 使用I2C對外通訊的問題
我正在研究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對外通訊呢?
還是有人可以分享你的913/194設定I2C的範例或是步驟嗎??
913 register 03 bit[2,3] set to 11
914 register 03 bit[3] set to 1
这样913 I2C 就会有输出。
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
你是用触发吗?
不是,
一開始先設定好第一篇說對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去觀看上面那些讀取到的回傳值
你要写挂在913上的设备,913 I2C才会有输出。
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還是都沒有送出資料
设置913 register 03 bit3 I2C pass all, 这样你写与913/914 设备不同的地址,913 I2C 就会有输出。
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 還是沒有輸出
你好,你的问题解决了吗?我现在也遇到一样的问题。913那边的I2C测不到信号。
已經解決了,
假設Slave ID 0x99
對913設定順序
ID 0xC0 REG 0x07 DATA 0xB2
ID 0xC0 REG 0x08 DATA 0x99
ID 0xC0 REG 0x10 DATA 0x99
ID 0xB2 REG 0x11 DATA 0x1D
ID 0xB2 REG 0x12 DATA 0x1D
ID 0xB2 REG 0x03 DATA 0xC1