主题中讨论的其他器件:LM4970
您好!
在 I2C 上、当我向 LM4970发送复位或任何命令时、它会以 NACK 响应。
我在论坛上尝试了几个解决方案、但这些解决方案没有解决我的问题。 我参考了基础固件中的 I2C 示例代码进行初始化。
我正在共享下面 i2c 的初始化代码和数据发送代码。 我还连接了逻辑分析仪输出。
我想知道我会哪里出错。
此致、
Akshay。
空 I2CInit(空)
{
I2CSlaveDisable();
SysCtrlClockSet (false、false、SYS_CTRL_SYSDIV_16MHz);
SysCtrlIOClockSet (SYS_CTRL_SYSDIV_16MHz);
SysCtrlPeripheralEnable (SYS_CTRL_Periph_I2C);
SysCtrlPeripheralReset (SYS_CTRL_Periph_I2C);
GPIOPinTypeI2C (GPIO_B_BASE、I2C_CLK_PIN);
GPIOPinTypeI2C (GPIO_B_BASE、I2C_DATA_PIN);
IOCPinConfigPeriphInput (GPIO_B_BASE、I2C_CLK_PIN、IOC_I2CMSSCL);
IOCPinConfigPeriphInput (GPIO_B_BASE、I2C_DATA_PIN、IOC_I2CMSSDA);
IOCPinConfigPeriphOutput (GPIO_B_BASE、I2C_CLK_PIN、IOC_MUX_OUT_SEL_I2C_CMSSCL);
IOCPinConfigPeriphOutput (GPIO_B_BASE、I2C_DATA_PIN、IOC_MUX_OUT_SEL_I2C_CMSDA);
I2CMasterInitExpClk (SysCtrlClockGet (),false);
I2CSlaveEnable();
}
INT8 HalI2Csend (uint8地址、uint8 * buf、uint16 len)
{
uint16 len_index=0;
I2CMasterSlaveAddrSet (address、false);// false 表示 I2C 主设备正在向从设备发起写入操作。
for (len_index =0;len_index < len;len_index++)
{
I2CMasterDataPut (buf[len_index]);
I2CMasterControl (I2C_MASTER_CMD_SINGLE_SEND);//开始从主器件发送数据。
while (I2CMasterBusy ())
{
}
}
返回0;
}