瑞萨sk-s7g2之旅(3)(HX711的简单移植)

  对于sk-s7g2这块板子,特点是,性能比较好,但是资料比较少。这块板子的资料与例程远比stm32,51等单片机少。但是例程都是人写的,故此,只要我们知道原理便可以写出来。今天我介绍A/D hx711在瑞萨sk-s7g2上的实现方式。对于这个A/D 。简单说HX711是一款专为高精度称重传感器而设计的24位A/D转换器芯片。与同类型其它芯片相比,该芯片集成了包括稳压电源、片内时钟振荡器等其它同类型芯片所需要的外围电路,具有集成度高、响应速度快、抗干扰性强等优点。具体的原理,我将不予以介绍。

对于大多数传感器,我们知道原理以后便可以移植,移植的首要问题便是时序。这是一个难点。移植前我们简单了解一下。这个A/D的时序简单说就是,PD_SCK从低电平变高电平并保持在高电平超过60μs,HX711 即进入断电状态如图8 所示。如使用片内稳压电源电路,断电时,外部传感器和片内A/D 转换器会被同时断电。当PD_SCK 重新回到低电平时,芯片会自动复位后进入正常工作状态。芯片从复位或断电状态进入正常工作状态后,通道A和增益128会被自动选择作为第一次A/D转换的输入通道和增益。搞清楚这个,我们就可以来移植。将具体的功能换为瑞萨的代码。

 


/********************************************************************
** 文  件  名:HX711驱动程序
** 创  建  人:yk
** 最后修改时间:2018年7月1日
*********************************************************************/


#define HX711DIN_PORT           (IOPORT_PORT_05_PIN_13)//定义引脚
#define HX711SCK_PORT           (IOPORT_PORT_05_PIN_11)
void hx711_init(void)
{  
  	   g_ioport.p_api-> pinDirectionSet(HX711DIN_PORT,IOPORT_DIRECTION_INPUT);
  	   g_ioport.p_api->pinWrite(HX711SCK_PORT, IOPORT_LEVEL_LOW);
       g_ioport.p_api-> pinDirectionSet(HX711SCK_PORT,IOPORT_DIRECTION_OUTPUT);
}
int32_t hx711_read(void)
{
    int mask = 24;                      
    int32_t tmp=0;
    ioport_level_t in;
g_ioport.p_api->pinWrite(HX711SCK_PORT, IOPORT_LEVEL_LOW);
        do
        {
            tmp=tmp<<1;
            g_ioport.p_api->pinWrite(HX711SCK_PORT, IOPORT_LEVEL_HIGH);
            g_ioport.p_api->pinRead(HX711DIN_PORT,&in);
                    if(in)tmp+=1;
            mask-=1;
            g_ioport.p_api->pinWrite(HX711SCK_PORT, IOPORT_LEVEL_LOW);

        }
        while(mask);
        g_ioport.p_api->pinWrite(HX711SCK_PORT, IOPORT_LEVEL_HIGH);
        g_ioport.p_api->pinWrite(HX711SCK_PORT, IOPORT_LEVEL_LOW);
        tmp = (tmp & 0x800000ul)?(tmp | 0xff000000ul):tmp;
        tmp=(tmp+108563)/1654;
        return tmp;
}

可以直接用,但是具体的设备,需要校准公式,暂时没有研究万能公式,移植之后经过简单的数据处理便可以直接使用。已通过测试

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值