请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
器件型号:CC3235MODSF 尝试实现一个简单的从器件、该从器件向主器件读取操作应答4-5-6字节的数据。
浏览文档(swru543技术参考手册)、我不清楚 FIFO 应该如何与我看到的一起工作。
已尝试以下代码段、但我没有从从从器件模块获得答案、它只是将 SDA 线路保持在低电平、并且数据请求标志被置位。
就像 FIFO 根本不会运行并且需要写入数据寄存器一样、当我取消对数据区域写入的注释时、我看到从器件以4-5-6字节的0x88进行应答(可以认为这是正确的、即使最后一个字节写入数据是0x44也是如此)。
无论如何、FIFO 似乎不起作用。 有什么想法为什么? 我这边有什么问题?
PRCMPeripheralReset (PRCM_I2CA0); POWER_setDependency (PowerCC32XX_Periph_GPIOA0); Power_setDependency (PowerCC32XX_Periph_GPIOA1); POWER_setDependency (PowerCC32XX_Periph_GPIOA2); Power_setDependency (PowerCC32XX_Periph_GPIOA3); POWER_setDependency (PowerCC32XX_Periph_GPIOA4); PinTypeGPIO (I2CCC32XX_PIN_01_I2C_SCL 和0xFF、(I2CCC32XX_PIN_01_I2C_SCL >> 8)、true); PinTypeGPIO (I2CCC32XX_PIN_02_I2C_SDA 和0xFF、(I2CCC32XX_PIN_02_I2C_SDA >> 8)、true); Power_setDependency (PowerCC32XX_Periph_I2CA0); MAP_I2CMasterDisable (I2CA0_BASE); MAP_I2CSlaveDisable (I2CA0_BASE); MAP_I2CTxFIFOFlush (I2CA0_BASE); MAP_I2CRxFIFOFlush (I2CA0_BASE); MAP_I2CTxFIFOConfigSet (I2CA0_BASE、I2C_FIFO_CFG_TX_SLAVE); MAP_I2CRxFIFOConfigSet (I2CA0_BASE、I2C_FIFO_CFG_RX_SLAVE); MAP_I2CSlaveFIFOEnable (I2CA0_BASE、I2C_SCSR_TREQ | I2C_SCSR_FBR); MAP_I2CSlaveIntClear (I2CA0_BASE); MAP_I2CSlaveIntClearEx (I2CA0_BASE、0xFFFFFFFF); MAP_I2CSlaveInit (I2CA0_BASE、SLAVE_I2C_ADDR); MAP_I2CSlaveEnable (I2CA0_BASE); MAP_I2CFIFODataPut (I2CA0_BASE、0x12); MAP_I2CFIFODataPut (I2CA0_BASE、0x23); MAP_I2CFIFODataPut (I2CA0_BASE、0x34); MAP_I2CFIFODataPut (I2CA0_BASE、0x45); MAP_I2CFIFODataPut (I2CA0_BASE、0x56); while (1) { if (I2CSlaveStatus (I2CA0_BASE)& 0x02) { /* MAP_I2CSlaveDataPut (I2CA0_BASE、0x88); MAP_I2CSlaveDataPut (I2CA0_BASE、0x77); MAP_I2CSlaveDataPut (I2CA0_BASE、0x66); MAP_I2CSlaveDataPut (I2CA0_BASE、0x55); MAP_I2CSlaveDataPut (I2CA0_BASE、0x44); * MAP_I2CFIFODataPut (I2CA0_BASE、0x34); MAP_I2CFIFODataPut (I2CA0_BASE、0x45); MAP_I2CFIFODataPut (I2CA0_BASE、0x56); MAP_I2CFIFODataPut (I2CA0_BASE、0x34); MAP_I2CFIFODataPut (I2CA0_BASE、0x45); MAP_I2CFIFODataPut (I2CA0_BASE、0x56); I2CSlaveIntClearEx (I2CA0_BASE、0xFFFFFFFF); } }