请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
器件型号:TMS320C6713B 工具/软件:TI C/C++编译器
您好!
我正在尝试在 TMS320C6713 DSK 套件上的 I2C0和 I2C1之间建立通信。 I2C0配置为主器件、I2C1配置为从器件。 以下是我为其编写的代码:
/********* ///I2C0 寄存器配置、作为主 器件/*************** // 先前定义的宏寄存器 //将 I2C0置于复位状态*/ I2C0MDR_REG &&(~(1UL <<5)); I2C0OAR_RE= 0x0; I2C0IER_REG = 0x0;//禁用中断 //预分频寄存器分频器,FP = SYSCLK2/(PSC+C04 );I2C0PSC_REG = 0x4 // SYSCLK2 = 55、SO FP = 11MHz (必须在6.8到13.3MHz 之间) //I2C 时钟= 220khz I2C0CLKH_REG = 20; I2C0CLKL_REG = 20; I2C0SAR_REG = 0x50;//将 I2C1作为从 器件 I2C0CNT_REG = 3;//以组形式发送到传输 ///I2C1 寄存器配置、作为从 器件/*************** / DEVCFG_REG |= 1;//在器件配置寄存器中启用 I2C1。 McBSP1禁用 I2C1OAR_REG = 0x50;//主器件使用的自身地址 I2C1IER_REG = 0x0;//禁用中断 //将 I2C1启用为从 器件 I2C1MDR_REG = 0x2020;//也仅使用0x0020进行尝试。 //在开始停止条件 I2C0MDR_REG = 0x2e20时将 I2C0作为主器件启用 ;while (~(I2C0STR_REG 和0x1000));//等待总线空闲 //写入数据发送 I2C0DXR_REG = 0x11; //等待位被传输 ,而~(I2C0STR_=== 0x00=)=/==== 0x00REG= /*** 程序始终停留在上述 while 循环中。 这些位不会被传输。 此外、在数据传输期间、在 SCL 上观察不到时钟。 ***/
如上一条注释所述、使用示波器时、SCL 线上未检测到时钟、I2C0STR 寄存器的 ICXRDY 位始终为0、表示位尚未传输。 请告诉我配置中可能存在错误的地方。
此致、