R8025T 代码

2019-07-20 07:34发布

请问各位谁有R8025T的代码,分享一下,谢谢!
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
7条回答
十里荷香
1楼-- · 2019-07-21 16:44
[mw_shl_code=applescript,true]        
u8 RX_8025_IIC_Send_Byte(u8 date)    //IIC写一个字节
{                        
   u8 t;  
   u8 ack;        
        GPIO_Config(GPIOE,CLK_SDA, DIR_OUT,DIR_OUT_T,DIR_UP);   //SDA设置输出
   RX_8025_SCL_0;                                           //拉低时钟开始数据传输
   for(t=0;t<8;t++)
   {              
      
                        if((date&0x80)>>7)
                                 RX_8025_SDA_1;
                        else
                                 RX_8025_SDA_0;
                        date<<=1;           
                        delay_us(5);   
                        RX_8025_SCL_1;
                        delay_us(5);
                        RX_8025_SCL_0;
                        delay_us(5);
    }        
   RX_8025_SCL_0;  
                delay_us(5);   
                GPIO_Config(GPIOE,CLK_SDA, DIR_IN,DIR_OUT_T,DIR_NO);  //SDA设置为输入
                RX_8025_SCL_1;
          ack=RX_8025_SDA_read;
         RX_8025_SCL_0;
                return ack;   
}

u8  RX_8025_IIC_Read_Byte(u8 ack)  //IIC读一个字节
{
                u8 i,receive=0;
                GPIO_Config(GPIOE,CLK_SDA, DIR_IN,DIR_OUT_T,DIR_NO);  //SDA设置为输入
                for(i=0;i<8;i++ )
                 {
                         RX_8025_SCL_0;
                         delay_us(2);
                         RX_8025_SCL_1;
                         receive<<=1;
                         if(RX_8025_SDA_read)
                                 receive++;   
                         delay_us(1);
                 }                                         
                        if (!ack)
                                        RX_8025_IIC_NRespons();//发送nACK
                        else
                                        RX_8025_IIC_Respons(); //发送ACK   
                        return receive;
}        

/*******************************************************************************
函数名:RX8025_Writedata
功能: 向I2C总线写一个或多个字节的数据
参数: Addr写入的起始地址,*buf 要写入的数据存放的地址,len要写入的数据长度
返回值:1失败     0成功
*******************************************************************************/

void RX8025_Writedata(u8 Addr,u8 *buf,u8 len)
{
         
                        
                        
                   u8 i;
       RX_8025_IIC_Start();
        if(RX_8025_IIC_Send_Byte(RX8025_ADDR_WRITE)==1)
        {
              RX_8025_IIC_Stop();
              return;
        }
        if(RX_8025_IIC_Send_Byte(Addr)==1)
        {
                RX_8025_IIC_Stop();
                return;
        }
        for(i=0;i<len;i++)
        {
                if(RX_8025_IIC_Send_Byte(buf)==1)
                {
                        RX_8025_IIC_Stop();
                        return;
                }
        }
        RX_8025_IIC_Stop();
}


/*******************************************************************************
函数名:RX8025_Readdata
功能: 向I2C总线读一个或多个字节的数据
参数: sadd 读数据的起始地址,*buf 要读出的数据存放的地址,len要读出数据的长度
返回值:1失败     0成功
*******************************************************************************/

void RX8025_Readdata(u8 sadd, u8 *buf, u8 len)   
{

                    u8 i;
        RX_8025_IIC_Start();
        if(RX_8025_IIC_Send_Byte(RX8025_ADDR_WRITE)==1)
        {
               RX_8025_IIC_Stop();
                return;
        }
        if(RX_8025_IIC_Send_Byte(sadd)==1)
                                        {
                                                                RX_8025_IIC_Stop();
                                                                return;
                                        }
        RX_8025_IIC_Start();
        if(RX_8025_IIC_Send_Byte(RX8025_ADDR_READ)==1)
                                        {
              RX_8025_IIC_Stop();
               return;
                                        }
        for(i=0;i<len-1;i++)
                                        {
              *buf++ = RX_8025_IIC_Read_Byte(1);
                                        }
                                
        *buf++ = RX_8025_IIC_Read_Byte(0);
        RX_8025_IIC_Stop();
                 
}




void Rx8025_SetReg(u8 sadd, u8 buf)  //设置寄存器
{

                        u8 REC[1];
                        //REC[0]=Dec_BCD(buf);
                        REC[0]=buf;
                        RX8025_Writedata(sadd,REC,1);
                        
}
u8 Rx8025_GetReg(u8 sadd)   //从8025器件中读寄存器间数据
{

                u8 BUF[1];
                u8 buf;
                RX8025_Readdata(sadd,BUF,1);
                buf=BUF[0];
                return buf;
                 
}


[/mw_shl_code]

一周热门 更多>