LPC824-I2C接口(续一)

发布者:ShiningSmile最新更新时间:2023-09-30 来源: elecfans关键字:LPC824  I2C接口  寄存器 手机看文章 扫描二维码
随时随地手机看文章

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接口(续一)

上一篇:LPC824-I2C接口(续二)
下一篇:LPC824-I2C接口

推荐阅读最新更新时间:2024-11-10 11:26

MCS-51单片机的串行I/O口及控制寄存器
1、串行口的结构 MCS-51串行口结构框图示于图。由图可见 MCS-51 单片机 串行口主要由两个物理上独立的串行数据缓冲寄存器SBUF、发送控制器、接收控制器、输入移位寄存器和输出控制门组成。两个特殊功能寄存器SCON和PCON用来控制串行口的工作方式和波特率。发送缓冲寄存器SBUF只能写,不能读;接收缓冲寄存器SBUF只能读,不能写。两个缓冲寄存器共用一个地址99H,可以用读/写指令区分。 串行发送时,通过 MOV SBUF,A 写指令,CPU把累加器A的内容写入发送的SBUF(99H),再由TxD引脚一位一位地向外发送;串行接收时,接收端从RxD一位一位地接收数据,直到收到一个完整的字符数据后通知CPU,再通过 M
[单片机]
MCS-51单片机的串行I/O口及控制<font color='red'>寄存器</font>
STM32输入上拉下拉 寄存器怎么设置实现
在输出模式下:ODR是数据输出寄存器, 但是在 输入模式下,同时也用来配置上拉下拉设置。 在Alientek的源码中的按键输入实验中有如下一段初始化代码: void KEY_Init(void){ RCC- APB2ENR|=1 2; //使能PORTA时钟 GPIOA- CRL&=0XFFFFFFF0;//PA0设置成输入 GPIOA- CRL|=0X00000008; GPIOA- CRH&=0X0F0FFFFF;//PA13,15设置成输入 GPIOA- CRH|=0X80800000; GPIOA- ODR|=1 13; //PA13上拉,PA0默认下拉
[单片机]
STM32输入上拉下拉 <font color='red'>寄存器</font>怎么设置实现
【STM32】独立看门狗概述、寄存器、库函数(IWDG一般步骤)
STM32F1xx官方资料: 《STM32中文参考手册V10》-第17章 独立看门狗 独立看门狗概述 看门狗的定义 在由单片机构成的微型计算机系统中,由于单片机的工作常常会受到来自外界电磁场的干扰,造成程序的跑飞,而陷入死循环;或者程序的正常运行被打断,由单片机控制的系统无法继续工作,会造成整个系统的陷入停滞状态,发生不可预料的后果。所以出于对单片机运行状态进行实时监测的考虑,便产生了一种专门用于监测单片机程序运行状态的模块或者芯片,俗称“看门狗”(watchdog) 。 简单点说:看门狗的作用就是在一定时间内(通过定时计数器实现)没有接收到喂狗信号(表示MCU已经挂了),便实现处理器的自动复位重启(发送复位信号)。
[单片机]
【STM32】独立看门狗概述、<font color='red'>寄存器</font>、库函数(IWDG一般步骤)
ATMEGA16 IO端口相关总结
ATMEGA16 IO端口相关的寄存器总共有三个DDRX、PORTX和PINX。如果要对IO操作基本上就是对这三个寄存器进行相关的操纵。DDRX也称为数据方向寄存器、PORTX称为数据寄存器、PINX称为端口输入引脚。 DDRX的作用: 当DDRX = 0时,表示的是某端口的引脚为输入;当DDRX = 0xff时表示某端口的引脚为输出。 引脚的状态:输入或者输出是根据什么定义的呢? 是根据高低电平是输入单片机还是从单片机输出。输入是指:不属于单片机的外部的电平输入到单片机;输出是指:单片机的电平输出到单片机的外部。 PORTX的作用: 当DDRX = 0时,若把PORTX置位则表示启动了上拉电阻;若PORTX为0,
[单片机]
ATMEGA16 IO端口相关总结
第13章 标志寄存器(X86汇编教程)
其实这章的内容不怎么重要,看不懂也没关系,这些都是后台自己处理的,标志寄存器很少有人自己操作,就好像你不知道你的心脏每分钟跳几下,但你仍然活得好好的这样,另外,.之前居然有人转载了某章节,虽然那一章我没写不能转载...... 这一章简单介绍一个寄存器.为之后的章节做铺垫(由于咱是懒人,下一章几时写未定.) 标志寄存器(PSW),是对计算的结果以及CPU的某些状态进行保存用的. 为了实现一些功能,CPU在执行某些指令的时候,会把计算产生的一些东西保存到标志寄存器,一般都是算数指令.比如说计算结果是正数还是负数. 186的标志寄存器是16位的,除了几个没用到的位,每一位都有不同含义和名字.名字表如下: 15
[单片机]
谈谈MSP432的编程方法
基于 寄存器 的编程示例 //****************************************************************************** // MSP432P401 Demo - eUSCI_B0 I2C Master TX bytes to Multiple Slaves // // Description: This demo connects two MSP432's via the I2C bus. // The master transmits to 4 different I2C slave addresses 0x0A,0x0B,0x0C&0x0D. // E
[单片机]
快速学Arm(9)--处理器的状态,模式以及概括了解内部寄存器
快速学习总是要颠三倒四的来学习内容.最终将所知道的东西联系起来就形成了一种能力. 我了先了解一下处理器状态,模式以及一些芯片内部的寄存器. 芯片内部的寄存器一般要使用汇编语言进行控制,写C语言的程序时,大部分情况下不用去关心这些寄存器是如何工作的,除非你要进行底层的程序设计,这些内容可以在以后随着Arm学习的深而入进行再看也不迟,目前大概的扫几眼也就可以了. Arm2400一般有两种两种指令形式,即ARM指令和Thumb指令两种状态条.ARM是32位的指令而Thumb形式则是16位指令模式.如果大家学过8068汇编和80386汇编,大家是看成PC上的8086和和80386自己的指令关心. Arm处理器除了有两种状态
[单片机]
GPIO寄存器描述
一、端口配置低寄存器(GPIOx_CRL) (x=A..E) 控制低8位引脚 二、端口配置高寄存器(GPIOx_CRH) (x=A..E) 控制高8位引脚 三、端口输入数据寄存器(GPIOx_IDR) (x=A..E) 四、端口输出数据寄存器(GPIOx_ODR) (x=A..E) 五、端口位设置/清除寄存器(GPIOx_BSRR) (x=A..E) 六、端口位清除寄存器(GPIOx_BRR) (x=A..E) 七、端口配置锁定寄存器(GPIOx_LCKR) (x=A..E)
[单片机]
GPIO<font color='red'>寄存器</font>描述

推荐帖子

搞嵌入式的,为啥要有uboot?
1.1、计算机系统的主要部件(1)计算机系统就是以CPU为核心来运行的系统。典型的计算机系统有:PC机(台式机+笔记本)、嵌入式设备(手机、平板电脑、游戏机)、单片机(家用电器像电饭锅、空调)。(2)计算机系统的组成部件非常多,不同的计算机系统组成部件也不同。但是所有的计算机系统运行时需要的主要核心部件都是3个东西:CPU+外部存储器(Flash/硬盘)+内部存储器(DDRSDRAM/SDRAM/SRAM)1.2、PC机的启动过程(1)部署:典型的PC
jingcheng 51单片机
OMAP-L138支持Android
OMAP-L138支持Android
德仪DSP新天地 DSP 与 ARM 处理器
好资料!TPS2393A实现大电流热插拔
本文为您介绍一种解决这个问题的简单且高效的方法,一种扩展TPS2393A应用范围的简单方法。TPS2393A拥有负载电流转换速率控制功能,可对浪涌负载的电流进行管理,并同时具备峰值电流限制功能。正常情况下,实际额定负载电流始终小于安全余量电流限制阈值。但是,在一些情况下,应用需要让更大的额定电流进入负载。这种情况会对用于控制应用浪涌电流的FET产生很大的应力(例如,一个10A额定电流下要求-48V的系统)。初始开启时,如果电流被限制为10A(最初可能为480W),则FET的VDS为48V
qwqwqw2088 模拟与混合信号
《深度学习与医学图像处理》3. 医学图像检测
1.基础理论《深度学习与医学图像处理》书中的第五章,讲述了的医学图像的分类。书中的医学图像分类是指使用深度学习对医学图像中的感兴趣区或者整个图像进行分类的过程。书中的基本概念重点介绍了:1.损失函数用于衡量模型预测结果与实际目标之间的差异或损失程度。损失函数通常是一个标量值,它越小表示模型的预测越接近真实值,反之越大表示预测偏离真实值较远。在训练模型时,优化目标通常是最小化损失函数,即找到使损失函数取得最小值的模型参数。常见的损失函数有: 均方误差(Mea
bzhou830 医疗电子
求一款板对板连接器的型号
这个是我上次拆的法雷奥激光雷达上的连接器拆解世界上第一款车规激光雷达,连接器是10*2pin大概0.8mm左右的引脚间距,我在网上找到很多类似的但是都不一样,这个特点是中间的引脚间隔比其它引脚都大一些。求一款板对板连接器的型号这个手机里面是不是用得比较多 应该是,类似摄像头,显示屏这类的。 它这个比较奇怪的地方是第一张图左边还有一个金属片连到左侧的PCB边缘。我感觉有可能是MOLEX的,在mouser上没找到,去molex官网产品页面还进不
littleshrimp 综合技术交流
【2024 DigiKey创意大赛】基于STM32MP157的智能垃圾桶
基于STM32MP157的智能垃圾桶一、作品简介作品照片;作品功能介绍;物料清单及简介,如使用的板卡、芯片、模块等;100-200字多功能智能垃圾桶,主要用了k210开发板来做识别和控制以及用stm32mp157来做传感器数据采集以及图像传输。主要功能如下垃圾分类识别+舵机控制语音控制垃圾桶开关检测垃圾桶的满溢程度摄像头读取图像信息并通过UDP传输至客户端使用视觉识别
zfw152666 DigiKey得捷技术专区
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved