第十四讲:同步串行通信接口
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1-11
联系方式:http://www.rzchina.net
I2C主要功能
• • • • I2C从模式工作原理 I2C主模式工作原理 SMBus功能 I2C的DMA功能
– DMA发送 – DMA接收
北京源智天下科技有限公司
1-12
联系方式:http://www.rzchina.net
I2C的中断请求
北京源智天下科技有限公司
1-4
联系方式:http://www.rzchina.net
SPI主模式工作原理
• 配置SPI主模式的步骤如下:
– – – – – 设置SPI_CR1寄存器的BR[2:0]位,来定义串行时钟波特率。 选择CPOL和CPHA位,定义数据传输和串行时钟间的相位关系。 设置DFF位来定义8或16位数据帧格式。 配置SPI_CR1寄存器的LSBFIRST位定义帧格式。 如果NSS引脚需要工作在输入模式,硬件模式中在整个数据帧传输期间 应把NSS引脚连接到高电平;在软件模式中,需设置SPI_CR1寄存器的 SSM和SSI位。如果NSS引脚工作在输出模式,则只需设置SSOE位。 – 设置MSTR和SPE位,只当NSS引脚被连到高电平,这些位才能保持置 位。
北京源智天下科技有限公司
1-8
联系方式:http://www.rzchina.net
SPI的编程方法
• 库函数: – SPI_DeInit函数 – SPI_Init函数 – SPI_StructInit函数 – SPI_Cmd函数 – SPI_ITConfig函数 – SPI_DMACmd函数 – SPI_SendData函数 – SPI_ReceiveData函数 – SPI_NSSInternalSoftwareConfig函数 – SPI_SSOutputCmd函数
I2C的编程方法
• 库函数: – I2C_DeInit函数 – I2C_Init函数 – I2C_StructInit函数 – I2C_Cmd函数 – I2C_DMACmd函数 – I2C_DMALastTransferCmd函数 – I2C_GenerateSTART函数 – I2C_GenerateSTOP函数 – I2C_AcknowledgeConfig函数 – I2C_OwnAddress2Config函数 – I2C_DualAddressCmd函数 – I2C_GeneralCallCmd函数 – I2C_ITConfig函数 – I2C_SendData函数 – I2C_ReceiveData函数 – I2C_Send7bitAddress函数
北京源智天下科技有限公司
联系方式:http://www.rzchina.net
I2C的编程方法 (续)
• 库函数:
– – – – – – – – – – – – – – – – I2C_ReadRegister函数 I2C_SoftwareResetCmd函数 I2C_SMBusAlertConfig函数 I2C_TransmitPEC函数 I2C_PECPositionConfig函数 I2C_CalculatePEC函数 I2C_GetPEC函数 I2C_ARPCmd函数 I2C_StretchClockCmd函数 I2C_FastModeDutyCycleConfig函数。 I2C_GetLastEvent函数 I2C_CheckEvent函数 I2C_GetFlagStatus函数。 I2C_ClearFlag函数 I2C_GetITStatus函数 I2C_ClearITPendingBit函数 北京源智天下科技有限公司
– – – – MISO引脚 MOSI引脚 SCK引脚 NSS引脚
北京源智天下科技有限公司
1-3
联系方式:http://www.rzchina.net
SPI从模式工作原理
• 配置SPI从模式的步骤如下:
– 设置DFF位以定义数据帧格式为8位或16位。 – 定义数据传输和串行时钟之间的相位关系。 – 帧格式必须和主设备相同,MSB在前还是LSB在前取决于SPI_CR1 寄存器中的LSBFIRST位。 – 硬件模式下,在完整的数据帧(8位或16位)发送过程中,NSS引脚必 须为低电平。软件模式下,设置SPI_CR1寄存器中的SSM位并清除 SSI位。 – 清除MSTR位,设置SPE位,使相应引脚工作于SPI模式下。
1-7
联系方式:http://www.rzchina.net
SPI寄存器结构
typedef struct { vu16 CR1; // SPI控制寄存器1 u16 RESERVED0; vu16 CR2; // SPI控制寄存器2 u16 RESERVED1; vu16 SR; //SPI状态寄存器 u16 RESERVED2; vu16 DR; //SPI数据寄存器 u16 RESERVED3; vu16 CRCPR; //SPI CRC多项式寄存器 u16 RESERVED4; vu16 RXCRCR; //SPI接收CRC寄存器 u16 RESERVED5; vu16 TXCRCR; //SPI发送CRC寄存器 u16 RESERVED6; } SPI_TypeDef;
联系方式:http://www.rzchina.net
性格决定命运, 专注成就人生
www.rzchina.net 源智天下
北京源智天下科技有限公司
联系方式:http://www.rzchina.net
北京源智天下科技有限公司
1-13
联系方式:http://www.rzchina.net
I2C寄存器结构
typedef struct { vu16 CR1; u16 RESERVED0; vu16 CR2; u16 RESERVED1; vu16 OAR1; u16 RESERVED2; vu16 OAR2; u16 RESERVED3; vu16 DR; u16 RESERVED4; vu16 SR1; u16 RESERVED5; vu16 SR2; u16 RESERVED6; vu16 CCR; u16 RESERVED7; vu16 TRISE; u16 RESERVED8; } I2C_TypeDef;
21天学嵌入式开发
第十四讲:同步串行通信接口
北京源智天下科技有限公司
联系方式:http://www.rzchina.net
课程安排
• • • • SPI结构 SPI编程方法 I2C结构 I2C编程方法
北京源智天下科技有限公司
1-2
联系方式:http://www.rzchina.net
SPI结构
• STM32的SPI接口通过如下引脚和外部设备相连:
北京源智天下科技有限公司
1-9
联系方式:http://www.rzchina.net
SPI的编程方法 (续)
• 库函数: – SPI_DataSizeConfig函数 – SPI_TransmitCRC函数 – SPI_CalculateCRC函数 – SPI_GetCRC函数 – SPI_GetCRCPolynomial函数 – SPI_BiDirectionalLineConfig函数 – SPI_GetFlagStatus函数 – SPI_ClearFlag函数 – SPI_GetITStatus函数 – SPI_ClearITPendingBit函数
北京源智天下科技有限公司
1-10
联系方式:http://wwenku.baidu.comw.rzchina.net
I2C结构
• STM32内部集成了串行外设接口I2C • I2C的主要特点 • STM32的I2C接口具有如下4种工作模式:
– – – – 从发送器模式 从接收器模式 主发送器模式 主接收器模式
北京源智天下科技有限公司
//I2C控制寄存器1 //I2C控制寄存器2 //I2C自身地址寄存器1 //I2C自身地址寄存器2 //I2C数据寄存器 //I2C状态寄存器1 //I2C状态寄存器2 //I2C时钟控制寄存器 //I2C上升时间寄存器
北京源智天下科技有限公司
联系方式:http://www.rzchina.net
北京源智天下科技有限公司
1-5
联系方式:http://www.rzchina.net
SPI高级功能
• SPI通信的CRC • SPI的DMA通信
– 全双工模式 – 单工模式
北京源智天下科技有限公司
1-6
联系方式:http://www.rzchina.net
SPI的中断请求
北京源智天下科技有限公司
联系方式:http://www.rzchina.net
I2C主要功能
• • • • I2C从模式工作原理 I2C主模式工作原理 SMBus功能 I2C的DMA功能
– DMA发送 – DMA接收
北京源智天下科技有限公司
1-12
联系方式:http://www.rzchina.net
I2C的中断请求
北京源智天下科技有限公司
1-4
联系方式:http://www.rzchina.net
SPI主模式工作原理
• 配置SPI主模式的步骤如下:
– – – – – 设置SPI_CR1寄存器的BR[2:0]位,来定义串行时钟波特率。 选择CPOL和CPHA位,定义数据传输和串行时钟间的相位关系。 设置DFF位来定义8或16位数据帧格式。 配置SPI_CR1寄存器的LSBFIRST位定义帧格式。 如果NSS引脚需要工作在输入模式,硬件模式中在整个数据帧传输期间 应把NSS引脚连接到高电平;在软件模式中,需设置SPI_CR1寄存器的 SSM和SSI位。如果NSS引脚工作在输出模式,则只需设置SSOE位。 – 设置MSTR和SPE位,只当NSS引脚被连到高电平,这些位才能保持置 位。
北京源智天下科技有限公司
1-8
联系方式:http://www.rzchina.net
SPI的编程方法
• 库函数: – SPI_DeInit函数 – SPI_Init函数 – SPI_StructInit函数 – SPI_Cmd函数 – SPI_ITConfig函数 – SPI_DMACmd函数 – SPI_SendData函数 – SPI_ReceiveData函数 – SPI_NSSInternalSoftwareConfig函数 – SPI_SSOutputCmd函数
I2C的编程方法
• 库函数: – I2C_DeInit函数 – I2C_Init函数 – I2C_StructInit函数 – I2C_Cmd函数 – I2C_DMACmd函数 – I2C_DMALastTransferCmd函数 – I2C_GenerateSTART函数 – I2C_GenerateSTOP函数 – I2C_AcknowledgeConfig函数 – I2C_OwnAddress2Config函数 – I2C_DualAddressCmd函数 – I2C_GeneralCallCmd函数 – I2C_ITConfig函数 – I2C_SendData函数 – I2C_ReceiveData函数 – I2C_Send7bitAddress函数
北京源智天下科技有限公司
联系方式:http://www.rzchina.net
I2C的编程方法 (续)
• 库函数:
– – – – – – – – – – – – – – – – I2C_ReadRegister函数 I2C_SoftwareResetCmd函数 I2C_SMBusAlertConfig函数 I2C_TransmitPEC函数 I2C_PECPositionConfig函数 I2C_CalculatePEC函数 I2C_GetPEC函数 I2C_ARPCmd函数 I2C_StretchClockCmd函数 I2C_FastModeDutyCycleConfig函数。 I2C_GetLastEvent函数 I2C_CheckEvent函数 I2C_GetFlagStatus函数。 I2C_ClearFlag函数 I2C_GetITStatus函数 I2C_ClearITPendingBit函数 北京源智天下科技有限公司
– – – – MISO引脚 MOSI引脚 SCK引脚 NSS引脚
北京源智天下科技有限公司
1-3
联系方式:http://www.rzchina.net
SPI从模式工作原理
• 配置SPI从模式的步骤如下:
– 设置DFF位以定义数据帧格式为8位或16位。 – 定义数据传输和串行时钟之间的相位关系。 – 帧格式必须和主设备相同,MSB在前还是LSB在前取决于SPI_CR1 寄存器中的LSBFIRST位。 – 硬件模式下,在完整的数据帧(8位或16位)发送过程中,NSS引脚必 须为低电平。软件模式下,设置SPI_CR1寄存器中的SSM位并清除 SSI位。 – 清除MSTR位,设置SPE位,使相应引脚工作于SPI模式下。
1-7
联系方式:http://www.rzchina.net
SPI寄存器结构
typedef struct { vu16 CR1; // SPI控制寄存器1 u16 RESERVED0; vu16 CR2; // SPI控制寄存器2 u16 RESERVED1; vu16 SR; //SPI状态寄存器 u16 RESERVED2; vu16 DR; //SPI数据寄存器 u16 RESERVED3; vu16 CRCPR; //SPI CRC多项式寄存器 u16 RESERVED4; vu16 RXCRCR; //SPI接收CRC寄存器 u16 RESERVED5; vu16 TXCRCR; //SPI发送CRC寄存器 u16 RESERVED6; } SPI_TypeDef;
联系方式:http://www.rzchina.net
性格决定命运, 专注成就人生
www.rzchina.net 源智天下
北京源智天下科技有限公司
联系方式:http://www.rzchina.net
北京源智天下科技有限公司
1-13
联系方式:http://www.rzchina.net
I2C寄存器结构
typedef struct { vu16 CR1; u16 RESERVED0; vu16 CR2; u16 RESERVED1; vu16 OAR1; u16 RESERVED2; vu16 OAR2; u16 RESERVED3; vu16 DR; u16 RESERVED4; vu16 SR1; u16 RESERVED5; vu16 SR2; u16 RESERVED6; vu16 CCR; u16 RESERVED7; vu16 TRISE; u16 RESERVED8; } I2C_TypeDef;
21天学嵌入式开发
第十四讲:同步串行通信接口
北京源智天下科技有限公司
联系方式:http://www.rzchina.net
课程安排
• • • • SPI结构 SPI编程方法 I2C结构 I2C编程方法
北京源智天下科技有限公司
1-2
联系方式:http://www.rzchina.net
SPI结构
• STM32的SPI接口通过如下引脚和外部设备相连:
北京源智天下科技有限公司
1-9
联系方式:http://www.rzchina.net
SPI的编程方法 (续)
• 库函数: – SPI_DataSizeConfig函数 – SPI_TransmitCRC函数 – SPI_CalculateCRC函数 – SPI_GetCRC函数 – SPI_GetCRCPolynomial函数 – SPI_BiDirectionalLineConfig函数 – SPI_GetFlagStatus函数 – SPI_ClearFlag函数 – SPI_GetITStatus函数 – SPI_ClearITPendingBit函数
北京源智天下科技有限公司
1-10
联系方式:http://wwenku.baidu.comw.rzchina.net
I2C结构
• STM32内部集成了串行外设接口I2C • I2C的主要特点 • STM32的I2C接口具有如下4种工作模式:
– – – – 从发送器模式 从接收器模式 主发送器模式 主接收器模式
北京源智天下科技有限公司
//I2C控制寄存器1 //I2C控制寄存器2 //I2C自身地址寄存器1 //I2C自身地址寄存器2 //I2C数据寄存器 //I2C状态寄存器1 //I2C状态寄存器2 //I2C时钟控制寄存器 //I2C上升时间寄存器
北京源智天下科技有限公司
联系方式:http://www.rzchina.net
北京源智天下科技有限公司
1-5
联系方式:http://www.rzchina.net
SPI高级功能
• SPI通信的CRC • SPI的DMA通信
– 全双工模式 – 单工模式
北京源智天下科技有限公司
1-6
联系方式:http://www.rzchina.net
SPI的中断请求
北京源智天下科技有限公司