楼主新年好!
“有时通有时不通”这样可以推断出你的软件设置、操作流程基本上没啥问题了。否则不会出现“通”的时候呢。
请问一下楼主你是如何认定为“通”呢?你读出的数据是不是早已写入EERPOM了?如果是,你的写操作程序是上面的程序吗?
我不知道楼主的外部连线是如何连接的,你可否将IIC模块的时钟频率再降到20-50K试试呢。
你的main()程序中,在读与写之间可以加一个10ms级以上的延时;同样,读操作重复的话建议后也增加一个大延时。在main中建议增加一个loop在里做控制,否则程序会跑掉或重启。
关于说到MSP430的IIC模块,我的感觉是TI写的模块子程序很多配合中断方式进行,极少见到过有查询方式的。同时,我所接触的网友,很多都反映TI的IIC模块不太好利,就以你上面的查询标志为例;在调步调试时极容易出错。或在标志查询时难以通过。
在实际的应用中,我觉得用查询方式比较灵活使用;没必要样样都使用配合中断来使用。这样极为不便。可惜在这查询控制IIC读写方面的例子基本上没有。
另外,MSP430的系列较多,模块的例子使用好似都有不同。比如F16的和F24的及F5系列的及部分F4系列新型号中,同样的程序移植过后在很多新的型号中都难以调通。或感觉有bug...。
总之我过往的感受是MSP430的IIC很多问题,难以使用;相对其他公司的IIC很少有这样的难用情况。看来我说了很多IIC不满...;不知一些用过IIC模块的网友是不是有这样的同感呢。欢迎讨论。