[DSP编程] DSP28335 I2C

[复制链接]
 楼主| rbc285426369 发表于 2013-10-30 10:58 | 显示全部楼层 |阅读模式
本帖最后由 rbc285426369 于 2013-10-30 11:35 编辑

这几天在调试28335的I2C,发现了个很恶心的问题,i2c设置为主设备发模式,发一个0x1e的指令,外部什么都没有接,却在i2c的接受寄存器中收到了数据,就是我刚发的1E,这是怎么回事呀?跪求大神指导~!!
void I2CA_Init(void)
{
   // Initialize I2C
   I2caRegs.I2CMDR.bit.IRS =0;
   I2caRegs.I2CSAR = 0x00;        // Slave address
   I2caRegs.I2CPSC.all = 14;//9;         // Prescaler - need 7-12 Mhz on module clk
   I2caRegs.I2CCLKL = 10;//15;           // NOTE: must be non zero
   I2caRegs.I2CCLKH =5;//15;            //Fi2c=Fp/((I2CCLKL+d)+(I2CCLKH+d))
   I2caRegs.I2CIER.all = 0x00;      // Enable SCD & ARDY interrupts
   I2caRegs.I2CMDR.bit.IRS = 1; // Take I2C out of reset
                                    // Stop I2C when suspended            
}
Uint16 WriteData(Uint16 CMD)
{
   Uint16 i;
   if (I2caRegs.I2CSTR.bit.BB == 1)
   {
      return I2C_BUS_BUSY_ERROR;
   }
   while(!I2C_xrdy());
   I2caRegs.I2CSAR = 0x00;
   I2caRegs.I2CCNT = 1;
   I2caRegs.I2CDXR = CMD;
   I2caRegs.I2CMDR.all = 0x6E20;
   if (I2caRegs.I2CSTR.bit.NACK == 1)
          return    I2C_BUS_BUSY_ERROR;
   return I2C_SUCCESS;   
}
我在主程序中调用WriteData(0X1E),单步跟随调试发现I2caRegs.I2CDRR = 0x1E,怎么回事呀?

zhangmangui 发表于 2013-10-30 22:42 | 显示全部楼层
看看调试通过的IIC  对比一下寄存器配置
仅供参考

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
 楼主| rbc285426369 发表于 2014-2-20 09:38 | 显示全部楼层
zhangmangui 发表于 2013-10-30 22:42
看看调试通过的IIC  对比一下寄存器配置
仅供参考

好吧,问题解救了,分还是给你吧~
pandabin 发表于 2014-4-15 10:45 | 显示全部楼层
本帖最后由 pandabin 于 2014-4-15 22:22 编辑

附件错误

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
pandabin 发表于 2014-4-15 20:28 | 显示全部楼层
本帖最后由 pandabin 于 2014-4-15 22:19 编辑

刚看了一下,附件添加版本有误,更正本次附件。@zhangmangui  @rbc285426369  帮助查看下,不胜感激
存在的问题:当进行读数据,建立要读数据的寄存器地址时,一直产生非应答信号,从而不能进行repeatstart。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
LENA989 发表于 2014-7-6 23:06 | 显示全部楼层
楼主,我在调试程序时要连续在i2CDXR寄存器中写三次,结果对应的状态寄存器中的XRDY在传送过程为0,求解答怎么办涅。。。。。
1831249703 发表于 2015-4-20 15:12 | 显示全部楼层
LENA989 发表于 2014-7-6 23:06
楼主,我在调试程序时要连续在i2CDXR寄存器中写三次,结果对应的状态寄存器中的XRDY在传送过程为0,求解答 ...

您好,你的问题你解答了吗?
LENA989 发表于 2015-4-20 15:33 | 显示全部楼层
1831249703 发表于 2015-4-20 15:12
您好,你的问题你解答了吗?

嗯,解决了,多谢大神关心:handshake
1831249703 发表于 2015-4-20 17:01 | 显示全部楼层
LENA989 发表于 2015-4-20 15:33
嗯,解决了,多谢大神关心

我不是大神,我遇到了一些问题,对例程有的配置不知道什么意思,想请教您,我qq1831249703,求指导啊
比如例程中在发送时,先往I2CDXR发送两字节地址,再接着发送四字节数据后才配置I2CMDR。个人理解是否应一个一个的发数据,因为发送寄存器是只有一个的,一次写那么多,怎么发呢?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

2

主题

5

帖子

0

粉丝
快速回复 返回顶部 返回列表