27.6.4.2 中断
I2C从机有以下中断源:
。错误(ERROR):这是个非同步中断可以从何任休眠模式中唤醒设备。
。数据准备好(DRDY):这是个非同步中断可以从何任休眠模式中唤醒设备。
。地址匹配(AMATCH):这是个非同步中断可以从何任休眠模式中唤醒设备。
。停止接收(PREC):这是个非同步中断可以从何任休眠模式中唤醒设备。
I2C主机有以下中断源:
。错误(ERROR):这是个非同步中断可以从何任休眠模式中唤醒设备。
。从机在总线(SB):这是个非同步中断可以从何任休眠模式中唤醒设备。
。主机在总线(MB):这是个非同步中断可以从何任休眠模式中唤醒设备。
每个中断源有一个相关的中断标志.当中断条件发生,中断标志在中断标志状态和清除寄存器
(INTFLAG)设置。每个中断能单独地通过写中断使能寄存器(INTENSET)中的相应位使能,并且禁止是通过写中
断清除寄存器(INTENCLR)中的相应位。当中断标志被设置并且相应的中断使能,则中断请求产生。中断请求
保持活动直到中断标志被清除,中断被禁止或I2C被复位。请参看INTFLAG的描述关于怎样清除中断标志。
I2C有一个对所有中断源通用的中断请求线。用户必须读INTFLAG来判断哪一个条件是存在的。
注意为了中断请求产生全局中断必须使能。请参考"Nested Vector Interrupt Controller"
27.6.4.3 事件
没有应用。
27.6.5 休眠模式操作
在I2C主机操作期间,通用时钟(GCLK_SERCOMx_CORE)将继续在空闲休眠模式下运行。如果运行在控制
寄存器A的Standby比特位为1的情况下,GLK_SERCOMx_CORE也将运行在standby休眠模式。任何中断通唤醒设
备。
如果在I2C主机操作期间CTRLA.RUNSTDBY是零,GLK_SERCOMx_CORE将在连续传输结束时禁止。任何中断
可以唤醒设备。
在I2C从机操作期间,写一个1到CTRLA.RUNSTDBY将允许地址匹配中断唤醒设备。
在I2C从机操作期间,当CTRLA.RUNSTDBY是0所有的接收将放下。
27.6.6 同步
处理CLK_SERCOMx_APB和GCLK_SERCOMx_CORE之间的同步,一个寄存器必须在访问时被同步。
一个寄存器需要:
。写时同步
。读时同步
。读写时同步
。不用同步
当执行一个操作需要同步,在同步忙寄存器(SYNCBUSY)相应同步忙比特将立刻置位,并且在同步结束时
清零。
如果一个操作需要同步执行这时相应的SYNCBUSY比特进1,一个外设总线错误将生产。
下列比特需要写时同步:
。在控制寄存器A软件复位比特(CTRLA.SWRST)。SYNCBUSY.SWRST当同步进行时设为1.
。控制寄存器A使能比特(CTRLA.ENABLE)。SYNCBUSY.ENABLE当同步进行时设置为1.
。在状态寄存器的写总线状态比特。SYNCBUSY.SYSOP当同步进行时设置为1
。当在主机操作时,在地址寄存器(ADDR.ADDR)的地址比特,SYNCBUSY.SYSOP在同步进行时设置为1.
。当在主机操作时,数据DATA,SYNCBUSY.SYSSOP当同步进行时设置为1.
写同步指示是在寄存器描述中的写同步属性指示的。
|