OpenEdv-开源电子网

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

R8025T 代码

[复制链接]

5

主题

17

帖子

0

精华

初级会员

Rank: 2

积分
137
金钱
137
注册时间
2016-1-2
在线时间
33 小时
发表于 2018-5-10 12:58:21 | 显示全部楼层 |阅读模式
请问各位谁有R8025T的代码,分享一下,谢谢!
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

69

主题

269

帖子

0

精华

高级会员

Rank: 4

积分
976
金钱
976
注册时间
2014-7-4
在线时间
237 小时
发表于 2018-5-20 13:51:07 | 显示全部楼层
[mw_shl_code=c,true]void RX8025_ByteWrite(u8 addr, u8 data)
{

        u8 ack;
  IIC_Start();
        IIC_Send_Byte(0x64);
  RX8025_ACK.salver_addr_w=IIC_Wait_Ack();       
        IIC_Send_Byte(addr<<4);  
      
        RX8025_ACK.IR=IIC_Wait_Ack();
      
        IIC_Send_Byte(data);
        RX8025_ACK.DATA=IIC_Wait_Ack();
      
  IIC_Stop();  

}

/**********************************************************************************************
  Function:       RX8025_ByteRead
  Description:    &#182;á8025&#188;&#196;′&#230;&#198;÷
                                  
  Calls:
  Called By:
  Input:          1.addr &#188;&#196;′&#230;&#198;÷μ&#216;&#214;·
                                 
  Output:
  Return:         &#188;&#196;′&#230;&#198;÷&#196;úèY
  Others:
*************************************************************************************************/
u8 RX8025_ByteRead(u8 addr)
{
       
        u8 data;

  IIC_Start();
        IIC_Send_Byte(0x64);
  RX8025_ACK.salver_addr_w=IIC_Wait_Ack();       
        IIC_Send_Byte(addr<<4);  
   RX8025_ACK.IR=IIC_Wait_Ack();
        IIC_Start();
        IIC_Send_Byte(0x65);
        RX8025_ACK.salver_addr_r=IIC_Wait_Ack();       
        data= IIC_Read_Byte(1);
        IIC_Stop();  
        return data;
}[/mw_shl_code]
回复 支持 反对

使用道具 举报

69

主题

269

帖子

0

精华

高级会员

Rank: 4

积分
976
金钱
976
注册时间
2014-7-4
在线时间
237 小时
发表于 2018-5-20 13:52:12 | 显示全部楼层
iic代码用原子的就可以  亲测读写正常
回复 支持 反对

使用道具 举报

5

主题

17

帖子

0

精华

初级会员

Rank: 2

积分
137
金钱
137
注册时间
2016-1-2
在线时间
33 小时
 楼主| 发表于 2018-5-23 10:58:18 | 显示全部楼层
freewayflyer 发表于 2018-5-20 13:52
iic代码用原子的就可以  亲测读写正常

好的 谢谢
回复 支持 反对

使用道具 举报

69

主题

269

帖子

0

精华

高级会员

Rank: 4

积分
976
金钱
976
注册时间
2014-7-4
在线时间
237 小时
发表于 2018-5-28 10:27:56 | 显示全部楼层
8025T调的咋样了   我之前调的是8025AC 发错了   现在也需要调8025T了
回复 支持 反对

使用道具 举报

5

主题

17

帖子

0

精华

初级会员

Rank: 2

积分
137
金钱
137
注册时间
2016-1-2
在线时间
33 小时
 楼主| 发表于 2018-6-4 09:42:14 | 显示全部楼层
freewayflyer 发表于 2018-5-28 10:27
8025T调的咋样了   我之前调的是8025AC 发错了   现在也需要调8025T了

搞定了
回复 支持 反对

使用道具 举报

69

主题

269

帖子

0

精华

高级会员

Rank: 4

积分
976
金钱
976
注册时间
2014-7-4
在线时间
237 小时
发表于 2018-6-19 16:38:09 | 显示全部楼层

我调的8025T碰到了个奇怪问题,开始测试没问题,后来改了一版,读出来的数只有秒变化,其他不变。代码分享下吧
回复 支持 反对

使用道具 举报

5

主题

17

帖子

0

精华

初级会员

Rank: 2

积分
137
金钱
137
注册时间
2016-1-2
在线时间
33 小时
 楼主| 发表于 2018-6-23 16:29:20 | 显示全部楼层
[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]
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-5-26 05:41

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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