引用: songwenshuai 发表于 2016-4-9 12:00
楼主你好 我按照你的跑了一下 但是不成功啊,能帮帮我吗?或者给一个源程序,我想参考下;

时间太长,代码未必能找到,我尽量找找看
点赞  2016-4-9 12:29
引用: ltbytyn 发表于 2016-4-9 12:29
时间太长,代码未必能找到,我尽量找找看

谢谢楼主!没想到回复我了,我是大二学生,卡着半个月了,官方例程写的太复杂,也是运行不成功。网上找了好多资料,看到您的感觉还不错,您有时间吗??能不能加个QQ指导我一下,自学表示亚历山大啊,,谢谢,可以看看我的代码吗?帮我找找毛病为什么不成功,感谢之极!我QQ 1121452500 谢谢大神
点赞  2016-4-13 13:32

我在采用该程序的时候发现这样的问题:
   采用先写,延时,在读出。发现这样的问题:
  写入数据函数->延时->断点-->读函数->延时,程序运行正常,结果正确;
如采用这样的步骤:
    写入数据函数->延时-->读函数->延时,程序不正确:程序停留在:
  while(I2caRegs.I2CSTR.bit.XRDY == 0){}; 处。

          I2caRegs.I2CSAR = I2C_SLAVE_ADDR;               //Set slave address
           I2caRegs.I2CCNT = 2;                            //Set count to 2 address bytes
           I2caRegs.I2CDXR = I2C_EEPROM_HIGH_ADDR;

           I2caRegs.I2CMDR.bit.TRX = 1;                    //Set to Transmit mode
           I2caRegs.I2CMDR.bit.MST = 1;                    //Set to Master mode
           I2caRegs.I2CMDR.bit.FREE = 1;                   //Run in FREE mode
           I2caRegs.I2CMDR.bit.STP = 0;                    //Dont release the bus after Tx
           I2caRegs.I2CMDR.bit.STT = 1;                    //Send the start bit, transmission will follow

           while(I2caRegs.I2CSTR.bit.XRDY == 0){};         //Do nothing till data is shifted out
           I2caRegs.I2CDXR = I2C_EEPROM_LOW_ADDR;
点赞  2016-4-15 16:36
EEPROM并不是想想种的边写边存
点赞  2016-4-15 18:23
单独运行你的接收函数,发现程序停留在
while(I2caRegs.I2CSTR.bit.XRDY == 0){}; 处。
不知原因为何?
点赞  2016-4-16 11:01
引用: zhdm 发表于 2016-4-16 11:01
单独运行你的接收函数,发现程序停留在
while(I2caRegs.I2CSTR.bit.XRDY == 0){}; 处。
不知原因为何?

F28027_IIC_RS.zip (140.74 KB)
(下载次数: 127, 2016-4-17 16:36 上传)

以前的测试程序。
点赞  2016-4-17 16:36
博主,我用F28335,16级的fifo。读出来的数据第十四个元素以后全是255,怎么感觉这个还是fifo啊?只是可以多显示数组。
点赞  2016-11-30 21:14
又测试了一下,写进去的和读出来的数据是不同的,而且,读数据时,14个数据以后是255
点赞  2016-12-1 15:26
ltbytyn你好,我最近在调试28035的I2C程序,看到你的讲解和程序,深受启发,对于程序我还有几点疑问,向你请教一下;程序中的高低字节为什么要设为0x03和0x57,我发现设置其他值会出错?
#define I2C_EEPROM_HIGH_ADDR  0x03
#define I2C_EEPROM_LOW_ADDR   0x57
还有你的程序是写入并读出100字节,我发现只能读出9字节,后面的都是0x255;我用的是AT24C32,麻烦帮我解答一下,谢谢
点赞  2017-11-6 20:41
能问下楼主,我无法通过I2caRags直接修改寄存器,但是GPIO的GpioCtrlRegs可以,是因为启动文件里缺少什么吗,代码用的是例程
点赞  2019-5-26 20:47
iic通信芯片之间的两根线,不错的分享。
点赞  2019-5-27 10:08
12
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复