- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
编号密级阶段标记页数名称时序板软件设计报告编写校对审核标审批准北京国科环宇空间技术有限公司2015年6月8日1时序板软件设计时序板软件部分的主控芯片采用的是STM32F103C8T6单片机,主要完成的功能是接收来自时序版逻辑模块的指令信息,对自身的电压和温度进行检测以及将结果发送出去。数据的接收和发送采用的是I2C总线。下图所示是时序版软件部分的结构图。2时序板软件模块设计本软件涉及到的数据接收发送和数据采集。数据采集包括电压采集和温度采集。主要涉及到STM32F103C8T6单片机的I2C模块,ADC模块,GPIO模块。2.1 数据接收发送模块详细设计数据接收发送的I2C接口主要用于接收来自BMC主控板的指令信息,同时将自身采集到的温度和电压信息通过此接口返回到BMC主控板。STM32F103C8T6单片机共有两个I2C模块,分别是STM32F103C8T6单片机硬件的43引脚(I2C1_SDA)、42引脚(I2C1_SCL)、22引脚(I2C2_SDA)、21引脚(I2C2_SCL),本设计中只用到了I2C1,I2C2的引脚直接拉低接地。2.1.1 I2C模块初始化软件中具体指的是I2C_Configuration()子函数中的内容,下面将对这个函数进行详细的介绍。①I2C复位使能RCC_APB1PeriphClockCmd(RCC_APB1Periph_I2C1|RCC_APB1Periph_I2C2,ENABLE)使能I2C模块RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB|RCC_APB2Periph_AFIO , ENABLE)使能复用引脚②配置SDA和SCL总线GPIO_InitStructure.GPIO_Pin=GPIO_Pin_6|GPIO_Pin_7|GPIO_Pin_10|GPIO_Pin_11配置I2C1的SCL为GPIO的PB6,SDA为GPIO的PB 7,配置I2C2的SCL为GPIO的PB10,SDA为GPIO的PB11②配置I2C基本信息I2C的时钟速率为100000Hz,I2C_InitStructure.I2C_ClockSpeed = 100000使能I2C应答模式,I2C_InitStructure.I2C_Ack = I2C_Ack_Enable使能I2C应答, I2C_AcknowledgeConfig(I2Cx, ENABLE);2.1.2 I2C发送数据(单片机是I2C通信的主机)voidDrv_I2C_Write(I2C_TypeDef *I2Cx,u8 I2C_Addr,u8 *buf,uint16_t num)函数描述:I2C发送数据函数功能:将采集到的自身传感器信息发送回BMC主控板函数参数:I2Cx----I2C通道选择,可选择1或者2 I2C_Addr-------发送数据信息的目标地址buf------发送的数据信息num-----发送数据的字节数实现过程:①产生I2C通信启动信号voidI2C_GenerateSTART(I2C_TypeDef* I2Cx, FunctionalStateNewState)函数描述:启动一个I2C通道函数参数:I2Cx----I2C通道选择,可选择1或者2NewState-----I2C通道状态,可选择ENABLE或者DISENABLE②启动信号完成确认ErrorStatus I2C_CheckEvent(I2C_TypeDef* I2Cx, uint32_t I2C_EVENT)函数描述:确认总线是否空闲函数参数:I2Cx----I2C通道选择,可选择1或者2I2C_EVENT---I2C目前状态事件,可选择BUSY、MSL、ADDR等状态注意:此函数必须在I2C_GenerateSTART之后使用,用于保证此时I2C总线处于闲的状态,CPU可以控制I2C进行后面的操作。③写目标地址void I2C_Send7bitAddress(I2C_TypeDef* I2Cx, uint8_t Address, uint8_t I2C_Direction)函数描述:发送字节地址用于选择发送数据信息的从设备函数参数:I2Cx----I2C通道选择,可选择1或者2Address---发送数据的目标地址I2C_Direction---I2C的方向,可选择接受或者发送④目标地址完成确认具体参考步骤②注意:此函数必须在写完目标地址后使用,用于确保写完成。⑤发送数据信息void I2C_SendData(I2C_TypeDef* I2Cx, uint8_t Data)函数描述:用于发送数据函数参数:I2Cx----I2C通道选择,可选择1或者2Data---发送的数据⑥发送完成确认具体参
文档评论(0)