-
求助:AC7801X芯片I2C通信主机端收到的是从机的NACK
[i=s] 本帖最后由 fanchenxinok 于 2021-2-22 09:56 编辑 [/i] 芯片用的Autochip的AC78013 MCU,现在MCU配置为从机模式,主机是安卓系统的。MCU和安卓系统I2C通信。我从机端参考代码是:ac7801xSampleCode20200729\ac7801xSampleCode20200729\i2c\SampleCode\5 I2C_Slave_DMA\I2C_Slave\User下的i2c.c。目前主机和从机通信是没问题的 主机发送的命令我从机都能收到, 但是主机那边发送完命令却没收到从机的ACK,会报错。请问是我从机这边配置有问题吗?配置都是直接从参考代码复制过来的。 void UTILS_I2cInit(I2C_Type *pI2cInst, I2C_ModeType mode, uint16_t slaveAddr) { I2C_ConfigType i2cConfig; /*清零结构体变量.*/ memset(&i2cConfig, 0x00, sizeof(i2cConfig)); /*无论是主机还是从机模式都需要配置的参数.*/ i2cConfig.mode = mode;/*设置主从机模式.*/ i2cConfig.extAddrEn = DISABLE;/*10bit扩展地址禁能.*/ i2cConfig.dmaRxEn = DISABLE;/*设置DMA接收数据.*/ i2cConfig.dmaTxEn = DISABLE;/*设置DMA发送数据.*/ i2cConfig.interruptEn = DISABLE;/*I2C中断,BND/SAMF/ARBLOST.*/ i2cConfig.nackInterruptEn = DISABLE;/*NACK中断.*/ i2cConfig.ssInterruptEn = DISABLE;/*总线start或stop中断.*/ i2cConfig.i2cEn = ENABLE;/*使能模块.*/ i2cConfig.callBack = NULL;/*中断回调函数.*/ /*主机模式需要配置的参数,配置成从机模式可忽略.*/ /* Fscl = Fbclk / (((SAMPLE_CNT_DIV+1) * (STEP_CNT_DIV+1))*2) */ i2cConfig.masterConfig.sampleCnt = 4;/*设置波特率为100Kbps,bandrate=(24M/(5*6*2))=400Kbps.*/ i2cConfig.masterConfig.stepCnt = 5; i2cConfig.masterConfig.ARBEn = ENABLE;/*设置主机仲裁功能.*/ i2cConfig.masterConfig.SYNCEn = ENABLE;/*设置主机SCL同步功能.*/ /*从机模式需要配置的参数,配置成主机模式可忽略.*/ i2cConfig.slaveConfig.slaveAddr = slaveAddr;/*从机地址.*/ i2cConfig.slaveConfig.slaveRangeAddr = 0;/*从机范围地址.*/ i2cConfig.slaveConfig.glitchFilterCnt= 0;/*毛刺过滤.*/ i2cConfig.slaveConfig.stretchEn = ENABLE;/*从机SCL延伸功能.*/ i2cConfig.slaveConfig.rangeAddrEn = DISABLE;/*禁能范围地址.*/ i2cConfig.slaveConfig.monitorEn = DISABLE;/*禁能从机监测功能.*/ i2cConfig.slaveConfig.generalCallEn = DISABLE;/*从机SCL广播地址.*/ i2cConfig.slaveConfig.wakeupEn = DISABLE;/*唤醒功能,仅从机时有效.*/ i2cConfig.slaveConfig.rxOFInterruptEn = DISABLE;/*接收缓存溢出中断.*/ i2cConfig.slaveConfig.txUFInterruptEn = DISABLE;/*发送缓存溢出中断.*/ I2C_Init(pI2cInst, &i2cConfig); } 有大神可以指导下吗
1873浏览量 1回复量 关注量