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