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。
上一篇:LPC824-I2C接口(续二)
下一篇:LPC824-I2C接口
推荐阅读最新更新时间:2024-11-16 21:01
推荐帖子
- 请教::应用程序实现保存注册表功能------急
- 各位:现在遇到一个问题,我手里只有一个NK但是发现它启动时不能保存背光设置(控制面板)(即:几分钟关背光,几分钟关屏那个)请问我怎么能通过应用程序把在控制面板设置的时间读取出来,并保存,下次开机后以这个时间关背光关屏等!!!谢谢!!!请教::应用程序实现保存注册表功能------急注册表HKEY_CURRENT_USER\\ControlPanel\\BackLight,BatteryTimeout、ACTimeout。先要确定你的nk是否支持HIVENK支持HIV
- kcl123 嵌入式系统
- mcu工程师炼成记这句是写错了还是我理解不对
- 在第36页3.4.3节mcu工程师炼成记这句是写错了还是我理解不对XT2振荡器和XT2不一样吗应该是写错了。肯定错了啊,都是0:lol:lol:lol明显的笔误啊。。。@chunyang春阳老师改一下原稿吧https://bbs.eeworld.com.cn/forum.php?mod=viewthread&tid=435309 恩额恩这个的确是写错了 此处非我写作,具体看前言。 貌似我只认识你。。。 晕……是的,楼主也挺仔细的呀。这本书写的是43
- 天天1 微控制器 MCU
- 可见光通信
- 对于可见光通信,硬件电路需要怎么搭建?Help可见光通信搜索高通Lumicast,这是其中一种求同要看具体用途,如果是遥控或短距双向通迅,红外遥控和IrDA方面的技术都可以拿来直接用,只是LED和光敏管不同,换成可见光频段的。如果是想把通迅链路跟照明系统整合的话,非LED光源就要根据光源的具体特性来考虑了,这方面没有普适的方法,只能个案考虑。电赛预测的可见光通信,不知道怎么做 看前帖,先把红外弄清楚。
- 测控一哥 电子竞赛
- 活动邀请实时动态:“集齐五友”立即获得100元京东卡
- 想要参与活动的网友,点击活动详情即可参与哦,截止日期为28日目前已经参与活动网友动态,实时更新活动邀请实时动态:“集齐五友”立即获得100元京东卡
- nmg 单片机
- STC15W408AS红外接受问题(INT0引脚接受)
- 我用STC89C51RD+开发板测试IR1838B红外接收模块,没有一点问题,都能正常接受红外信号。这两天用STC15W408AS画了一个红外接收的板子,也是用INT0中断来实现的,INT0引脚的信号在不接受红外信号时,引脚的状态总是发生跳变,不知道各位大侠做红外接收相关的项目时,有没有遇到类似的问题?在线等,求助???STC15W408AS红外接受问题(INT0引脚接受)都是51单片机,相差应该不大,不过不同的型号的管脚配置可能不太一样。看看STC15W408AS的INT0管脚有没有其他功
- WKfirst 51单片机
- 怎样写testbench(xilinx的)文章共享
- 怎样写testbench的资料贡献给大家!怎样写testbench(xilinx的)文章共享谢谢分享~
- eeleader FPGA/CPLD
设计资源 培训 开发板 精华推荐
- EVAL-ADE7166,带有 8052 MCU、RTC 和 LCD 驱动器的 ADE7166 单相 ADE IC 评估套件
- 一个生日礼物
- EC20usb网卡4g
- LTC3106EFE 简单宽输入电压降压-升压转换器的典型应用电路
- LT1506CS8 双路输出 SEPIC 转换器的典型应用电路
- 使用 NXP Semiconductors 的 PCA9617A 的参考设计
- Si3034PPT-EVB,Si3034 集成语音直接访问安排 (DAA) 解决方案的评估板
- SI53154-EVB,用于 PoE 无线接入点的 100 至 210MHz 时钟发生器的评估板
- ELRS_ESP32_E19_433&915M
- 用于仪表的 8/10/12/14 位、1 通道 DAC
- 免费申请Adafruit开发板 |处理器、传感器、LED、USB一体化设计板,功能强大!
- 评论有礼|【Discovery 】走进TI毫米波雷达世界 快速获得设计技能
- 【EEWORLD第三十三届】2011年12月社区明星人物揭晓!
- Vicor 更好的供电方式提升无人机飞行时间飞行半径及有效载荷
- Digi-Key KOL视频来袭~资深算法工程师畅聊图像处理秘诀
- MPS商城小程序上线 注册、分享、下载干货都可赢好礼——下单还返现!
- 是德科技电子书,下载有礼进行时!
- 精选PI InnoSwitch 产品系列文档,为您的设计添光溢彩! 下载有好礼!
- TI E2E™ 中文社区8周年,8本技术合集送给热爱技术的你!