I2C接口(续二)

接下来看中断状态寄存器INTSTAT,其字节地址分别为0x40050018(I2C0)、0x40054018(I2C1)、0x40070018(I2C2)、0x40074018(I2C3),下表给出了它的全部位结构。

INTSTAT

NTSTAT寄存器提供了当前已使能的中断标志状态,这能有效地简化软件处理中断的流程。

下面是主机控制寄存器MSTCTL,其字节地址分别为0x40050020(I2C0)、0x40054020(I2C1)、0x40070020(I2C2)、0x40074020(I2C3),下表给出了它的全部位结构。

MSTCTL

在操作上述MSTCTL寄存器时应写入完整值,不要使用“或”操作来写入寄存器。因为该寄存器中的MSTSTART和MSTSTOP位不能自动清除标志,在开始或停止后对新数据进行“或”运算可能会带来不良作用。此外,仅在主机处于挂起状态时(即在STAT寄存器中MSTPENDING=1时),才可以对该寄存器进行写入操作(使用DMA期间和传输完成时除外)。

接下来看主机时间寄存器MSTTIME,其字节地址分别为0x40050024(I2C0)、0x40054024(I2C1)、0x40070024(I2C2)、0x40074024(I2C3),下表给出了它的全部位结构。

MSTTIME

MSTTIME寄存器允许对某些时间进行编程,这些时间可能受主机功能管控,包括时钟(SCL)高位和低位时间、重复开始建立时间以及发送数据建立时间。

下面是主机数据寄存器MSTDAT,其字节地址分别为0x40050028(I2C0)、0x40054028(I2C1)、0x40070028(I2C2)、0x40074028(I2C3),下表给出了它的全部位结构。

MSTDAT

MSTDAT寄存器提供了读取最新接收的主机功能数据的方法,以及利用主机功能发送数据的方法。

下面是从机控制寄存器SLVCTL,其字节地址分别为0x40050040(I2C0)、0x40054040(I2C1)、0x40070040(I2C2)、0x40074040(I2C3),下表给出了它的全部位结构。

SLVCTL

下面是从机数据寄存器SLVDAT,其字节地址分别为0x40050044(I2C0)、0x40054044(I2C1)、0x40070044(I2C2)、0x40074044(I2C3),下表给出了它的全部位结构。

SLVDAT

SLVDATAT寄存器提供了读取最新接收的从机功能数据的方法,以及利用从机功能发送数据的方法。

接下来是从机地址寄存器SLVADR[0:3],其字节地址分别为0x40050048(SLVADR0)至0x40050054(SLVADR3)(I2C0)、0x40054048(SLVADR0)至0x40054054(SLVADR3)(I2C1)、0x40070048(SLVADR0)至0x40070054(SLVADR3)(I2C2)、0x40074048(SLVADR0)至0x40074054(SLVADR3)(I2C3), 下表给出了它的全部位结构。

SLVADR

SLVADR[0:3]寄存器允许使能和定义I2C从机硬件自动识别的其中一个地址。I2C从机功能具有4个地址比较器,另外3个地址比较器中不包含地址限定符功能。为了处理一般调用地址,可对4个地址寄存器中的一个编程,以响应地址0。比较从机地址与接收地址时,比较结果可能会受SLVQUAL0寄存器(如下)的设置影响。

下面来看从机地址限定符0寄存器SLVQUAL0,其字节地址分别为0x40050058(I2C0)、0x40054058(I2C1)、0x40070058(I2C2)、0x40074058(I2C3),下表给出了它的全部位结构。

SLVQUAL0

SLVQUAL0寄存器可改变从机地址0的解析方式。

最后来看监视器数据寄存器MONRXDAT,其字节地址分别为0x40050080(I2C0)、0x40054080(I2C1)、0x40070080(I2C2)、0x40074080(I2C3),下表给出了它的全部位结构。

MONRXDAT

MONRXDAT寄存器为只读,它提供与I2C总线上的事件有关的信息,主要是便于在开发应用期间调试I2C。会报告通过总线的所有数据地址和数据,无论它们是否获得确认,也会报告开始和停止事件。由CFG寄存器中的MONEN位来使能监视器控制功能,可通过配置CFG寄存器中的MONCLKSTR位为监视器模式,以便在未能及时从MONRXDAT寄存器读取数据以进行阻止时拉伸I2C时钟。这样可帮助确保不错失任何事物,但会使监视器功能具备一定的入侵性(通过潜在性地增加时钟延时,具体取决于软件或DMA响应时间)。如果时钟拉伸未使能,为了提高收集全部监视器信息的几率,会缓存监视器数据,且数据保持可用,直至从I2C总线接收到下一条信息。

--待续--

posted @ 2023-04-14 10:37  fxzq  阅读(347)  评论(0)    收藏  举报