欢迎来到三一文库! | 帮助中心 三一文库31doc.com 一个上传文档投稿赚钱的网站
三一文库
全部分类
  • 研究报告>
  • 工作总结>
  • 合同范本>
  • 心得体会>
  • 工作报告>
  • 党团相关>
  • 幼儿/小学教育>
  • 高等教育>
  • 经济/贸易/财会>
  • 建筑/环境>
  • 金融/证券>
  • 医学/心理学>
  • ImageVerifierCode 换一换
    首页 三一文库 > 资源分类 > DOC文档下载  

    I2C时序分析.doc

    • 资源ID:13823326       资源大小:275.50KB        全文页数:8页
    • 资源格式: DOC        下载积分:4
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录 QQ登录   微博登录  
    二维码
    微信扫一扫登录
    下载资源需要4
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    I2C时序分析.doc

    示波器查看I2C时序I2C的起始信号(start )是时钟保持高电平SDA拉低,表示控制总线。数 据只有在时钟低电平时变化,时钟变为高电平时保持。停止信号:时钟高电平时, SDA拉高,表示释放总线。r2.st5!8.M&.163.ecm料!C誥3SE:*irfcnFQsrkEfr £v E吊r-i帛Emcn*td-ry3Ns -$一FEf暑TLlrlbeQ. 0Q0E10.03A图1 STM32模拟I2C启动BMP805的时序,红线为数据,绿线为时钟使用了 SDS1022C数字示波器采集的数据,然后将数据导入 Excel表格中, 形成的图表。将示波器存储格式修改为 CSV(MEN栏、SAVE/RECAL按键、类型 CSV存储、新建文件、确定),时钟信号与数字信号分别采集然后合成插入图 表,如图1。h 血 SDSOOOOl 国 5DS00Q0S痔茂丘新Mierosoft Office. Microsoft Office.-大91 KB91 KBEl s 1C6B9. bluy. 1 CG.cui r i图2示波器存储的数据文件,一个是 SDA数据,一个是 SCL数据在同一周期下采集这两组数据05 15 115 1 1图3数据分析S 5 冷專曇I&冲£ 旳-4.主机在发送完毕启动信号,接着发送地址,从机会产生应答信号。如果没有 应答信号表示通信异常。分析波形如果“起始”“地址”都严格正确, 时钟不是 过快那一定是硬件有毛病,否则仔细调试软件。附参考STM32的端口模拟I2C程序:#in elude "stm32f10x.h"#define SCL_H GPI0_SetBits(GPI0B,GPI0_Pin_7) /SCL#define SCL_L GPI0_ResetBits(GPI0B,GPI0_Pin_7)#define SDA_H GPI0_SetBits(GPI0B,GPI0_Pin_6)#define SDA_L GPIO_ResetBits(GPIOB,GPIO_Pin_6)#define SDA_read GPIO_ReadI nputDataBit(GPIOB,GPIO_Pin_6) ?SDA#define Addr 0xee /#define FALSE 0#define TRUE 1 /注意主程序里开 B 口的时钟,延时函数严格使用了滴答时钟,实际上可以不用准确; void I2C_GPIO_Config(void)GPIO_InitTypeDef GPIO_InitStructure;GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6;GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_OD;GPIO_Init(GPIOB, &GPIO_InitStructure);GPIO_InitStructure.GPIO_Pin = GPIO_Pin_7;GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_OD;GPIO_Init(GPIOB, &GPIO_InitStructure);/* Function Name : I2C_Start* Description : Master Start Simulation IIC Communication* Input : None* Output : None* Return : Wheather Start* * unsigned char I2C_Start(void)SDA_H;SCL_H;delay_us(10);SDA_L;delay_us(10);SCL_L;delay_us(5);return TRUE;/* * Function Name : I2C_Stop* Description : Master Stop Simulation IIC Communication* Input : None* Output : None* Return : None*void I2C_Stop(void)SCL_L; delay_us(10);SDA_L;SCL_H;delay_us(10);SDA_H;delay_us(10);/* Function Name : I2C_Ack* Description : Master Send Acknowledge Single* Input : None* Output : None* Return : None * */void l2C_Se ndAck(u nsig ned char ack) ack=0,?=1?SCL_L;delay_us(5);if(ack=0)SDA_L;elseSDA_H;delay_us(5);SCL_H;delay_us(10);SCL_L;delay_us(10);/* Function Name : l2C_NoAck* Description : Master Send No Acknowledge Single* lnput : None* Output : None* Return : None*unsigned char l2C_RecvAck(void)unsigned char ack=0;SCL_L; delay_us(5); SDA_H; delay_us(5); SCL_H;delay_us(5);ack=SDA_read;SCL_L;delay_us(10);return ack; /?0?/* Function Name : I2C_WaitAck* Description : Master Reserive Slave Acknowledge Single* Input : None* Output : None* Return : Wheather Reserive Slave Acknowledge Single* * /* Function Name : I2C_SendByte* Description : Master Send a Byte to Slave* Input : Will Send Date* Output : None* Return : None* *void I2C_SendByte(u8 SendByte) /?/u8 i=8;while(i-)SCL_L;delay_us(5);if(SendByte&0x80)SDA_H;elseSDA_L;SendByte<<=1;delay_us(5);SCL_H;delay_us(5);SCL_L;I2C_RecvAck();/* Function Name : I2C_RadeByte* Description : Master Reserive a Byte From Slave* Input : None* Output : None* Return : Date From Slave*unsigned char I2C_RecvByte(void) /u8 i=8;u8 ReceiveByte=0;SDA_H;while(i-)ReceiveByte<<=1;SCL_L;delay_us(10);SCL_H;delay_us(10);if(SDA_read)ReceiveByte|=0x01;SCL_L;delay_us(10);return ReceiveByte;unsigned char Single_Write(unsigned char REG_Address,unsigned char REG_data) /void I2C_Start();I2C_SendByte(Addr);I2C_SendByte(REG_Address);I2C_SendByte(REG_data);I2C_Stop();delay_ms(5);return TRUE; /?*unsigned char Single_Read(unsigned char REG_Address) unsigned char REG_data;I2C_Start(); I2C_SendByte(Addr);I2C_SendByte(REG_Address);I2C_Start();I2C_SendByte(Addr+1);REG_data= I2C_RecvByte();I2C_SendAck(1);I2C_Stop();return REG_data;short Multiple_read(u8 ST_Address)u8 msb, lsb;short _data;I2C_Start();I2C_SendByte(Addr);I2C_SendByte(ST_Address);I2C_Start();I2C_SendByte(Addr+1);msb = I2C_RecvByte();I2C_SendAck(0);lsb = I2C_RecvByte();I2C_SendAck(1);I2C_Stop();delay_ms(5);_data = msb << 8;_data |= lsb;return _data;long bmp085ReadTemp(void)I2C_Start();I2C_SendByte(Addr);I2C_SendByte(0xF4);I2C_SendByte(0x2E);I2C_Stop();delay_ms(2);return (long) Multiple_read(0xF6);unsigned char Check_bmp085(void)u16 c1;c1 = Multiple_read(0xAA);if(c1!=0&&c1!=0xffff)return 1;return 0;STM32 端口设置为开漏输出,读之前写1,读的是端口数据。

    注意事项

    本文(I2C时序分析.doc)为本站会员(scccc)主动上传,三一文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一文库(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    经营许可证编号:宁ICP备18001539号-1

    三一文库
    收起
    展开