主题中讨论的其他器件: C2000WARE
工具/软件: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;
}