初始化等没有做,只写了读与写,能够正常读取数据
#include <stdio.h>
#include <linux/types.h>
#include <fcntl.h>
#include <unistd.h>
#include <stdlib.h>
#include <sys/types.h>
#include <sys/ioctl.h>
#include <string.h>
#include <linux/i2c.h>
#include <linux/i2c-dev.h>
#include <stdio.h>
#include <stdlib.h>
#include <stdint.h>
#define AHT20_DEVICE_ADDR 0x38
#define DEFAULT_I2C_BUS "/dev/i2c-0"
// CRC校验类型:CRC8/MAXIM
//多项式:X8+X5+X4+1
// Poly:0011 0001 0x31
//高位放到后面就变成 1000 1100 0x8c
// C现实代码:
uint8_t Calc_CRC8(uint8_t *message, uint8_t Num)
{
uint8_t i;
uint8_t byte;
uint8_t crc = 0xFF;
for (byte = 0; byte < Num; byte++)
{
crc ^= (message[byte]);
for (i = 8; i > 0; --i)
{
if (crc & 0x80)
crc = (crc << 1) ^ 0x31;
else
crc = (crc << 1);
}
}
return crc;
}
/*******************

本文档展示了如何在Linux系统中通过I2C总线与AHT20温湿度传感器进行通信。代码包括了读写函数以及CRC8校验的实现,用于从传感器读取数据并显示温度和湿度。程序实现了不断读取并显示传感器数据的过程。
最低0.47元/天 解锁文章
814





