OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 4283|回复: 1

RX8025T时钟芯片无法设置写入模式

[复制链接]

60

主题

167

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
277
金钱
277
注册时间
2017-3-17
在线时间
120 小时
发表于 2017-11-9 10:37:13 | 显示全部楼层 |阅读模式
50金钱
IC写入报错(IIC_Write_ERROR)

[mw_shl_code=c,true]/*******************************************************************************
函数名:StartI2c
功能:  产生I2C开始信号(SDA在SCL高电平时产生一个下降沿信号)
参数:  无
返回值:无
*******************************************************************************/
void R8025_I2C_Start(void) //产生起始信号              
{
        R8025_I2C_SDA_OUT();
        SDA_H;
  SCL_H;
  delay_us(5);
  SDA_L;
  delay_us(5);
  SCL_L;
}
/*******************************************************************************
函数名:StopI2c
功能:  产生I2C停止信号(SDA在SCL高电平时产生一个上升沿信号)
参数:  无
返回值:无
*******************************************************************************/
void R8025_I2C_Stop(void)//产生停止信号              
{
        SCL_L;
        R8025_I2C_SDA_OUT();
        SDA_L;
        delay_us(5);
        SCL_H;
        delay_us(5);
  SDA_H;
}
/////////////////////////////////
u8 IIC_Write_Byte(u8 Data)
{
        u8 i;
        R8025_I2C_SDA_OUT();
        for(i=0;i<8;i++)
        {
                SCL_L;
                delay_us(5);
                if((Data&0x80)>0) //0x80  1000 0000
                 SDA_H;
                else
                 SDA_L;
                delay_us(5);
                SCL_H;
                Data<<=1;
                delay_us(5);
        }
        SCL_L;
        R8025_I2C_SDA_IN();
        delay_us(5);
        SCL_H;
        //delay_us(5);
        i=0;
        while(GPIO_ReadInputDataBit(R8025_GPIO_I2C,R8025_I2C_SDA))
        {
               
                if(++i>12)
                {
                        SCL_L;
                        return 0;
                }
        }
        SCL_H;
        return 1;
}
/////////////////////////////////
u8 IIC_Read_Byte(void)
{
        u8 i;
        u8 IC_data=0;
        SCL_L;
        R8025_I2C_SDA_OUT();
        SDA_H;
        R8025_I2C_SDA_IN();
        for(i=0;i<8;i++)
        {
                SCL_H;
                delay_us(5);
                IC_data<<=1;
                IC_data=IC_data|GPIO_ReadInputDataBit(R8025_GPIO_I2C,R8025_I2C_SDA);
                delay_us(2);
                SCL_H;
                delay_us(2);//读取数据
                SCL_L;
                delay_us(2);
        }
        delay_us(5);
        SCL_L;
        R8025_I2C_SDA_OUT();
        SDA_L;
        return IC_data;
}
u8 write_data(u8 addr,u8 *buf,u8 len)
{
        u8 i;
        R8025_I2C_Start();
        if(IIC_Write_Byte(RX8025_ADDR_WRITE)==0)
        {
                printf("IIC_Write_ERROR\r\n");
                R8025_I2C_Stop();
                return 0;
        }
        if(IIC_Write_Byte(addr)==0)
        {
                R8025_I2C_Stop();
                printf("IIC_ADDR_ERROR\r\n");
                return 0;
        }
        for(i=0;i<len;i++)
        {
                if(IIC_Write_Byte(buf)==0)
                {
                        R8025_I2C_Stop();
                        return 0;
                }
        }
        R8025_I2C_Stop();
        delay_us(5);
        SDA_L;
        SCL_L;
        return 1;
}

[/mw_shl_code]


正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165516
金钱
165516
注册时间
2010-12-1
在线时间
2116 小时
发表于 2017-11-10 01:18:07 | 显示全部楼层
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-5-19 06:41

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表