适配1820传感,有没有delay(1)延时1us的实现参考

Zigbee 子设备开发


Post Reply
xiaot
Posts: 18

TLSR8258_TuyaOS-3.8.0,基于tuyaos_demo_meter_socket_tl开发包,想要接1820温度传感,请问有没有delay(1)延时1us的实现参考,

huanghuan
Posts: 244

Re: 适配1820传感,有没有delay(1)延时1us的实现参考

Code: Select all

        TUYA_TIMER_BASE_CFG_T cfg;
            cfg.mode = TUYA_TIMER_MODE_PERIOD;
            cfg.cb = hw_timer_zll_scan_key_deal_handler;
            cfg.args = NULL;
            tkl_timer_init(TUYA_TIMER_NUM_0,&cfg);
            tkl_timer_start(TUYA_TIMER_NUM_0, 1000);

1.你好,你可以使用 tkl_timer 相关函数
2.请注意如果使能了上述函数,休眠设备将不会进入休眠,需要调用 tkl_timer_stop 后方能进入休眠

xiaot
Posts: 18

Re: 适配1820传感,有没有delay(1)延时1us的实现参考

好的谢谢,在适配过程中,使用tal_gpio_init接口进行初始化时,发现初始化完成需要30多us的时间,导致不能正常读取到ds18b20的数据,请问这里是什么原因,消耗了这么长时间

huanghuan
Posts: 244

Re: 适配1820传感,有没有delay(1)延时1us的实现参考

1.请说明下,tal_gpio_init和读取不到ds18b20有什么关系?
2.tal_gpio_init是配置输入输出,上下拉等操作

xiaot
Posts: 18

Re: 适配1820传感,有没有delay(1)延时1us的实现参考

执行以下的步骤:
for (i = 0; i < 8; i++) {
1. 下拉输出初始化;
2.上拉输入初始化
if (DS18B20_READ()) { //读取电平
data |= 0x80;
}

Code: Select all

}

TUYA_GPIO_BASE_CFG_T sel_gpio_cfg = {0};


Code: Select all

if(FALSE == in)
{
    sel_gpio_cfg.direct = TUYA_GPIO_OUTPUT;
    if(high)
    {
        sel_gpio_cfg.mode = TUYA_GPIO_PULLDOWN;
        sel_gpio_cfg.level = TUYA_GPIO_LEVEL_LOW;
    }else{
        sel_gpio_cfg.mode = TUYA_GPIO_PULLUP;
        sel_gpio_cfg.level = TUYA_GPIO_LEVEL_HIGH;
    }
}else{
    sel_gpio_cfg.direct = TUYA_GPIO_INPUT;
    if(high)
    {
        sel_gpio_cfg.mode = TUYA_GPIO_PULLDOWN;
    }else{
        sel_gpio_cfg.mode = TUYA_GPIO_PULLUP;
    }
}
tal_gpio_init(TUYA_GPIO_NUM_13, &sel_gpio_cfg);
xiaot
Posts: 18

Re: 适配1820传感,有没有delay(1)延时1us的实现参考

初始化时间很长,测试需要30us左右

huanghuan
Posts: 244

Re: 适配1820传感,有没有delay(1)延时1us的实现参考

那你自己调用drv 层原厂驱动函数实现你需要的功能

xiaot
Posts: 18

Re: 适配1820传感,有没有delay(1)延时1us的实现参考

好的谢谢 我试试

Post Reply