两个可能:
1.高8位为寄存器地址的高8位,低8位为寄存器地址的低8位。就像if里面走的
2.高8位为从机地址(slave地址)的一部分,也是7位的slave地址(所以要左移一位(ReadAddr/256)<<1),而且是以0xA0为基址的从机地址,所以从机地址应该是:(0XA0+((ReadAddr/256)<<1)),低8位为寄存器地址的低8位。就像else里面的走的
以上 是我的理解 可能有所偏差
首先,iic做从机的程序源码网上比较多,我就不发了,说下调试方法。相信主机部分已经调试通过了,在这个前提下,楼主的思路是没错的,接收非空,读数据。iic属于一个硬件接口,出问题的时候需要借助示波器,监测每个时候每个数据的波形,同时用JTAG在线调试,分析从机相关寄存器的状态,与自己计算的理论值做对比看是否正确,最终会找到一个出错的地方,看着一堆数据确实会枯燥一些,楼主加油,祝成功~
I2C通信是,一个单片机设成从机模式,另一个设成主机模式(MSP430有四种模式:主机发送、主机接收、从机发送、从机接收);通信时寄存器设成相应模式,严格按照时序写代码就OK了。RAM区的数据需要从机收到请求后控制发送哪一个部分。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)