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.
工具/软件:Code Composer Studio
你(们)好
我在 TMS320F28035上n`t 了一个 I2C 从器件、但它不起作用。 主器件在总线上找不到一个从器件。 而且、 我没有找到相关示例。 我不知道我的程序结构是否正确。 因此、我在论坛中寻求帮助。
谢谢
mian 函数:
/*
* main.c
*
#include "DSP28x_Project.h"
#include "DSP2803x_I2C.h"
#include "DSP2803x_I2C_defines.h"
#include
#define I2C_SLAVE_ADDR 0x08
#define LED_ON GpioDataRegs.GPBCLEAR.bit.GPIO34 = 1;
#define LED_OFF GpioDataRegs.GPBSET.BIO34 = 1;
#define LED_BLINK GpioDataRegs.GPBTOGGLE.bit.GPIO34 = 1;
struct I2C_regs I2C_slave;
int read=0;
int 计数= 0;
void I2C_Slave_Init (void);
int I2C_Slave_read (void);
int main (空)
{
InitSysCtrl();
InitGpio();
InitI2CGpio();
I2C_Slave_Init();
Dint;
InitPieCtrl();
IER = 0x0000;
IFR = 0x0000;
InitPieVectTable();
// InitPeripheral();
while (1)
{
read=I2C_Slave_read ();
如果(读取= 0x0001)
{
LED_OFF;
}
其他
{
LED_ON;
}
}
}
void I2C_Slave_Init (void)
{
I2C_SLAVE.I2COAR = 0x0010;//设置自己的地址
I2C_SLAVE.I2CMDR.ALL = 0x0000;
I2C_SLAVE.I2CPSC.ALL = 19;//预分频器-模块时钟需要7-12MHz
I2C_SLAVE.I2CCLKL = 10;//注意:必须为非零
I2C_SLAVE.I2CCLKH = 5;//注意:必须为非零
I2C_SLAVE.I2CIER.ALL = 0x0;//禁用 SCD 和 ARDY _INTERRUPTS
I2C_SLAVE.I2CFFTX.ALL = 0x0000;//启用 FIFO 模式和 TXFIFO
I2C_SLAVE.I2CFFRX.ALL = 0x0000;//启用 RXFIFO、清除 RXFFINT、
I2C_SLAVE.I2CMDR.ALL = 0x0020;// I2C 从机、空闲、从复位释放
返回;
}
int I2C_Slave_read (空)
{
int i;
I2C_SLAVE.I2CCNT=1;
// I2C_SLAVE.I2COAR=I2C_SLAVE_addr;
// I2C_SLAVE.I2CSAR=I2C_SLAVE_ADDR;
// I2C_SLAVE.I2CMDR.All=0x6c20;
I = I2C_SLAVE.I2CDRR 和0x00FF;//I2CDRR 是一个16位寄存器、
返回 i;
// receivedata[0]= I2C_slave.I2CDRR;
}
您好,
"主器件在总线上找不到从器件。 “这话什么意思? 从器件是否未接收到数据?
您可以参考环回示例中的接收/从器件部分、了解有关该序列的信息。
C2000Ware\driverlib\f2837xd\examples\cpu1\i2c\i2c_ex1_loopback.c
您是否可以使用启用 中断 模式或轮询标志来查看数据是否在读取数据之后被接收?
另一种方法是使用 FIFO、以便一次可以传输数据集。
此致。