目前、我将主 Raspberry Pi 3作为从设备连接到 TM4C。 它们应该使用 I2C 进行通信。 我在 Raspberry Pi 上使用 i2cdetect 来检测 TM4C。 但是、Pi 在扫描地址时不会检测到任何内容。 它可以检测其他传感器。
我已尝试运行下列所有程序。 当我进入调试模式时、TM4C 似乎一直在初始化总线而不发送地址。
1) 1)按照 TivaWare外设驱动程序库中的指令在从模式下初始化和使用 TM4C、但程序甚至不会编译。 我不确定如何更改特定变量以适应 TM4C。 我无法在线找到任何文档。
2) 2) 来自 Tivaware 示例的 slave_recive_int 示例文件
3) 3)修改了 SLAVE_REGEE_INT 示例以适应 TM4C。 代码位于下面。 我不确定我是否正确修改了它。
#define SLAVE_ADDRESS 0x3C 静态 bool g_bIntFlag = false; void I2C0SlaveIntHandler (void) { I2CSlaveIntClear (I2C0_BASE); G_bIntFlag = true; } int main (void) { uint32_t ui32SysClock; uint32_t ui32DataTx; SysCtlClockSet (SYSCTL_SYSDIV_2_5 | SYSCTL_USE_PLL | SYSCTL_OSC_MAIN | SYSCTL_XTAL_16MHz); SysCtlPeripheralEnable (SYSCTL_Periph_I2C0); SysCtlPeripheralEnable (SYSCTL_Periph_GPIOB); GPIOPinConfigure (GPIO_PB2_I2C0SCL); GPIOPinConfigure (GPIO_PB3_I2C0SDA); GPIOPinTypeI2CSCL (GPIO_PORTB_BASE、GPIO_PIN_2); GPIOPinTypeI2C (GPIO_PORTB_BASE、GPIO_PIN_3); HWREG (I2C0_BASE + I2C_O_MCR)|= 0x01; IntEnable (INT_I2C0); I2CSlaveIntEnableEx (I2C0_BASE、I2C_SLAVE_INT_DATA); I2CMasterInitExpClk (I2C0_BASE、SysCtlClockGet ()、false); I2CSlaveEnable (I2C0_BASE); I2CSlaveInit (I2C0_BASE、SLAVE_ADDRESS); I2CMasterSlaveAddrSet (I2C0_BASE、SLAVE_ADDRESS、FALSE); IntMasterEnable(); ui32DataTx ='Q'; I2CMasterDataPut (I2C0_BASE、ui32DataTx); I2CMasterControl (I2C0_BASE、I2C_MASTER_CMD_SINGLE_SEND); while (!g_bIntFlag) { } while (1) { } }