微芯的mssp技术手册上写:<br /><br />15.4.3.1 寻址<br />一旦使能了MSSP 模块,它就会等待启动条件产生。 在<br />启动条件出现后,8 位数据被移入SSPxSR 寄存器。在<br />时钟(SCLx)线的上升沿采样所有的输入位。 寄存器<br />SSPxSR<7:1> 的值会和SSPxADD 寄存器的值比较,<br />该比较是在第8 个时钟脉冲(SCLx)的下降沿进行的。<br />如果地址匹配,并且BF 位和SSPOV 位为零,会发生<br />下列事件:<br />1. SSPxSR 寄存器的值被装入SSPxBUF 寄存器。<br />2. 缓冲器满标志位BF 置1。<br />3. 产生ACK 脉冲。<br />4. 在第9 个SCLx 脉冲的下降沿,MSSP 中断标志<br />位SSPxIF 置位(如果允许中断则产生中断)。<br /><br />即从机地址匹配时,缓冲器满标志位BF 置1,<br /><br />但是从其手册上的从机发送的时序图来看,从机读地址匹配时,缓冲器满标志位BF 是清0的,<br /><br />我用实际器件的情况是:<br />从机读地址匹配时,缓冲器满标志位BF 是置1的,和从机发送时序图不符合啊??????<br /><br /><br />哪位高手,做过pic的i2c从机,你们在从机读地址匹配的时候BF到底是0还是1啊????????????<br /><br /><br /><br /><br /> |
|