Other Parts Discussed in Thread: C2000WARE
主题中讨论的其他器件:C2000WARE
尊敬的所有人:
我最近一直在研究 i2c、几乎没有什么疑问、我已经尽力解决了、但我无法解决。 因此、请帮助我:
1)从示例程序表中,我看到在完成所有配置并输入数据后,我们正在调用 START 条件函数,并调用 STOP 条件函数。请按照正确的方式...
I2C_putData (I2CA_BASE、1);
//将 START 作为主发送器发送
I2C_setConfig (I2CA_BASE、I2C_MASTER_SEND_MODE);
I2C_sendStartCondition (I2CA_BASE);
I2C_sendStopCondition (I2CA_BASE);
2) 2)请从 C 语言的 ti 示例中读取以下代码片段:\ti\c2000Ware_3_04_00_00\driverlib\f28004x\examples\i2c\i2c_ex2_EEPROM.c
空 initI2C()
{
//
//必须在配置 I2C 之前将其复位
//
I2C_DisableModule (I2CA_BASE);
//
// I2C 配置。 使用占空比为33%的400kHz I2CCLK。
//
I2C_initMaster (I2CA_BASE、DEVICE_SYSCLK_FREQ、400000、I2C_DUTYCYCLE _33);
I2C_setBitCount (I2CA_BASE、I2C_BITCOUNT_8);
I2C_setSlaveAddress (I2CA_BASE、SLAVE_ADDRESS);
I2C_setEmulationMode (I2CA_BASE、I2C_emulation_free_run);
//
//启用停止条件和寄存器访问就绪中断
//
I2C_enableInterrupt (I2CA_BASE、I2C_INT_STOP_Condition |
I2C_INT_REG_ACCESS_RDY);
//
// FIFO 配置
I2C_enableFIFO (I2CA_BASE);
I2C_clearInterruptStatus (I2CA_BASE、I2C_INT_RXFF | I2C_INT_TXFF);
//
//配置完成。 启用模块。
//
I2C_enableModule (I2CA_BASE);
}
这里我们不是设置 FIFO 中断级别,也不是在主代码中设置 FIFO ISR。我们现在只启用 FIFO。它的工作原理是什么? 请说明。另请尝试提供程序流。
当我尝试注释出 FIFO 使能功能时,数据没有发送。我启用了 TX 就绪中断,在不使用 FIFO 的情况下处理整个问题。 但我看到的只是忙位始终设置为1。 如何在没有 FIFO 的情况下使用 i2c?
当我使用 i2c 的配置时,所有东西都能正常工作,但我只想知道发生了什么...
谢谢、此致、
Stevin Martin