This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
团队、
我正在使用示例"ektm4c129_i2c_main_udma_fifo"从应用手册 SPMA073中进行工作。 此演示基于与24C256外部存储器器件的通信。 我遇到的问题是我尝试与24C02通信。 主要区别在于24C256使用2字节内部寻址方案、24C02使用单字节内部寻址方案。
请详细说明将"ektm4c129_i2c_master_udma_fifo"示例从使用2字节地址内部地址(24C256)更改为单字节地址(24C02)的步骤吗?
我曾试图自己做到这一点,但迄今未能取得成功。
谢谢。
您好 Chris、
我对该示例不是很熟悉、但仔细看一下该示例以及您所描述的内容、我希望您不再需要 I2C_OP_TXADDR 状态、并可以删除该状态。
为此、您需要像这样进入 I2C_OP_FIFO、然后使用8位寻址:
实例 I2C_OP_IDLE: // 从空闲移动到发送地址状态 // g_ui8MasterPrevState = g_ui8MasterSlavState;g_ui8Current State = I2C_OP_FIFO; // 将页面的高位写入从属 设备// I2CMastereAddrSet (I2I2EXT) 、PudeC2;I2I2I2C_Base、Pude2 I2CMasterControl (I2C2_base、I2C_MASTER_CMD_BURST_SEND_START); break;
这将取代所有这些:
案例 I2C_OP_IDLE: // 从空闲状态移动到发送地址状态 // g_ui8MasterPrevState = g_ui8MasterSlaveState;g_ui8Current WordState = I2C_OP_TXADDR; // 将页面的高位写入从属 设备// I2USBasterSlaveAddrSet (I2i2_I2EXT )、I2u2u_I2u2u2u2u_Israb (I2u2u_Israb); I2CMasterControl (I2C2_base、I2C_MASTER_CMD_BURST_SEND_START); break; case I2C_OP_TXADDR: // 将当前状态分配到上一状态 // g_ui8MasterPrevState = g_ui8MasterState; // 如果地址已被设置为'n'u2C_ruptState ;//如果是 i2C_ui2C_ruptState = g/ ui2ui2u_u_u_uiSPI Current;如果是 I2u_u_u_u_u_u_uSPI 状态,则停止状态;如果是 i2ui2ui2u_u_u_u_u_u_uiSPI 状态 否则 { g_ui8MasterCurrent State = I2C_OP_FIFO; } // //如果 地址已通过 ACK 写入、则将页面低位写入从属方 // I2CMasterDataPut (I2C2_base、(g_ui16SlaveWordAddress >> 0)); I2CMasterControl (I2CMasterDataPut (I2C2_base、(g_ui16SlaveWordAddress >> 0)));I2CMaster_d_star_s_dip_d_cont ;
您可能还需要从 I2C_MASTER_STATE 中删除 I2C_OP_TXADDR。