嵌入式课程设计报告stm32文档格式.docx
- 文档编号:22603111
- 上传时间:2023-02-04
- 格式:DOCX
- 页数:66
- 大小:321.89KB
嵌入式课程设计报告stm32文档格式.docx
《嵌入式课程设计报告stm32文档格式.docx》由会员分享,可在线阅读,更多相关《嵌入式课程设计报告stm32文档格式.docx(66页珍藏版)》请在冰豆网上搜索。
1.6.2.8函数I2C_GenerateSTOP
1.6.2.9函数I2C_AcknowledgeConfig
1.6.2.10函数I2C_OwnAddress2Config
1.6.2.11函数I2C_DualAddressCmd
1.6.2.12函数I2C_GeneralCallCmd
1.6.2.13函数I2C_ITConfig
1.6.2.14函数I2C_SendData
1.6.2.15函数I2C_ReceiveData
1.6.2.16函数I2C_Send7bitAddress
1.6.2.17函数I2C_ReadRegister
1.6.2.18函数I2C_SoftwareResetCmd
1.6.2.19函数I2C_SMBusAlertConfig
1.6.2.20函数I2C_TransmitPEC
1.6.2.21函数I2C_PECPositionConfig
1.6.2.22函数I2C_CalculatePEC
1.6.2.23函数I2C_GetPEC
1.6.2.24函数I2C_ARPCmd
1.6.2.25函数I2C_StretchClockCmd
1.6.2.26函数I2C_FastModeDutyCycleConfig
1.6.2.27函数I2C_GetLastEvent
1.6.2.29函数I2C_GetFlagStatus
1.6.2.30函数I2C_ClearFlag
1.6.2.31函数I2C_GetITStatus
1.6.2.32函数I2C_ClearITPendingBi
12C接口
1.1介绍
I2C总线接口连接微控制器和串行I2C总线。
它提供多主机功能,控制所有I2C总线特定的时序、协议、仲裁和定时。
支持标准和快速两种模式,同时与SMBus2.0兼容。
I2C总线有多种用途,包括CRC码的生成和校验、SMBus(系统管理总线SystemManagementBus)、PMBus(电源管理总线PowerManagementBus)。
根据特定设备的需要,可以使用DMA以减轻CPU的负担。
1.2主要特点
●并行总线/I2C总线协议转换器
●多主机功能:
同一接口既可做主设备也可做从设备
●I2C主设备功能
−产生时钟
−产生起始和停止信号
●I2C从设备功能
−可编程的I2C地址检测
−可响应2个从地址的双地址能力
−停止位检测
●产生和检测7位/10位地址和广播呼叫
●支持不同的通讯速度
−标准速度(高至100kHz)
−快速(高至400kHz)
●状态标志:
−发送器/接收器模式标志
−字节发送结束标志
−I2C总线忙标志
●错误标志
−主模式时的仲裁丢失
−地址/数据传输后的应答(ACK)错误
−检测到起始和停止错位
−禁止拉长时钟功能后的上溢或下溢
●2个中断向量
−1个中断用于地址/数据通讯成功
−1个中断用于出错
●可选的拉长时钟功能
●具单字节缓冲器的DMA
●可配置的PEC(信息包错误检测)的产生或校验:
−发送模式中PEC值可以作为最后一个字节传输
−用于最后一个接收字节的PEC错误校验
●兼容SMBus2.0
−25ms时钟低超时延时
−10ms主设备累积时钟低扩展时间
−25ms从设备累积时钟低扩展时间
−带ACK控制的硬件PEC产生/校验
−支持地址分辨协议(ARP)
●兼容SMBus
注意不是所有产品中都包含上述所有特性。
请参考相关的数据手册,确认该产品支持的I2C功能。
1.3概述
I2C接口接收和发送数据,并将数据从串行转换成并行,或并行转换成串行。
可以开启或禁止中断。
接口通过数据引脚(SDA)和时钟引脚(SCL)连接到I2C总线。
允许连接到标准(高至100kHz)或快速(高至400kHz)I2C总线。
模式选择
接口可以下述4种模式中的一种运行:
●从发送器模式
●从接收器模式
●主发送器模式
●主接收器模式
默认模式为从模式。
接口在生成起始条件后自动从从模式切换到主模式;
当仲裁丢失或产生停止信号,则从主模式切换到从模式。
允许多主机功能。
通信流
主模式时,I2C接口启动数据传输并产生时钟信号。
串行数据传输总是以起始条件开始和停止条件结束。
主模式时,由软件控制产生起始条件和停止条件。
从模式时,I2C接口能识别它自己的地址(7位或10位)和广播呼叫地址。
软件控制开启或禁止广播呼叫地址的识别。
数据和地址按8位/字节进行传输,高位在前。
跟在起始条件后的第一、二个字节是地址(7位模式为1个字节,10位模式为2个字节)。
地址只在主模式发送。
在一个字节传输的8个时钟后的第9个时钟期间,接收器必须回送一个应答位
(ACK)给发送器。
参考下图。
图134I2C总线协议
软件可以开启或禁止应答(ACK),I2C接口的地址(7位、10位地址或广播呼叫地
址)可通过软件设置。
I2C接口的功能框图示于图135。
图135I2C的功能框图
注:
在SMBus模式下,SMBALERT是可选信号。
如果SMBus被禁止,则该信号不可使用。
1.4功能描述
默认情况下,I2C接口总是工作在从模式。
从默认的从模式切换到主模式,需要产生一个起始条件。
1.4.1I2C从模式
为了产生正确的时序,必须在I2C_CR2寄存器中设定外设输入时钟。
外设输入时钟的频率必须至少是:
●标准模式下为:
2MHz
●快速模式下为:
4MHz
一旦检测到起始条件,在SDA线上接收到的地址被送到移位寄存器。
然后与芯片自己的地址OAR1和OAR2(当ENDUAL=1)或者广播呼叫地址(如果ENGC=1)相比较。
在10-bit地址模式时,比较包括头段序列(11110xx0),其中的xx是地址的两个最高有效位。
头段或地址不匹配:
接口将其忽视并等待另一个起始条件。
头段匹配(仅10位模式):
如果ACK位被置1,接口产生一个应答脉冲并等待8位从地址。
地址匹配:
接口产生以下时序:
●如果ACK被置1,则产生一个应答脉冲
●硬件设置ADDR位,如果设置了ITEVFEN位,则产生一个中断
●如果ENDUAL=1,软件必须读DUALF位,以确认响应了哪个从地址。
在10位模式,接收到地址序列后,从设备总是处于接收器模式。
在收到与地址匹配的头序列并且最低位为1(即11110xx1)后,当接收到重复的起始条件时,将进入发送器模式。
TAR位在从模式下指示当前是处于接收器模式还是发送器模式。
从发送器
在接收到地址和清除ADDR位后,从发送器将字节从DR寄存器经由内部移位寄存器发送到SDA线上。
从设备保持SCL为低电平,直到ADDR位被清除并且待发送数据已写入DR寄存器。
(见图136中发送序列EV1EV3)。
当收到应答脉冲时:
●TxE位被硬件置位,如果设置了ITEVFEN和ITBUFEN位,则产生一个中
断。
如果TxE位被置位,但在上一次数据发送结束之前没有数据写入到DR寄存器,
则BTF位被置位,接口将保持SCL为低电平,以等待写入DR寄存器。
图136从发送器的传送序列图
说明:
S=Start(起始条件),Sr=重复的起始条件,P=Stop(停止条件),A=响应,NA=非响应,EVx=事
件(ITEVFEN=1时产生中断)
EV1:
ADDR=1,读SR1然后读SR2将清除该事件
EV3-1:
TxE=1,移位寄存器空
EV3:
TxE=1,读DR将清除该事件;
移位寄存器非空
EV3-2:
AF=1,在SR1寄存器的AF位写0可以清除AF位
从接收器
在接收到地址和清除ADDR后,从接收器将通过内部移位寄存器从SDA线接收
到的字节存进DR寄存器。
接口在接收到每个字节后都生成以下时序:
●如果设置了ACK位,则产生一个应答脉冲
●硬件置位RxNE。
如果设置了ITEVFEN和ITBUFEN位,则产生一个中
如果RxNE被置位,并且在接收新的数据结束之前DR寄存器未被读出,BTF位被
置位,接口保持SCL为低电平,等待读DR寄存器(见图137传送序列)。
图137从接收器的传送序列图
EV2:
RxNE=1,读DR将清除该事件
EV4:
STOPF=1,读SR1然后写CR1寄存器将清除该事件
关闭从通信
在最后一个数据字节被发送后,主设备产生一个停止条件。
接口检测到这一条件
时:
●STOPF位被置位,如果设置了ITEVFEN位,则产生一个中断,然后接口等待读SR1寄存器,然后写CR1寄存器。
(见图137传送时序EV4)。
1.4.2I2C主模式
在主模式时,I2C接口启动数据传输并产生时钟信号。
串行数据传输总是以起始条件开始和以停止条件结束。
当用START位在总线上产生了起始条件,设备就进入了主模式。
以下是主模式所要求的时序:
●在I2C_CR2寄存器中设定外设时钟以产生正确的时序
●配置时钟控制寄存器
●配置上升时间寄存器
●编程I2C_CR2寄存器启动外设
●置I2C_CR2寄存器中的START位为1,用于产生起始条件
外设输入时钟频率必须至少是:
起始条件
当BUSY位处于清除状态时对START位置位,使接口产生一个开始条件并切换到主模式(M/SL位置位)。
在主模式下,设置START位将在当前字节传输完后由硬件产生一个重开始条件。
一旦开始条件发出:
●SB位被硬件置位,如果设置了ITEVFEN位,则会产生一个中断。
然后主设备等待读SR1寄存器,紧跟着将从地址写入DR寄存器(见图138和图139传送时序EV5)。
从地址的发送
从地址通过内部移位寄存器被送到SDA线上。
●在10位地址模式时,发送一个头段序列产生以下事件:
−ADD10位被硬件置位,如果设置了ITEVFEN位,则产生一个中断。
−然后主设备等待一次读SR1寄存器,跟着将第二个地址字节写入DR寄存器(见图138和图139传送时序)。
−ADDR位被硬件置位,如果设置了ITEVFEN位,则产生一个中断。
−随后主设备等待一次读SR1寄存器,跟着读SR2寄存器(见图138和图139传送时序)。
●在7位地址模式时,将送出一个地址字节。
一旦该地址字节被送出,
随后主设备等待一次读SR1寄存器,跟着读SR2寄存器(见图138和图139传送时序)。
根据送出从地址的LSB位,主设备决定进入是发送器模式还是接收器模式。
●在7位地址模式时,
−要进入发送器模式,主设备发送从地址时让LSB等于0。
−要进入接收器模式,主设备发送从地址时让LSB等于1。
●在10位地址模式时
−要进入发送器模式,主设备先送头字节(11110xx0),然后送LSB位等于0的从地址。
(头段字节中的xx是10位地址中的最高2位。
)
−要进入接收器模式,主设备先送头字节(11110xx0),然后送LSB位等于0的从地址。
然后再重新发送一个开始条件,后面跟着头字节(11110xx1)。
(头字节中的xx是10位地址中的最高2位)。
TRA位指示主设备是在接收器模式还是发送器模式。
主发送器
在发送了地址和清除了ADDR位后,主设备通过内部移位寄存器将字节从DR寄存器发送到SDA线上。
主设备等到TxE被清除,(见图138传送时序EV8)。
●TxE位被硬件置位,如果设置了INEVFEN和ITBUFEN位,则产生一个中断。
如果TxE被置位并且在上一次数据发送结束之前没有写数据字节到DR,则BTF被置位,接口等待BTF被清除。
关闭通信
在DR寄存器中写入最后一个字节之后,通过将STOP位置位产生一个停止条件(见图138传送时序EV8_2)。
然后接口自动回到从模式(M/S位清除)。
当TxE或BTF位置位时,停止条件应安排在出现EV8_2事件时。
图138主发送器传送序列图
EV5:
SB=1,读SR1然后将地址写入DR寄存器将清除该事件
EV6:
EV8_1:
EV8:
TxE=1,写入DR寄存器将清除该事件
EV8_2:
TxE=1,BTF=1,产生停止条件时由硬件清除
EV9:
ADDR10=1,读SR1然后写入DR寄存器将清除该事件
主接收器
在发送地址和清除ADDR之后,I2C接口进入主接收器模式。
在此模式时,接口从SDA线接收数据字节,并通过内部移位寄存器将其送进DR寄存器。
在每个字节后,接口依次生成以下事件:
●如果ACK位被置位,发出一个应答脉冲。
●RxNE位被硬件置位,如果INEVFEN和ITBUFEN位被置起位,则会产生一个中断(见图139传输时序EV7)。
如果RxNE位被置位,并且在上一次数据接收之后DR寄存器中的数据没有被读走,硬件将置起BTF位,接口等待读DR寄存器。
主设备在从从设备接收到的最后一个字节后发送一个NACK。
从设备接收到NACK后,释放对SCL和SDA线的控制。
主设备就可以发送一个停止/重起始(Stop/Re-Start)条件。
●为了在收到最后一个字节后产生一个NACK脉冲,在读倒数第二个数据字节之后(在倒数第二个RxNE事件之后)必须清除ACK位。
●为了产生一个停止/重起始条件,软件必须在读倒数第二个数据字节之后(在倒数第二个RxNE事件之后)设置STOP/START位。
在产生了停止条件后,接口自动回到从模式(M/SL位被清除)。
图139主接收器传送序列图
ADDR=1,读SR1然后读SR2将清除该事件。
在10位主接受模式下,该事件后应设置CR2的
START=1。
EV7:
RxNE=1,读DR寄存器清除该事件
EV7_1:
RxNE=1,读DR寄存器清除该事件。
设置ACK=0和STOP请求
1.4.3错误条件
以下条件可能造成通讯失败。
总线错误(BERR)
在一个字节传输期间,当I2C接口检测到一个停止或起始条件则产生此错误。
此时:
●BERR位被置位,如果设置了ITERREN位,则产生一个中断;
●在从模式情况下,数据被丢弃,硬件释放总线:
−在错误的开始条件情况下,从设备认为是一个重启动,并等待地址和停止条件。
−在错误的停止条件情况下,从设备与正常停止表现得一样,同时硬件释放总线。
应答错误(AF)
当接口检测到一个无应答位时,产生此错误。
●AF位被置位,如果设置了ITERREN位,则产生一个中断;
●当发送器接收到一个NACK时,必须复位通讯。
−如果是处于从模式,硬件释放总线
−如果是处于主模式,必须用软件生成一个停止条件
仲裁丢失(ARLO)
当I2C接口检测到一个仲裁丢失时产生此错误,此时:
●ARLO位被硬件置位,如果设置了ITERREN位,则产生一个中断
●I2C接口自动回到从模式(M/SL位被清除)
●硬件释放总线
过载/欠载错误(OVR)
在从模式下,时钟延长被禁止同时I2C接口正在接收数据时,当接口已经接收到一个字节(RxNE=1),但在DR寄存器中上一个字节的数据还没有被读走,则可能发生过载错。
●上次接收的数据被丢弃
●在过载错时,软件应清除RxNE位,发送器应该重新发送上一次发送的字节。
在从模式下,时钟延长被禁止同时I2C接口正在发送数据时,在下一个字节的时钟到达之前,下一个字节的数据还未写入更新DR(TxE=1),则可能欠载错。
●在DR寄存器中的上一个字节将被重发
●用户应该确定在发生欠载错时,接收端应丢弃重复接收到的数据。
发送端应按I2C总线标准在规定的时间更新DR。
1.4.4SDA/SCL线控制
●如果允许时钟延长:
−发送器模式:
如果TxE=1且BTF=1:
接口在传输前保持时钟线路为低,以等待软件读取SR1,然后把字节写进数据寄存器(缓冲器和移位寄存器都是空的)。
−接收器模式:
如果RxNE=1且BTF=1:
接口在接收到数据字节后保持时钟线为低,以等待软件读SR1,然后读数据寄存器DR(缓冲器和移位寄存器都是满的)。
●如果在从模式中禁止时钟延长:
−如果RxNE=1,在接收下个字节前DR还没有被读走,则发生过载错。
接收到的最后一个字节丢失。
−如果TxE=1,在下个字节必须发送之前却没有字节写进DR,则发生欠载错。
相同的字节将被重发。
−无写冲突管理
1.4.5SMBus
介绍
系统管理总线(SMBus)是一个两线接口。
通过它,各设备之间以及设备与系统的其他部分之间可以互相通信。
它基于I2C操作原理。
SMBus为系统和电源管理相关的任务提供一条控制总线。
一个系统利用SMBus可以和多个设备互传信息,而不需使用独立的控制线路。
系统管理总线(SMBus)标准涉及三类设备。
从设备,接收或响应命令的设备。
主设备,用来发布命令,产生时钟和终止发送的设备。
主机,是一种专用的主设备,它提供与系统CPU的主接口。
主机必须具有主-从机功能,并且必须支持SMBus通报协议。
在一个系统里只允许有一个主机。
SMBus和I2C之间的相似点
●2条线的总线协议(1个时钟,1个数据)+可选的SMBus提醒线
●主-从通信,主设备提供时钟
●多主机功能
●SMBus数据格式类似于I2C的7位地址格式(见图133)
SMBus和I2C之间的不同点
下表为SMBus和I2C的不同点。
SMBus
2
IC
最大传输速度100kHz
最大传输速度400kHz
最小传输速度10kHz
无最小传输速度
35ms时钟低超时
无时钟超时
固定的逻辑电平
逻辑电平由VDD决定
不同的地址类型(保留、动态等)
7位、10位和广播呼叫从地址类型
不同的总线协议(快速命令、处理呼叫等)
无总线协议
SMBus应用用途
利用系统管理总线,设备可提供制造商信息,告诉系统它的型号/部件号,保存暂停事件的状态,报告不同类型的错误,接收控制参数,和返回它的状态。
SMBus为系统和电源管理相关的任务提供控制总线。
设备标识
在系统管理总线上,任何一个作为从模式的设备都有一个唯一的地址,叫做从地址。
保留的从地址表请参考2.0版的SMBus规范(http:
//smbus.org/specs/)。
总线协议
SMBus技术规范支持9个总线协议。
有关这些协议的详细资料和SMBus地址类型,请参考2.0版的SMBus规范(http:
这些协议由用户的软件来执行。
地址解析协议(ARP)
SMBus从地址冲突可以通过给每个从设备动态分配一个新的唯一地址来解决。
ARP有以下的属性:
●地址分配利用标准SMBus物理层仲裁机制
●当设备维持供电期间,分配的地址仍保持不变,允许设备在断电时保留其地址。
●在地址分配后,没有额外的SMBus的打包开销(也就是说访问分配地址的设备与访问固定地址的设备所用时间是一样的)。
●任何一个SMBus主设备可以遍历总线。
唯一的设备标识符(UDID)
为了提供一种为进行地址分配目的而区分每个设备的机制,每个设备必须拥有一
个唯一的设备标识符。
关于在ARP上128位的UDID细节的信息,参考2.0版的SMBus规范(http:
SMBus提醒模式
SMBus提醒是一个带中断线的可选信号,用于那些希望扩展他们的控制能力而牺牲一个引脚的设备。
SMBALERT和SCL和SDA信号一样,是一种线与信号。
SMBALERT通常和SMBus广播呼叫地址一起使用。
与SMBus有关的消息为2字节。
单一的从设备可以通过SMBALERT发信号给主机表示它希望进行通信,这可通过设置I2C_CR1寄存器上的ALERT位实现。
主机处理该中断并通过提醒响应地址ARA(AlertResponseAddress,地址值为x)访问所有SMBALERT设备。
只有那些将MBALERT
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 嵌入式 课程设计 报告 stm32