打印
[DSP编程]

DSP28335 I2C

[复制链接]
3865|8
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
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  对比一下寄存器配置
仅供参考
28335iic.rar (452.07 KB)

使用特权

评论回复
板凳
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 编辑

附件错误

I2C2.rar

131.24 KB

使用特权

评论回复
5
pandabin| | 2014-4-15 20:28 | 只看该作者
本帖最后由 pandabin 于 2014-4-15 22:19 编辑

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

I2C1.rar

180.72 KB

使用特权

评论回复
6
LENA989| | 2014-7-6 23:06 | 只看该作者
楼主,我在调试程序时要连续在i2CDXR寄存器中写三次,结果对应的状态寄存器中的XRDY在传送过程为0,求解答怎么办涅。。。。。

使用特权

评论回复
7
1831249703| | 2015-4-20 15:12 | 只看该作者
LENA989 发表于 2014-7-6 23:06
楼主,我在调试程序时要连续在i2CDXR寄存器中写三次,结果对应的状态寄存器中的XRDY在传送过程为0,求解答 ...

您好,你的问题你解答了吗?

使用特权

评论回复
8
LENA989| | 2015-4-20 15:33 | 只看该作者
1831249703 发表于 2015-4-20 15:12
您好,你的问题你解答了吗?

嗯,解决了,多谢大神关心:handshake

使用特权

评论回复
9
1831249703| | 2015-4-20 17:01 | 只看该作者
LENA989 发表于 2015-4-20 15:33
嗯,解决了,多谢大神关心

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

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

2

主题

5

帖子

0

粉丝