历史上的今天
返回首页

历史上的今天

今天是:2025年08月09日(星期六)

2019年08月09日 | STM32寄存器列表 I2C相关寄存器

2019-08-09 来源:eefocus

I2C_CR1(控制寄存器1)

15位:SWRST软件复位,当被置位时,I2C处于复位状态,在复位该位前确信I2C的引脚被释放,总线是空的,定义:0(I2C模块不处于复位状态),1(I2C模块处于复位状态)

     注:该位可以用于BUSY位为’1’,在总线上又没有检测到停止条件时。

13位:ALERT-SMBus提醒,软件可以设置或清除该位;当PE=0时,由硬件清除。定义:

     0(释放SMBAlert引脚使其变高。提醒响应地址头紧跟在NACK信号后面),1(驱动SMBAlert引脚使其变低。提醒响应地址头紧跟在ACK信号后面)

12位:PEC数据包出错检测,软件可以设置或清除该位;当传送PEC后,或起始或停止条件时,或当PE=0时硬件将其清除。定义:

     0(无PEC传输)1(PEC传输(在发送或接收模式)。注:仲裁丢失时,PEC的计算失效。

11位:POS应答/PEC位置(用于数据接收),软件可以设置或清除该位,或当PE=0时,由硬件清除.定义:

     0:ACK位控制当前移位寄存器内正在接收的字节的(N)ACK。 PEC位表明当前移位寄存器内的字节是PEC;

     1: ACK位控制在移位寄存器里接收的下一个字节的(N)ACK。PEC位表明在移位寄存器里接收的下一个字节是PEC。

     注:POS位只能用在2字节的接收配置中,必须在接收数据之前配置。为了NACK第2个字节,必须在清除ADDR为之后清除ACK位。

         为了检测第2个字节的PEC,必须在配置了POS位之后,拉伸ADDR事件时设置PEC位。

10位:ACK应答使能,软件可以设置或清除该位,或当PE=0时,由硬件清除。定义:0(无应答返回),1(在接收到一个字节后返回一个应答(匹配的地址或数据)

9位:STOP停止条件产生,软件可以设置或清除该位;或当检测到停止条件时,由硬件清除;当检测到超时错误时,硬件将其置位,

    在主模式下定义:0(不产生停止条件),1(在当前字节传输或在当前起始条件发出后产生停止条件)

    在从模式下定义:0(不产生停止条件),1(在当前字节传输或释放SCL和SDA线)

    注:当设置了STOP、START或PEC位,在硬件清除这个位之前,软件不要执行任何对I2C_CR1的写操作;否则有可能会第2次设置STOP、START或PEC位。

8位:START起始条件产生,软件可以设置或清除该位,或当起始条件发出后或PE=0时,由硬件清除。

    在主模式下:0(无起始条件产生),1(重复产生起始条件)在从模式下:0(无起始条件产生),1(当总线空闲时,产生起始条件)

7位:NOSTRETCH禁止时钟延长(从模式),该位用于当ADDR或BTF标志被置位,在从模式下禁止时钟延长,直到它被软件复位。定义:0(允许时钟延长),1(禁止时钟延长)

6位:ENGC广播呼叫使能,定义:0(禁止广播呼叫。以非应答响应地址00h),1(允许广播呼叫. 以应答响应地址00h)

5位:ENPEC-PEC使能,定义:0(禁止PEC计算),1(开启PEC计算)

4位:ENARP-ARP使能,定义:0(禁止ARP),1(使能ARP),如果SMBTYPE=0,使用SMBus设备的默认地址。如果SMBTYPE=1,使用SMBus的主地址。

3位:SMBTYPE-SMBus类型,定义:0(SMBus设备),1(SMBus主机)

1位:SMBUS-SMBus模式,定义:0(I2C模式),1(SMBus模式)

0位:PE-I2C模块使能,定义:0(禁用I2C模块),1(启用I2C模块:根据SMBus位的设置,相应的I/O口需配置为复用功能)

    注:如果清除该位时通讯正在进行,在当前通讯结束后,I2C模块被禁用并返回空闲状态。由于在通讯结束后发生PE=0,所有的位被清除。

        在主模式下,通讯结束之前,绝不能清除该位。

 

 

I2C_CR2(控制寄存器2)

12位:LAST-DMA最后一次传输,定义:0(下一次DMA的EOT不是最后的传输),1(下一次DMA的EOT是最后的传输),注:该位在主接收模式使用,

     使得在最后一次接收数据时可以产生一个NACK。

11位:DMAEN-DMA请求使能,定义:0(禁止DMA请求),1(当TxE=1或RxNE =1时,允许DMA请求)

10位:ITBUFEN缓冲器中断使能,定义:0(当TxE=1或RxNE=1时,不产生任何中断),1(当TxE=1或RxNE=1时,产生事件中断(不管DMAEN是何种状态)

9位:ITEVTEN事件中断使能,定义:0(禁止事件中断),1(允许事件中断),在下列条件下,将产生该中断– SB = 1 (主模式);– ADDR = 1 (主/从模式);

    –ADD10=1(主模式);–STOPF=1(从模式);–BTF=1,但是没有TxE或RxNE事件;– 如果ITBUFEN = 1,TxE事件为1;– 如果ITBUFEN = 1,RxNE事件为1。

8位:ITERREN出错中断使能,定义:0(禁止出错中断),1(允许出错中断)在下列条件下,将产生该中断:BERR=1;ARLO=1;AF=1;OVR=1;PECERR=1;TIMEOUT=1;SMBAlert=1

5-0位:FREQ[5:0]I2C模块时钟频率,必须设置正确的输入时钟频率以产生正确的时序,允许的范围在2~36MHz之间,定义:000000(禁用)000001(禁用)

      000010(2M),000011(3M),100100(36MHz),大于100100(禁用)

 

 

I2C_OAR1(自身地址寄存器1)

15位:ADDMODE寻址模式(从模式),定义:0(7位从地址(不响应10位地址),1(10位从地址(不响应7位地址)

14位:必须始终由软件保持为’1’。

9-8位:ADD[9:8]接口地址,7位地址模式时不用关心,10位地址模式时为地址的9~8位。

7-1位:ADD[7:1]接口地址,地址的7~1位

0位:ADD0接口地址,7位地址模式时不用关心。10位地址模式时为地址第0位。

 

 

自身地址寄存器2(I2C_OAR2)

7-1位:ADD2[7:1]接口地址,在双地址模式下地址的7~1位

0位:ENDUAL双地址模式使能位,定义:0(在7位地址模式下,只有OAR1被识别),1(在7位地址模式下,OAR1和OAR2都被识别)

 

 

I2C_DR(数据寄存器)

7-0位:DR[7:0]8位数据寄存器,用于存放接收到的数据或放置用于发送到总线的数据。发送器模式:当写一个字节至DR寄存器时,自动启动数据传输。一旦传输开始(TxE=1),

      如果能及时把下一个需传输的数据写入DR寄存器,I2C模块将保持连续的数据流。

      接收器模式:接收到的字节被拷贝到DR寄存器(RxNE=1)。在接收到下一个字节(RxNE=1)之前读出数据寄存器,即可实现连续的数据传送。

      注:在从模式下,地址不会被拷贝进数据寄存器DR;注:硬件不管理写冲突(如果TxE=0,仍能写入数据寄存器);

      注:如果在处理ACK脉冲时发生ARLO事件,接收到的字节不会被拷贝到数据寄存器里,因此不能读到它。

 

 

I2C_SR1(状态寄存器1)

15位:SMBALERT-SMBus提醒,在SMBus主机模式下:0(无SMBus提醒)1(在引脚上产生SMBAlert提醒事件)在SMBus从机模式下:0(没有SMBAlert响应地址头序列)

     1(收到SMBAlert响应地址头序列至SMBAlert变低)该位由软件写’0’清除,或在PE=0时由硬件清除。

14位:TIMEOUT超时或Tlow错误,定义:0(无超时错误),1(SCL处于低已达到25ms(超时);或者主机低电平累积时钟扩展时间超过10ms(Tlow:mext);或从设备

     低电平累积时钟扩展时间超过25ms(Tlow:sext))– 当在从模式下设置该位:从设备复位通讯,硬件释放总线。

     – 当在主模式下设置该位:硬件发出停止条件。– 该位由软件写’0’清除,或在PE=0时由硬件清除。

12位:PECERR在接收时发生PEC错误,定义:0(无PEC错误:接收到PEC后接收器返回ACK(如果ACK=1),1(有PEC错误:接收到PEC后接收器返回NACK(不管ACK是什么值)

     – 该位由软件写’0’清除,或在PE=0时由硬件清除。

11位:OVR过载/欠载,定义:0(无过载/欠载),1(出现过载/欠载)– 当NOSTRETCH=1时,在从模式下该位被硬件置位,同时:

     – 在接收模式中当收到一个新的字节时(包括ACK应答脉冲),数据寄存器里的内容还未被读出,则新接收的字节将丢失。

     – 在发送模式中当要发送一个新的字节时,却没有新的数据写入数据寄存器,同样的字节将被发送两次。– 该位由软件写’0’清除,或在PE=0时由硬件清除

     注:如果数据寄存器的写操作发生时间非常接近SCL的上升沿,发送的数据是不确定的,并发生保持时间错误

10位:AF应答失败,定义:0(没有应答失败),1(应答失败)– 当没有返回应答时,硬件将置该位为’1’。– 该位由软件写’0’清除,或在PE=0时由硬件清除。

9位:ARLO仲裁丢失(主模式),定义:0(没有检测到仲裁丢失),1(检测到仲裁丢失)当接口失去对总线的控制给另一个主机时,硬件将将置该位为’1’。

    – 该位由软件写’0’清除,或在PE=0时由硬件清除。在ARLO事件之后,I2C接口自动切换回从模式(M/SL=0)。

    注:在SMBUS模式下,在从模式下对数据的仲裁仅仅发生在数据阶段,或应答传输区间(不包括地址的应答)。

8位:BERR总线出错,定义:0(无起始或停止条件出错),1(起始或停止条件出错)– 当接口检测到错误的起始或停止条件,硬件将该位置’1’。

    – 该位由软件写’0’清除,或在PE=0时由硬件清除。

7位:TxE数据寄存器为空(发送时),定义:0(数据寄存器非空),1(数据寄存器空)-在发送数据时,数据寄存器为空时该位被置’1’,在发送地址阶段不设置该位。

    – 软件写数据到DR寄存器可清除该位;或在发生一个起始或停止条件后,或当PE=0时由硬件自动清除.如果收到一个NACK,或下一个要发送的字节是PEC(PEC=1),

       该位不被置位。注:在写入第1个要发送的数据后,或设置了BTF时写入数据,都不能清除TxE位,这是因为数据寄存器仍然为空。

6位:RxNE数据寄存器非空(接收时),定义:0(数据寄存器为空),1(数据寄存器非空),– 在接收时,当数据寄存器不为空,该位被置’1’。

    在接收地址阶段,该位不被置位。– 软件对数据寄存器的读写操作清除该位,或当PE=0时由硬件清除。在发生ARLO事件时,RxNE不被置位。

    注:当设置了BTF时,读取数据不能清除RxNE位,因为数据寄存器仍然为满。

4位:STOPF停止条件检测位(从模式),定义:0(没有检测到停止条件),1(检测到停止条件)– 在一个应答之后(如果ACK=1),当从设备在总线上检测到停止条件时,

    硬件将该位置’1’。– 软件读取SR1寄存器后,对CR1寄存器的写操作将清除该位,或当PE=0时,硬件清除该位。注:在收到NACK后,STOPF位不被置位。

3位:ADD10-10位头序列已发送(主模式),定义:0(没有ADD10事件发生),1(主设备已经将第一个地址字节发送出去)– 在10位地址模式下,当主设备

    已经将第一个字节发送出去时,硬件将该位置’1’。– 软件读取SR1寄存器后,对CR1寄存器的写操作将清除该位,或当PE=0时,硬件清除该位。

    注:收到一个NACK后,ADD10位不被置位。

2位:BTF字节发送结束,定义:0(字节发送未完成),1(字节发送结束)当NOSTRETCH=0时,在下列情况下硬件将该位置’1’:

    –在接收时,当收到一个新字节(包括ACK脉冲)且数据寄存器还未被读取(RxNE=1)。在发送时,当一个新数据将被发送且数据寄存器还未被写入新的数据(TxE=1)。

    – 在软件读取SR1寄存器后,对数据寄存器的读或写操作将清除该位;或在传输中发送一个起始或停止条件后,或当PE=0时,由硬件清除该位。

    注:在收到一个NACK后,BTF位不会被置位。如果下一个要传输的字节是PEC(I2C_SR2寄存器中TRA为1,同时I2C_CR1寄存器中PEC为’1’),BTF位不会被置位。

1位:ADDR地址已被发送(主模式)/地址匹配(从模式),在软件读取SR1寄存器后,对SR2寄存器的读操作将清除该位,或当PE=0时,由硬件清除该位。

    地址匹配(从模式)0:地址不匹配或没有收到地址;1:收到的地址匹配。– 当收到的从地址与OAR寄存器中的内容相匹配、或发生广播呼叫、或SMBus设备

    默认地址或SMBus主机识别出SMBus提醒时,硬件就将该位置’1’(当对应的设置被使能时)。

    地址已被发送(主模式)0:地址发送没有结束;1:地址发送结束。– 10位地址模式时,当收到地址的第二个字节的ACK后该位被置’1’。

    – 7位地址模式时,当收到地址的ACK后该位被置’1’。注:在收到NACK后,ADDR位不会被置位。

0位:SB起始位(主模式),定义:0(未发送起始条件)1(起始条件已发送)– 当发送出起始条件时该位被置’1’。

    – 软件读取SR1寄存器后,写数据寄存器的操作将清除该位,或当PE=0时,硬件清除该位。

 

 

I2C_SR2 (状态寄存器2)

15-8位:PEC[7:0]数据包出错检测,当ENPEC=1时,PEC[7:0]存放内部的PEC的值

7位:DUALF双标志(从模式),定义:0(接收到的地址与OAR1内的内容相匹配)1(接收到的地址与OAR2内的内容相匹配)

    – 在产生一个停止条件或一个重复的起始条件时,或PE=0时,硬件将该位清除。

6位:SMBHOST-SMBus主机头系列(从模式),定义:0(未收到SMBus主机的地址),1(当SMBTYPE=1且ENARP=1时,收到SMBus主机地址)

    – 在产生一个停止条件或一个重复的起始条件时,或PE=0时,硬件将该位清除。

5位:SMBDEFAULT-SMBus设备默认地址(从模式),定义:0(未收到SMBus设备的默认地址)1(当ENARP=1时,收到SMBus设备的默认地址)

    – 在产生一个停止条件或一个重复的起始条件时,或PE=0时,硬件将该位清除。

4位:GENCALL广播呼叫地址(从模式),定义:0(未收到广播呼叫地址)1(当ENGC=1时,收到广播呼叫的地址)

    – 在产生一个停止条件或一个重复的起始条件时,或PE=0时,硬件将该位清除。

2位:TRA发送/接收,定义:0(接收到数据)1(数据已发送)在整个地址传输阶段的结尾,该位根据地址字节的R/W位来设定。

    在检测到停止条件(STOPF=1)、重复的起始条件或总线仲裁丢失(ARLO=1)后,或当PE=0时,硬件将其清除。

1位:BUSY总线忙,定义:0(在总线上无数据通讯)1(在总线上正在进行数据通讯)– 在检测到SDA或SCl为低电平时,硬件将该位置’1’;

    – 当检测到一个停止条件时,硬件将该位清除。该位指示当前正在进行的总线通讯,当接口被禁用(PE=0)时该信息仍然被更新。

0位:MSL主从模式,定义:0(从模式)1(主模式)– 当接口处于主模式(SB=1)时,硬件将该位置位;

    – 当总线上检测到一个停止条件、仲裁丢失(ARLO=1时)、或当PE=0时,硬件清除该位。

 

 

I2C_CCR(时钟控制寄存器)

15位:F/S-I2C主模式选项,定义:0(标准模式的I2C)1(快速模式的I2C)

14位:DUTY快速模式时的占空比,定义:0(快速模式下:Tlow/Thigh = 2)1(快速模式下:Tlow/Thigh = 16/9(见CCR)

11-0位:CCR[11:0]快速/标准模式下的时钟控制分频系数(主模式)该分频系数用于设置主模式下的SCL时钟。

       在I2C标准模式或SMBus模式下: Thigh = CCR ×TPCLK1;Tlow = CCR ×TPCLK1;

       在I2C快速模式下:如果DUTY = 0:Thigh = CCR ×TPCLK1;Tlow = 2 × CCR × TPCLK1

       如果DUTY = 1: (速度达到400kHz);Thigh = 9 × CCR ×TPCLK1;Tlow = 16 × CCR ×TPCLK1

 

 

I2C_TRISE(TRISE寄存器)

5-0位:TRISE[5:0]在快速/标准模式下的最大上升时间(主模式),这些位必须设置为I2C总线规范里给出的最大的SCL上升时间,增长步幅为1。

      注:只有当I2C被禁用(PE=0)时,才能设置TRISE[5:0]。见P514页


推荐阅读

史海拾趣

Cincon公司的发展小趣事

进入21世纪,Cincon对质量与环保的重视日益凸显。2001年和2002年,公司的台湾工厂分别获得了ISO 9001和ISO 14001认证,这标志着公司在质量管理和环境保护方面达到了国际标准。随后,Cincon中国工厂也于2009年获得了ISO 14001认证,进一步证明了公司对环保责任的承诺。

Electrolube公司的发展小趣事

在电子行业的激烈竞争中,Electrolube公司始终坚持以客户需求为导向,不断创新和拓展产品线。除了UVCL涂层外,公司还推出了一系列树脂、涂料和热管理解决方案的产品组合,为EV电池提供全面保护。

这些产品不仅具有优异的性能表现,而且能够满足不同客户的需求。例如,某些产品具有优异的耐高温性能,适用于高温环境下的电子设备;而另一些产品则具有出色的耐化学腐蚀性能,能够在恶劣的工作环境中保持稳定的性能。

Electrolube公司通过不断的技术创新和产品优化,成功拓展了市场份额,并在电子行业中树立了良好的品牌形象。同时,公司还积极与各大汽车制造商合作,共同推动电动汽车产业的发展。

AverLogic公司的发展小趣事

AverLogic公司深知人才是企业发展的核心竞争力。因此,公司一直致力于人才培养和团队建设。通过定期的培训和学习,公司不断提升员工的技能和素质,打造了一支高效、专业的团队。这支团队在产品研发、市场拓展等方面都发挥了重要作用,为公司的持续发展提供了有力的保障。

Gravitech公司的发展小趣事

随着产品的成功推出,AverLogic公司开始积极拓展市场,寻求与国际知名电子品牌的合作。通过与这些品牌的深度合作,公司不仅将产品推向了更广阔的市场,还从合作伙伴那里获得了宝贵的市场反馈和技术支持。这些合作不仅提升了AverLogic的品牌影响力,也为其后续的产品研发和市场布局提供了有力的支持。

Henkel公司的发展小趣事

AverLogic公司在电子行业中以其技术创新和产品突破而崭露头角。在早期的发展阶段,公司专注于研发高质量的视频处理芯片,以满足市场对于更高清晰度和更流畅视频播放的需求。经过多次实验和迭代,公司成功推出了一款具有革命性的转换器产品——AL110,这款产品能够将PC和Macintosh的VGA信号转换为高品质的NTSC或PAL信号,从而极大地提升了视频信号的处理效率和输出品质。这一创新不仅为公司赢得了市场的认可,也为公司在电子行业中奠定了坚实的基础。

Elekon Industries公司的发展小趣事

Elekon Industries公司,简称Elekon,于XXXX年在某科技园区正式成立。公司由一群富有远见和热情的电子工程师创立,他们共同看到了电子行业的巨大潜力和广阔市场。初创阶段,Elekon主要致力于研发和生产高品质的电子元器件,为电子设备制造商提供可靠的产品。通过不断努力,Elekon凭借优秀的产品质量和卓越的创新能力,逐渐在电子行业中崭露头角。

问答坊 | AI 解惑

求个DSP BUILDER的安装包

哪位大侠有。麻烦发我邮箱landover08@126.com    感激不尽…

查看全部问答>

開關電源基本原理与設計介紹

幻灯片 2[size=178%][size=60%]n …

查看全部问答>

64 ML ROM CHECK ERROR!

万欣保护卡启动出现64 ML ROM CHECK ERROR!,请问各位前辈什么原因?如何解决?…

查看全部问答>

想学linux嵌入式开发,请各位前辈给出中肯的建议,谢谢各位

我想学嵌入式linux开发,有c和汇编基础,大学没能顺利毕业, 现在的想法是抱一个培训班,不知道培训的效果会不会比自学好很多, 没有大学学历,找工作会不会希望特别渺茫,   上海尚观培训怎么样呢 ?    然后请过来人推荐一个 ...…

查看全部问答>

今日插件-窗口的创建和刷新

我写了个今日插件,用CWnd::Create创建的窗体,回调函数用AfxWndProc 在wm5下好用,换到wm6下有问题,有些机器上Create失败,有些机器上虽然成功了 窗体被覆盖后收不到WM_PAINT消息,谁遇到过类似问题吗;后来也改用APIC创建窗体, 但是还要在上 ...…

查看全部问答>

两个程序相互切的时候怎么会有白屏?

两个程序相互切的时候怎么会有白屏? 程序1: 我是用 CreateWindowEx(WS_EX_TOPMOST, szWindowClass, szTitle, WS_POPUP | WS_WYWMENU,                        &nb ...…

查看全部问答>

硅光电池

我想过能硅光电池对火焰进行检测,,也就是想用硅光电池将火焰的光信号转换成电信号 可是我现在的问题是对硅光电池的选型?我应该选择什么型号的硅光电池》? 还有硅光电池怎么连接AD转换器呀???…

查看全部问答>

wince6.0 mp3解码问题。

我现在遇到两首mp3,在pc上看到属性为mp3, 立体声,16bit,44.1k 我在系统中加了mp3 cedec,MPEG-1 Layer 1 and 2 Audio Codec,但就是播放不了。 从驱动的private_WaveOpen中发现lpFormat->wFormatTag=80,正常应该是1即WAVE_FORMAT_PCM,只支持PC ...…

查看全部问答>

Protues软件该怎么用!

在Protues仿真软件画C51单片机时,如何把P0.0到P0.7这8个脚简化成一条公共线既A[0...7]这种.用什么图标来画!…

查看全部问答>

求助 UCOS移植到ARM9上的中断处理问题

我最近在学习将UC0S移植到S3C2410上,是ARM9,在网上下的别人的移植的代码,自己稍加修改,可以跑多个任务,我想,既然是操作系统移植到ARM板上,就可以管理外部硬件资源了,之前我在裸板上有个按键控制LED亮灭的程序,我想添加个任务,用UCOS来管 ...…

查看全部问答>