IIC程序问题

IIC程序问题,第1张

ReadAddr是个16bit的数据,可分为高8bit和低8bit

两个可能:

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区的数据需要从机收到请求后控制发送哪一个部分。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/7772744.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-09
下一篇 2023-04-09

发表评论

登录后才能评论

评论列表(0条)

保存