您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 质量控制/管理 > smbus中的应答位ACK和NACK的理解
ACK和NACK的理解1,ACK和NACK的含义ACK是acknowledge的前三个字母,含义是“告知收到”,这个词在书信中常用到。NACK=Non-ACK,就是“告知没有收到”或者“没有告知收到”。2,ACK和NACK的电性本质实现ACK是在CLK高电平期间保持低电平,NACK是在CLK高电平期间保持高电平。一个数据接收器(可以是从设备,也可以是主设备)发出ACK,从电路上看,本质是data线上的开漏MOS导通使得漏极D接地短路,从而把SMBus总线的data线的电平拉低。当然,如果发出的是NACK,从电路上看,本质是data线上的开漏MOS截止使得漏极D对地开路,释放SMBus总线的data线,让data线的电平被上拉电阻和电压置高。可见,数据接收器发出ACK应答,该设备就会把dataMOS导通拉低data线。如果数据接收器发出NACK应答,该设备就会把dataMOS截止释放data线。由于一个从设备被主设备访问时,其他从设备是没有被寻址的,所以这些设备的data开漏MOS管都是截止的,对data线是释放的,所以这时data线的电平只能由的数据接收器(从设备或者主机)来控制。3,ACK和NACK发生的条件发送设备在与接收设备通讯时,接收设备要通过ACK或者NACK来告知数据发送设备自己当前对数据的接收状态,ACK表示接收设备已经安全地接收了发送设备传送过来的数据,NACK表示接收设备还没有完成对发送设备传送来的数据的接收。一般地,一次通讯中,发出ACK或NACK的设备一定是数据接收设备,它可以是主设备,也可以是从设备。从设备通常发出NACK的情况:1,主设备试图寻址该从设备时,但该从设备不存在。当然该从设备不会对data线产生拉低的效应。2,由于某种原因从设备出现故障而没有对主设备的寻址作出应答,就是该从设备不知道是否接收到了主设备写入的数据,但就是没有把data线的电平拉低,比如因为该设备data开漏MOS损坏没有导通到地。3,从设备接收了来自主设备写入的数据,但是由于此时从设备处于接收忙碌状态中,此时,主设备还是可能会不断地写数据给该从设备,所以从设备在每个写入的数据后都发出NACK告诉master我还在忙碌地处理你传送来的每个数据。这说明,NACK后面不一定是stop!主设备发出NACK的情况:除了从设备的以上3种情况外,主设备作为数据接收器发出NACK是在一次读取通信结束后,由该主设备直接发出一个stop来终止这次通信,就算接收完成正常也不再用ACK来告诉从设备发送器了。由start或者repeatstart开始的第一个字节,主机不论是向从设备中写数据,还是从从设备中读取数据,发ACK或者NACK的总是从设备。这是因为第一个字节是寻址从设备的,不是主设备读取的数据,也不是写给从设备的数据,必须要从设备作出应答确认从设备的存在性和准备完毕性。发出了ACK就表示该从设备告诉主设备你的寻址我收到了,在我这儿呢!
本文标题:smbus中的应答位ACK和NACK的理解
链接地址:https://www.777doc.com/doc-2858950 .html