Thread 中讨论的其他器件: controlSUITE
工具/软件:Code Composer Studio
尊敬的所有人:
我在 TMS320F28377S 处理器上工作、我对此不熟悉。 我正在将 prom AT24C16与处理器连接。 我看到 控制套件中使用中断的可用示例。 但我想在不使用中断的情况下开发简单的函数。 这是我写入 I2C 的函数、它们不起作用。 我以前在 ATMEGA 控制器上的经验、因此请任何人也提供帮助。
谢谢
空 I2CA_Init (空)
{
GPIO_SetupPinMux (32、GPIO_MUX_CPU1、1);
GPIO_SetupPinMux (33、GPIO_MUX_CPU1、1);
I2caRegs.I2CPSC.all = 6; //预分频器-模块时需要7-12MHz
I2caRegs.I2CCLKL = 10; //注意:必须为非零
I2caRegs.I2CCLKH = 5; //注意:必须为非零
// I2caRegs.I2CIER.All = 0x24; //启用 SCD 和 ARDY __interrupts
I2caRegs.I2CMDR.ALL = 0x0020; //使 I2C 退出复位
I2caRegs.I2CMDR.bit.Rm=0; //禁用重复发送条件
I2caRegs.I2CFFTX.ALL = 0x6000; //启用 FIFO 模式和 TXFIFO
I2caRegs.I2CFFRX.ALL = 0x2040; //启用 RXFIFO、清除 RXFFINT、
返回;
}
void write_i2c (无符号字符地址、无符号字符数据)
{
while (I2caRegs.I2CMDR.bit.STP = 1) //等待 i2c 总线结束任何恢复通信
I2caRegs.I2CSAR.All=地址;
while (I2cRegs.I2CSTR.bit.BB = 1); //等待总线空闲
I2caRegs.I2CDXR.all =0x00; //写入要放置数据的地址
I2caRegs.I2CDXR.all =数据;
返回;
}
unsigned char read_i2c (unsigned char 地址)
{
unsigned char 数据;
while (I2caRegs.I2CMDR.bit.STP = 1) //等待 i2c 总线结束任何恢复通信
I2caRegs.I2CSAR.All=地址;
while (I2cRegs.I2CSTR.bit.BB = 1); //等待总线空闲
Data=I2caRegs.I2CDRR.All; //读取数据表单
返回数据;
}
void start_condition (void)
{
I2caRegs.I2CMDR.bit.STT=1; //发送起始条件
while (I2cRegs.I2CSTR.bit.BB = 1); //等待总线空闲
返回;
}
void stop_condition (void)
{
I2caRegs.I2CMDR.bit.STP=1; //发送停止条件
while (I2cRegs.I2CSTR.bit.BB = 1); //等待总线空闲
返回;
}