单总线驱动(DHT11)
DHT11介绍
- DHT11是温湿度复合传感器
- DHT11是单总线协议,只有一根数据线,一根VCC,一根GND线
- dht11是串行异步单工通信方式
- 基本工作参数如下:
DHT11时序图
data结构:
### 接收到的数据分析
相关驱动函数
static int gpio_dht11;
- 注册杂项设备
int ret = misc_register(misc); - 在关联的设备树中查找根目录下的设备节点
struct device_node* node;
node = of_find_node_by_path(“/mydht11”); //返回查找到的mydht11设备节点 - 从设备树(Device Tree)节点获取 GPIO 引脚编号
gpio_dht11 = of_get_named_gpio(node,“gpio_dht11”,0); - 请求配置的gpio引脚
gpio_request(gpio_dht11, “gpiodht11”); //"gpiodht11"随便设置的名称 - 设置电平状态:
gpio_set_value(gpio_dht11,1); //设置电平状态为高电平 - 获取电平状态
gpio_get_value(gpio_dht11); - 切换输入输出模式
gpio_direction_input(gpio_dht11);
gpio_direction_output(gpio_dht11); - 数据与应用层的传输
copy_to_user(char *to, char * from, unsigned long n); //传输给应用层
copy_from_user(char * from, char * to, unsigned long n); //接收来自应用层数据