项目是在TMS320F28035下,用I2C驱动一个FM24C16。
I2C是一个简单的协议,2线接口,一个SCL,一个SDA。大致看了一眼手册,以为很容易调试。
FM24C16的手册也很简单,大致看了一下,以为半天的事。
接下来调试的过程,让我崩溃了。开始用controlsuit中的例程Example_2803xI2C_eeprom做调试。先是将WP脚置低,整个过程均不用写保护。然后,按例程运行。在没有细看程序的情况下,对例程进行了一些改动,抱着侥幸的心理,希望稍微改动一点,即可应用。结果接下来的几天,让我郁闷了,一直没有调试成功。
接下来,查看FM24C16的手册,看是不是时序不对。同时查看DSP的I2C总线的使用手册。看一点,改一点,一直没有调出。
例程中,只写2个字节,读2个字节,改动程序读N个字节,写N个字节。一直是读出最后写进去的两个字节。不知是怎么回事。以为是改动不对,很长一段时间,均在改程序。
在这种状态中过去了好几天。
今天,用示波器看了SCL和SDA的波形,发现了问题:读取时,由FM24C16的手册知,发完1字节从节点地址,发1字节WORD address。而这个例程,可能是较大存储的铁电的程序,发送了两个字节的WORD address。
终于找到的问题。天呢。如果一开始就用示波器看,如果一开始 就认真的看手册,也不致于用时N天。
所以,以后做事,要吸取教训。
记住:1)用别人的程序要理解每一步的意义,不要想当然以为。
2)不明白DSP的I2C的用法,用简单的程序,就用示波器看一下波形就明白了。
3)最好将数据手册一步步看完,并理解了。
有时,要停下来,从方法上进行改进呀。不要像我一样,钻进去,出不来了。方向错了,很致命。