LPC824-I2C接口(续一)

发布时间:2023-05-23  

I2C接口共涉及到18个寄存器,下面就来对它们进行具体分析。

先来看I2C配置寄存器CFG,下表是它的全部位结构,其地址分别为0x40050000(I2C0),0x40054000(I2C1),0x40070000(I2C2),0x40074000(I2C3)。它包含适用于主机、从机及监视器功能的模式设置。

(1)第0位(MSTEN)为主机使能位,值为0时禁用I2C主机功能,禁用时主机功能的配置设置不会改变,但主机功能会从内部复位,值为1时使能I2C主机功能,默认为禁止。
(2)第1位(SLVEN)为从机使能位,值为0时禁用I2C从机功能,禁用时从机功能的配置设置不会改变,但从机功能会从内部复位,值为1时使能I2C从机功能,默认为禁止。
(3)第2位(MONEN)为监视器使能位,值为0时禁用I2C监视器功能,禁用时监视器功能的配置设置不会改变,但监视器功能会从内部复位,值为1时使能I2C监视器功能,默认为禁止。
(4)第3位(TIMEOUTEN)为总线超时使能位,值为0时禁用I2C总线超时功能,禁用时超时功能从内部复位,值为1时使能I2C总线超时功能,将会生成两种类型的超时标志,如果标志使能,则会引发中断,系统中通常仅使用一种超时,默认为禁止。
(5)第4位(MONCLKSTR)为监视器功能时钟拉伸使能位,值为0时禁用,此时监视器功能不会执行时钟拉伸。被覆盖之前,软件或DMA并非始终能够读取由监视器功能提供的数据,当非入侵式监控极为重要时,可使用这种模式。值为1时使能,此时监视器功能会执行时钟拉伸,以确保软件或DMA能够读取来自监视器功能的所有数据,默认为禁用。
(6)第5到31位为保留位,写入时只能写0。

接下来看I2C状态寄存器STAT,下表是它的全部位结构,其地址分别为0x40050004(I2C0)、0x40054004(I2C1)、0x40070004(I2C2)、0x40074004(I2C3)。它提供了关于I2C模块全部功能的状态标志和状态信息,寄存器中的某些信息为只读信息,某些标志位可通过写入1清除。

(1)第0位(MSTPENDING)为主机挂起标志位,该位为只读属性。值为0时表示正在进行通信,主机功能繁忙,当前无法接受命令,值为1时表示挂起,主机功能需要软件服务,或正处于闲置状态。

(2)第1到3位(MSTSTATE)为主机状态代码,这些位为只读属性。当MSTPENDING位(第0位)已经置位(即主机挂起或处于闲置状态时),主机状态代码用来反应主机的具体状态。值从0x0到0x4分别表示闲置、接收就绪、发送就绪、NACK地址、NACK数据。
(3)第4位(MSTARBLOSS)为主机仲裁丢失标志位,写1可清除该标志。值为0时表示未发生仲裁丢失,值为1时表示主机功能遭受仲裁丢失,此时主机功能停止驱动总线并进入闲置状态。
(4)第5位为保留位,写入时只能写0。
(5)第6位(MSTSTSTPERR)为主机开始/停止错误标志位,写1可清除该标志。值为0时表示未发生开始/停止错误,值为1时表示主机功能已出现开始/停止错误,主机接口已停止驱动总线并进入闲置状态,无需执行操作。
(6)第7位为保留位,写入时只能写0。
(7)第8位(SLVPENDING)为从机挂起位,该位为只读属性。值为0时表示从机功能当前无需服务,值为1时表示从机功能正等待继续在I2C总线上通信且需要软件服务,可在相邻的SLVSTATE字段(9、10两位)中找到关于所需服务的信息。
(8)第9到10位(SLVSTATE)为从机状态代码,这些位为只读属性,此字段中的每个数值都表示从机功能具体需要的服务。值从0x0到0x3分别表示从机地址、从机接收、从机发送和保留。
(9)第11位(SLVNOTSTR)为从机未执行拉伸标志位,该位为只读属性。该位表示何时从机功能正在拉伸I2C时钟,为了能够在从机操作期间自如调用深度睡眠或掉电模式,则需要如此。值为0时表示从机功能当前正在拉伸I2C总线时钟,此时无法进入深度睡眠或掉电模式,值为1时表示从机功能当前并未拉伸I2C总线时钟,此时可以进入深度睡眠或掉电模式。
(10)第12到13位(SLVIDX)为从机地址匹配索引,这些位为只读属性。当I2C从机功能通过接收到其中一个从机地址(由任意使能的从机地址寄存器确定)匹配的地址被选定,并且识别匹配地址时,此字段有效,匹配的地址可能不止一个,但此处只能报告一个匹配地址。值从0x0到0x3分别表示从机地址0、1、2、3。
(11)第14位(SLVSEL)为从机选定标志位,该位为只读属性。当软件指示从机功能确认地址时,SLVSEL在地址匹配之后置位。当另一地址周期出现一个与从机功能上的使能地址不匹配的地址,当从机软件决定NACK一个匹配地址,或者当在总线上检测到Stop时,其会被清除。如果软件NACK数据,则SLVSEL不会被清除。值为0时表示当前未选择从机功能,值为1时表示当前已选择从机功能。
(12)第15位(SLVDESEL)为从机取消选择标志位,写1可清除该标志。值为0时表示从机功能尚未被取消选择,值为1时表示从机功能已被取消选择。如果此标志通过INTENSET使能,则其在置位时会引发中断。
(13)第16位(MONRDY)为监视器就绪标志位,该位为只读属性,读取MONRXDAT寄存器时,此标志被清除。值为0时表示监视器功能当前无可用数据,值为1时表示监视器功能包含待读取的数据。
(14)第17位(MONOV)为监视器溢出标志位,写1可清除该标志。值为0时表示监视器数据尚未溢出,值为1时表示监视器数据已溢出,只有当监视器时钟拉伸并未由CFG寄存器的MONCLKSTR位使能时,才会发生这种情况。
(15)第18位(MONACTIVE)为监控器激活标志位,该位为只读属性。此标志显示何时监视器认为I2C总线已激活了。值为0时表示监视器功能认为I2C总线未激活,值为1时表示监视器功能认为I2C总线已激活。
(16)第19位(MONIDLE)为监视器空闲标志位,写1可清除该标志。当监视器功能确认I2C总线由激活状态变为非激活状态之后,此标志置位。软件可利用它来确认何时处理监视器功能储集的数据。如果此标志通过INTENSET寄存器使能,则其在置位时,会引发中断。值为0时表示I2C总线并未闲置,或者此标志已被软件清除,值为1时表示自此位上次被软件清除以来,I2C总线至少已被闲置过一次。
(17)第20到23位为保留位,写入时只能写0。
(18)第24位(EVENTTIMEOUT)为事件超时中断标志位,写1可清除该标志。该位指出了事件之间的时间长度何时长于TIMEOUT寄存器指定的时间长度。事件包含Start、Stop和时钟沿。向此位写入1可清除此标志。I2C总线闲置时,不会创建超时。值为0时表示I2C总线事件未引发超时,值为1时表示。I2C总线事件之间的时间长度长于I2C TIMEOUT寄存器指 定的时间长度。
(19)第25位(SCLTIMEOUT)为SCL超时中断标志位,写1可清除该标志。该位指出了SCL保持低电平的时间长度何时长于TIMEOUT寄存器指定的时间长度。值为0时表示SCL低电平时间未引发超时,值为1时表示SCL低电平时间已引发超时。
(20)第26到31位为保留位,写入时只能写0。


文章来源于:电子工程世界    原文链接
本站所有转载文章系出于传递更多信息之目的,且明确注明来源,不希望被转载的媒体或个人可与我们联系,我们将立即进行删除处理。

我们与500+贴片厂合作,完美满足客户的定制需求。为品牌提供定制化的推广方案、专属产品特色页,多渠道推广,SEM/SEO精准营销以及与公众号的联合推广...详细>>

利用葫芦芯平台的卓越技术服务和新产品推广能力,原厂代理能轻松打入消费物联网(IOT)、信息与通信(ICT)、汽车及新能源汽车、工业自动化及工业物联网、装备及功率电子...详细>>

充分利用其强大的电子元器件采购流量,创新性地为这些物料提供了一个全新的窗口。我们的高效数字营销技术,不仅可以助你轻松识别与连接到需求方,更能够极大地提高“闲置物料”的处理能力,通过葫芦芯平台...详细>>

我们的目标很明确:构建一个全方位的半导体产业生态系统。成为一家全球领先的半导体互联网生态公司。目前,我们已成功打造了智能汽车、智能家居、大健康医疗、机器人和材料等五大生态领域。更为重要的是...详细>>

我们深知加工与定制类服务商的价值和重要性,因此,我们倾力为您提供最顶尖的营销资源。在我们的平台上,您可以直接接触到100万的研发工程师和采购工程师,以及10万的活跃客户群体...详细>>

凭借我们强大的专业流量和尖端的互联网数字营销技术,我们承诺为原厂提供免费的产品资料推广服务。无论是最新的资讯、技术动态还是创新产品,都可以通过我们的平台迅速传达给目标客户...详细>>

我们不止于将线索转化为潜在客户。葫芦芯平台致力于形成业务闭环,从引流、宣传到最终销售,全程跟进,确保每一个potential lead都得到妥善处理,从而大幅提高转化率。不仅如此...详细>>