Thread 中讨论的其他器件:IO-EXPANDER-EVM
团队、
我们的客户在使用 IO-EXPANDER-EVM、Tiva TM4C129X 开发板和 I2C 接口时遇到一些问题。
借助于这个参考代码,他们能够成功地接收数据(S1和 S2) :
I2CMasterSlaveAddrSet (I2C1_base、0x23、false);
I2CMasterDataPut (I2C1_base、0x00);
I2CMasterControl (I2C1_base、I2C_MASTER_CMD_BURST_SEND_START);
while (!I2CMasterBusy (I2C1_base));
while (I2CMasterBusy (I2C1_base));
I2CMasterSlaveAddrSet (I2C1_base、0x23、true);
I2CMasterControl (I2C1_base、I2C_MASTER_CMD_BURST_Receive_start);
while (!I2CMasterBusy (I2C1_base));
while (I2CMasterBusy (I2C1_base));
REC = I2CMasterDataGet (I2C1_base);
while (I2CMasterBusy (I2C1_base));
I2CMasterControl (I2C1_base、I2C_MASTER_CMD_BURST_Receive_finish);
但是,他们似乎无法通过 IO 扩展器发送数据,因为他们尝试了以下代码:
I2CMasterControl (I2C1_base、I2C_MASTER_CMD_BURST_SEND_START);
I2CMasterSlaveAddrSet (I2C1_base、0x23、false);
I2CMasterDataPut (I2C1_base、0x02);
while (!I2CMasterBusy (I2C1_base));
while (I2CMasterBusy (I2C1_base));
I2CMasterDataPut (I2C1_base、0x55);
while (I2CMasterBusy (I2C1_base));
I2CMasterControl (I2C1_base、I2C_MASTER_CMD_BURST_SEND_FINISH);
while (!I2CMasterBusy (I2C1_base));
while (I2CMasterBusy (I2C1_base));
遗憾的是、他们没有成功地尝试 U2和 U1。
供参考: 对于初始化,它们具有以下代码 :
SysCtlPeripheralEnable (PORT_PINS_I2C_IOEXP_PERIPh);
GPIOPinConfigure (PIN_SCL_IOEXP_CONFIG);
GPIOPinConfigure (PIN_SDA_OEXP_CONFIG);
GPIOPinTypeI2CSCL (PORT_PINS_I2C_OEXP_BASE、PIN_SCL_IOEXP);
GPIOPinTypeI2C (PORT_PINS_I2C_OEXP_BASE、PIN_SDA_IOEXP);
SysCtlPeripheralEnable (PORT_I2C_IOEXP_PERIPh);
I2CMasterInitExpClk (I2C1_base、SysCtlClockFreqSet (SYSCTL_OSC_INT | SYSCTL_USE_PLL | SYSCTL_CFG_VCO_480、80000000)、false);
//清除 I2C FIFO
HWREG (I2C1_BASE + I2C_O_FIFOCTL)= 80008000;
检查示波器上的 SDA 和 SCL 线路后、一切看起来都正常(开始、地址、ACK、数据(0x55)等)。
我在这种扩展器板与 TM4C LP 的组合中工作得不多。
还有人还在 IO 扩展器+ Tiva EVM 上工作过吗?
欢迎和赞赏评论!
Ty、
是的