dht11的时序出现问题了

dht11发出数据,主机接收数据时,芯片手册说低电平持续40-50us,但是我用ktime_get_boot_ns()函数计算时间的时候是70us或者20us而高电平持续时间是40-50us,导致读出数据每一位都是1.
但是如果我反过来读,低电平持续的久就读为1,持续的快就读为0,校验位又不对。
而且第一位数据的高电平持续时间也不对,只有2000ns


这是低电平持续时间的统计,总共读了40位数据,我就统计四十次低电平持续时间

这是没校验就输出的结果
image

但是我如果用中断我源码读出来就是正常的