Re: 讀寫 i2c csi 24c02 問題
|
||||
---|---|---|---|---|
中級會員
|
#define wr_addr_ 0x20 //指定寫入位址
#define datalen 100 // HI Libra 感謝,再次請教我如果要指定位址寫入,下列方法可行? SERCOM2_I2C_Write(slaveaddr,wr_addr_ ,datalen); Write之後等一下tWR (5ms max)試試, 另外SERCOM2_I2C Read/Write 第一個欄位一律為Slave Address, 然後對當前的地址讀/寫, 如果你要指定讀取位址時, 應該使用SERCOM2_I2C_WirteRead() #define SLAVE_ADDR 0xA0 uint8_t SubAddr[1]; uint8_t ReadData[16]; SubAddr[0] = 你要讀的位址; // 0x00為重頭開始讀 SERCOM2_I2C_WirteRead( SALVE_ADDR, SubAddr, 1, ReadData,16 );[/quote]
發表於: 2021/7/14 18:02
|
|||
|
Re: 讀寫 i2c csi 24c02 問題
|
||||
---|---|---|---|---|
管理員
|
Write之後等一下tWR (5ms max)試試,
另外SERCOM2_I2C Read/Write 第一個欄位一律為Slave Address, 然後對當前的地址讀/寫, 如果你要指定讀取位址時, 應該使用SERCOM2_I2C_WirteRead() #define SLAVE_ADDR 0xA0 uint8_t SubAddr[1]; uint8_t ReadData[16]; SubAddr[0] = 你要讀的位址; // 0x00為重頭開始讀 SERCOM2_I2C_WirteRead( SALVE_ADDR, SubAddr, 1, ReadData,16 );
發表於: 2021/7/12 11:16
|
|||
|
讀寫 i2c csi 24c02 問題
|
||||
---|---|---|---|---|
中級會員
|
uint8_t EERD_BUF[16];
uint8_t TEST_DATA[16]; void Get_ AT24MAC402_MAC(uint8_t *MAC_BUF) { uint8_t SubAddr[0]; SubAddr[0] = 0xA0; SERCOM2_I2C_Write( 0xA0, SubAddr, 1); while(SERCOM2_I2C_IsBusy()); SERCOM2_I2C_Read(0xA0,MAC_BUF,16); while(SERCOM2_I2C_IsBusy()); __asm("nop"); //設定斷點程式有跑到這 查看EERD_BUF 都是0 } int main ( void ) { uint8_t i=0; for (i=0 ;i < 16 ; i++) { TEST_DATA[i]=i; // 初始化填入測試數據入 } SERCOM2_I2C_Write(0xA0,&TEST_DATA[0],16); while(SERCOM2_I2C_IsBusy()); __asm("nop"); //設定斷點程式有跑到這 Get_AT24MAC402_MAC (&EERD_BUF[0]); while ( true ) { /* Maintain state machines of all polled MPLAB Harmony modules. */ SYS_Tasks ( ); __asm("nop"); return ( EXIT_FAILURE ); } }
發表於: 2021/7/9 10:24
|
|||
|