请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
器件型号:TM4C129ENCPDT 工具/软件:Code Composer Studio
尊敬的所有人:
我使用以下代码来读取地址0x40的从器件并写入一个字节。 但它不起作用。 我只需要从从器件(IO 扩展器)执行读取和 RIT 操作
void I2C6Init (void) { /******** I2C ***** ///// 使用前必须启用 I2C6外设。 // SysCtlPeripheralEnable (SYSCTL_Periph_I2C6); SysCtlPeripheralEnable (SYSCTL_Periph_GPIOA); GPIOPinConfigure (GPIO_PA6_I2C6SCL); GPIOPinConfigure (GPIO_PA7_I2C6SDA); GPIOPinTypeI2CSCL (BASE_PORta_Porta GPIO_PIN_6); GPIOPinTypeI2C (GPIO_PORta_base、GPIO_PIN_7); // HWREG (I2C6_BASE + I2C_O_MCR)|= 0x01; // 在处理器(NVIC)上启用 I2C6中断。 // IntEnable (INT_I2C6); // 配置并打开 I2C6从机中断。 I2CSlaveIntEnableEx (I2C6_BASE、I2C_SLAVE_INT_DATA); //#if defined (target_IS_TM4C129_RA0)|| // defined (target_IS_TM4C129_RA0 )|// defined (target_IS_TM4C129_RA2) I2ClasterClk 、I2C12_Clock_Inclockt (I2C12_Ismail_Inclockt、I2C6) false); //#endif I2CSlaveEnable (I2C6_BASE); I2CSlaveInit (I2C6_BASE、SLAVE_ADDRESS); //I2CMasterSlaveAddrSet (I2C6_BASE、 Slave_address、false); } void ioWrite (uint8_t DATA_u8) { I2CMasterSlaveAddrSet (I2C6_BASE、SLAVE_ADDRESS、false); // //将要发送的数据放置在数据寄存器中 // I2CMasterDataPut (I2C6_BASE、DATA_u8); // 从主控方发送数据。 // I2CMasterControl (I2C6_BASE、I2C_MASTER_CMD_SINGLE_SEND); // 等待从器件接收并应答数据。 // while (!(I2CSlaveStatus (I2C6_BASE)& I2C_SLAVE_ACT_RREQ) { } }int ioRead (void) { int data[2]= 0; // 将数据方向修改为 true,这样查看地址将 //指示 I2C 主设备正在从从从设备发起读取操作。 // I2CMasterSlaveAddrSet (I2C6_BASE、SLAVE_ADDRESS、TRUE); // 告知主控方读取数据。 // I2CMasterControl (I2C6_BASE、I2C_MASTER_CMD_SINGLE_Receive); // 等待从器件完成发送数据。 // while (!(I2CSlaveStatus (I2C6_BASE)& I2C_SLAVE_ACT_TREQ) { } // //从主设备读取数据。 // data[0]=(I2CMasterDataGet (I2C6_BASE)); 返回数据; }
请帮帮我。