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.

[参考译文] CCS/TMS320F28035:有关 TMS320F28035上 I2C 从器件设置的问题

Guru**** 2022830 points
Other Parts Discussed in Thread: TMS320F28035, C2000WARE
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/782186/ccs-tms320f28035-questions-about-the-i2c-slave-setting-on-tms320f28035

器件型号:TMS320F28035
主题中讨论的其他器件: 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;

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好,

    "主器件在总线上找不到从器件。 “这话什么意思? 从器件是否未接收到数据?

    您可以参考环回示例中的接收/从器件部分、了解有关该序列的信息。

    C2000Ware\driverlib\f2837xd\examples\cpu1\i2c\i2c_ex1_loopback.c

    您是否可以使用启用 中断 模式或轮询标志来查看数据是否在读取数据之后被接收?

    另一种方法是使用 FIFO、以便一次可以传输数据集。

    此致。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    从机无法接收数据。 我将尝试您的建议。

    非常感谢。 )