谢谢楼主!没想到回复我了,我是大二学生,卡着半个月了,官方例程写的太复杂,也是运行不成功。网上找了好多资料,看到您的感觉还不错,您有时间吗??能不能加个QQ指导我一下,自学表示亚历山大啊,,谢谢,可以看看我的代码吗?帮我找找毛病为什么不成功,感谢之极!我QQ 1121452500 谢谢大神
我在采用该程序的时候发现这样的问题:
采用先写,延时,在读出。发现这样的问题:
写入数据函数->延时->断点-->读函数->延时,程序运行正常,结果正确;
如采用这样的步骤:
写入数据函数->延时-->读函数->延时,程序不正确:程序停留在:
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;
单独运行你的接收函数,发现程序停留在
while(I2caRegs.I2CSTR.bit.XRDY == 0){}; 处。
不知原因为何?
博主,我用F28335,16级的fifo。读出来的数据第十四个元素以后全是255,怎么感觉这个还是fifo啊?只是可以多显示数组。
又测试了一下,写进去的和读出来的数据是不同的,而且,读数据时,14个数据以后是255
ltbytyn你好,我最近在调试28035的I2C程序,看到你的讲解和程序,深受启发,对于程序我还有几点疑问,向你请教一下;程序中的高低字节为什么要设为0x03和0x57,我发现设置其他值会出错?
#define I2C_EEPROM_HIGH_ADDR 0x03
#define I2C_EEPROM_LOW_ADDR 0x57
还有你的程序是写入并读出100字节,我发现只能读出9字节,后面的都是0x255;我用的是AT24C32,麻烦帮我解答一下,谢谢
能问下楼主,我无法通过I2caRags直接修改寄存器,但是GPIO的GpioCtrlRegs可以,是因为启动文件里缺少什么吗,代码用的是例程