LPC824-I2C接口(续二)

2023-11-01 193浏览
百检网是一家专业的第三方检测平台,汇聚众多拥有权威资质的第三方检测机构为你提供一站式的检测服务,做检测就上百检网。百检网让检测从此检测,一份报告全国通用,专业值得信赖。

继续来看I2C中断使能设置及读取寄存器INTENSET,下表是它的全部位结构,其地址分别为0x40050008 (I2C0),0x40054008 (I2C1),0x40070008 (I2C2)和0x40074008 (I2C3))。

(1)第0位(MSTPENDINGEN)为主机挂起中断使能位。写0时主机挂起中断禁止,写1时主机挂起中断使能,默认为禁止。(2)第1到3位保留位,读出的值未定义,写入时只能写0。(3)第4位(MSTARBLOSSEN)为主机仲裁丢失中断使能位。写0时主机仲裁丢失中断禁止,写1时主机主机仲裁丢失中断使能,默认为禁止。(4)第5位为保留位,读出的值未定义,写入时只能写0。(5)第6位(MSTSTSTPERREN)为主机开始/停止错误中断使能位。写0时主机开始/停止错误中断禁止,写1时主机开始/停止错误中断使能,默认为禁止。(6)第7位为保留位,读出的值未定义,写入时只能写0。(7)第8位(SLVPENDINGEN)为从机挂起中断使能位。写0时从机挂起中断禁止,写1时从机挂起中断使能,默认为禁止。(8)第9到10位为保留位,读出的值未定义,写入时只能写0。(9)第11位(SLVNOTSTREN)为从机未执行拉伸中断使能位。写0时从机未执行拉伸中断禁止,写1时从机未执行拉伸中断使能,默认为禁止。(10)第12到14位为保留位,读出的值未定义,写入时只能写0。(11)第15位(SLVDESELEN)为从机取消选择中断使能位。写0时从机取消选择中断禁止,写1时从机从机取消选择中断使能,默认为禁止。(12)第16位(MONRDYEN)为监视器数据就绪中断使能位。写0时监视器数据就绪中断禁止,写1时监视器数据就绪中断使能,默认为禁止。(13)第17位(MONOVEN)为监视器超限中断使能位。写0时监视器超限中断禁止,写1时监视器超限中断使能,默认为禁止。(14)第18位为保留位,读出的值未定义,写入时只能写0。(15)第19位(MONIDLEEN)为监控器空闲中断使能位。写0时监控器空闲中断禁止,写1时监控器空闲中断使能,默认为禁止。(16)第20到23位为保留位,读出的值未定义,写入时只能写0。(17)第24位(EVENTTIMEOUTEN)为事件超时中断使能位。写0时事件超时中断禁止,写1时事件超时中断使能,默认为禁止。(18)第25位(SCLTIMEOUTEN)为SCL超时中断使能位。写0时SCL超时中断禁止,写1时SCL超时中断使能,默认为禁止。(19)第26到31位为保留位,读出的值未定义,写入时只能写0。

接下来看I2C中断使能清除寄存器INTENCLR,该寄存器为只写属性,下表是它的全部位结构,其地址分别为0x4005000C (I2C0),0x4005400C (I2C1),0x4007000C (I2C2)和0x4007400C (I2C3))。

(1)第0位(MSTPENDINGCLR)为主机挂起中断清除位,写1时将会清除INTENSET寄存器中对应的位。(2)第1到3位保留位,读出的值未定义,写入时只能写0。(3)第4位(MSTARBLOSSCLR)为主机仲裁丢失中断清除位,写1时将会清除INTENSET寄存器中对应的位。(4)第5位为保留位,读出的值未定义,写入时只能写0。(5)第6位(MSTSTSTPERRCLR)为主机开始/停止错误中断清除位,写1时将会清除INTENSET寄存器中对应的位。(6)第7位为保留位,读出的值未定义,写入时只能写0。(7)第8位(SLVPENDINGCLR)为从机挂起中断清除位,写1时将会清除INTENSET寄存器中对应的位。(8)第9到10位为保留位,读出的值未定义,写入时只能写0。(9)第11位(SLVNOTSTRCLR)为从机未执行拉伸中断清除位,写1时将会清除INTENSET寄存器中对应的位。(10)第12到14位为保留位,读出的值未定义,写入时只能写0。(11)第15位(SLVDESELCLR)为从机取消选择中断清除位,写1时将会清除INTENSET寄存器中对应的位。(12)第16位(MONRDYCLR)为监视器数据就绪中断清除位,写1时将会清除INTENSET寄存器中对应的位。(13)第17位(MONOVCLR)为监视器超限中断清除位,写1时将会清除INTENSET寄存器中对应的位。(14)第18位为保留位,读出的值未定义,写入时只能写0。(15)第19位(MONIDLECLR)为监控器空闲中断清除位,写1时将会清除INTENSET寄存器中对应的位。(16)第20到23位为保留位,读出的值未定义,写入时只能写0。(17)第24位(EVENTTIMEOUTCLR)为事件超时中断清除位,写1时将会清除INTENSET寄存器中对应的位。(18)第25位(SCLTIMEOUTCLR)为SCL超时中断清除位,写1时将会清除INTENSET寄存器中对应的位。(19)第26到31位为保留位,读出的值未定义,写入时只能写0。

接下来是I2C的超时寄存器TIMEOUT,下表是它的全部位结构,其地址分别为0x40050010 (I2C0),0x40054010(I2C1),0x40070010 (I2C2)和0x40074010 (I2C3))。

(1)第0到3位为超时时间值。这4位的值固定为0xF,表明I2C功能时钟的*小超时为16,也即I2C功能时钟的超时分辨率为16。(2)第4到15位为超时时间值。值I2C功能时钟的指定超时间隔增量为16,由CLKDIV寄存器定义。若要在I2C工作时改变该数值,则需禁用所有超时、向TIMEOUT写入新数值,并重新使能超时。当值为0x000时,I2C功能时钟经16次计数后会产生一次超时;值为0x001时,I2C功能时钟经32次计数后会产生一次超时;以此类推,值为0xFFF时,I2C功能时钟经65536次计数后会产生一次超时。(3)第16到31位为保留位,读出的值未定义,写入时只能写0。

下面是I2C时钟分频寄存器CLKDIV,下表是它的全部位结构,其地址分别为0x40050014 (I2C0),0x40054014(I2C1),0x40070014 (I2C2)和0x40074014 (I2C3))。

(1)第0到15位为分频值。I2C功能需要一个内部时钟才能工作,这里的16位值决定了I2C如何使用PCLK时钟。值为0x0000时,I2C直接使用PCLK时钟;值为0x0001时,I2C在使用前先对PCLK时钟进行2分频处理;值为0x0002时,I2C在使用前先对PCLK时钟进行3分频处理;以此类推,值为0xFFFF时,I2C在使用前先对PCLK时钟进行65536分频处理。(2)第16到31位为保留位,读出的值未定义,写入时只能写0。

I2C功能的时钟结构见下面的框图所示。

在上图中,系统AHB时钟经过I2C时钟使能控制选择后,注入到了时钟分频寄存器CLKDIV中,分频后输出的时钟用来进行数据采样及超时控制,采样时钟在经过逻辑电平选择后直接作为SCL输出。


百检网秉承“客户至上,服务为先,精诚合作,以人为本”的经营理念,始终站在用户的角度解决问题,为客户提供“一站购物式”的新奇检测体验,打开网站,像挑选商品一样简单,方便。打破行业信息壁垒,建构消费和检测机构之间高效的沟通平台