首页 > 其他分享 >I2C接口(续二)

I2C接口(续二)

时间:2023-04-14 10:45:45浏览次数:66  
标签:超时 未定义 中断 续二 接口 寄存器 I2C 位为

继续来看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输出。

-待续- 

标签:超时,未定义,中断,续二,接口,寄存器,I2C,位为
From: https://www.cnblogs.com/fxzq/p/17316089.html

相关文章

  • Python+Requests+Pytest接口自动化测试微信接口实例
         pytest.ini配置文件[pytest]log_cli=truelog_level=NOTSETlog_format=%(asctime)s%(levelname)s%(message)slog_date_format=%Y-%m-%d%H:%M:%Saddopts=-vs--alluredir./temp-m'file'log_file=./log/test.loglog_file_level=infol......
  • rv1126 获取图像数据,实现图像裁剪、缩放、旋转【RK_MPI API接口】
    前言刚接触RK平台,目前正在学习探索阶段,欢迎朋友们一起讨论,指出文章错误和可以优化的地方;如果想参照文中描述进行编译、执行程序,请先参考阅读rv1126SDK编译和rv1126数据流;版本说明,测试使用SDK版本是2020-0912版本,文中记录的问题,可能在新版本已经解决;文中使用的接口函数,可能老版本......
  • Spring Boot 接口加解密,新姿势来了!
    1.介绍在我们日常的Java开发中,免不了和其他系统的业务交互,或者微服务之间的接口调用如果我们想保证数据传输的安全,对接口出参加密,入参解密。但是不想写重复代码,我们可以提供一个通用starter,提供通用加密解密功能2.前置知识2.1hutool-crypto加密解密工具hutool-crypto提供......
  • 盘点 8 款好用的 API 接口文档管理工具
    随着互联网的普及和发展,API 接口已经无处不在。它已经在Web应用程序、移动应用程序、云计算、物联网、人工智能等领域中得到广泛应用。例如,在金融行业中,API接口可以被用于构建支付服务、银行服务和证券交易服务等;在医疗行业中,API接口可以被用于构建病历管理系统、健康监测系统......
  • 抽象与接口
     上节课回顾、B是A中得一员才可以继承AAextendsB子类和父类一样得函数,我们成为函数得重写Overrid函数分两部分第一声明部分第二函数得实验体 抽象abstract当子类不需要父类中的实验体,可以将父类中的实验体删掉例子:大括号内为实验体publicabstractvoidstudy();......
  • java.io.Serializable(序列化)接口
     一、概念Java对象序列化的意思就是将对象的状态转化成字节流,以后可以通过这些值再生成相同状态的对象。对象序列化是对象持久化的一种实现方法,它是将对象的属性和方法转化为一种序列化的形式用于存储和传输。反序列化就是根据这些保存的信息重建对象的过程。序......
  • mvc替换t对应的Servle相关接口
      开启注解驱动:    ......
  • 百度翻译接口的获取与使用方法
      本文介绍获取百度翻译官方接口及其密钥,并将接口授权给自己或他人开发的软件或插件的方法。  首先,打开百度翻译开放平台网站,首先点击右上角进行登录。  登录后,选择“管理控制台”。  首次进入“管理控制台”,需要首先注册为百度翻译的开发者身份。在这里,我们选择“个......
  • 关于使用硬件接口卡及CANoe软件的常见问题和解决方案
    CANoe是德国Vector公司出的一款总线开发环境,是网络和ECU开发、测试和分析的专业工具,支持从需求分析到系统实现的整个系统开发过程。硬件接口卡可以提供移动和固定的CAN,LIN,Ethernet等网络的开发、仿真、测试及维护,具有高性能、容易使用、适应性强的硬件接口,用来搭配CANoe的使用,拓展......
  • 在idea运行maven项目 将mybatis的接口与接口对应xml文件放在同一个包下,启动时无法找到
    在项目的在pom文件中引入如下<resources><resource><directory>src/main/java</directory><excludes><exclude>**/*.java</exclude></excludes></resource>......