问题说明:使用两片ADU360进行I2C通信,主机使用IO口模拟方式,从机使用内部外设
主机IO口模拟方式,确认是可行,当与从机进行通信时,从机无法进入I2C中断
以下为I2C初始化过程,
I2C Startup
The following steps are required to set the I2C peripheral running:
1. Configure I2C clock in CLKDIS and CLKCON1 registers.
2. Configure digital pins for I2C operation (P0.1/P0.2, P2.0/P2.1).
3. Configure I2C registers as required for slave or master operation.
4. Enable the I2C slave or master interrupt source as required.
Note that the user should disable the internal pull-up resistors on the I2C pins via the GP0PUL register when using I2C.
初始化:
DioCfg(pADI_GP2, 0x05); // Configure P2.0/P2.1 as I2C pins
DioPul(pADI_GP2, 0xFC); // External pull ups required externally
//DioCfg(pADI_GP0, 0x28); // Configure P0.1/P0.2 as I2C pins
// DioPul(pADI_GP0, 0xF9); // External pull ups required externally
// configure the clocks
// ClkCfg(CLK_CD0,CLK_HF,CLKSYSDIV_DIV2EN_DIS,CLK_UCLKCG);
// ClkSel(CLK_CD0,CLK_CD0,CLK_CD0,CLK_CD0);
//ClkDis(CLKDIS_DISUARTCLK|CLKDIS_DISPWMCLK|CLKDIS_DISDACCLK|CLKDIS_DISDMACLK);
I2cFifoFlush(SLAVE, ENABLE);
I2cFifoFlush(SLAVE, DISABLE); // 对FIFO 清空使能
NVIC_DisableIRQ(I2CS_IRQn);
// Enable I2C Slave mode
//I2cSCfg(0,I2CSCON_IENSTOP|I2CSCON_IENRX,I2CSCON_SLV_EN);
I2cSCfg(0,I2CSCON_IENSTOP|I2CSCON_IENTX_EN|I2CSCON_IENRX,I2CSCON_SLV_EN);
I2cSIDCfg(0x16,0,0,0); // using 8-bit address in this example
I2cTx(SLAVE, ucSlaveTxDat[uiSlaveTxIndex++]);
NVIC_EnableIRQ(I2CS_IRQn);
麻烦提供一些建议,谢谢!