I2C неверно инициализирован.Ну вписал чтение датчика
- Линии: нужно 18(SDA),20(SCL), а не 12,13
- Нет вызова pin mux (hal_gpio_fmux_set(SCL, FMUX_IIC0_SCL); hal_gpio_fmux_set(SDA, FMUX_IIC0_SDA));
- Slave address CHT8310 0x80, а не 0x40
I2C неверно инициализирован.Ну вписал чтение датчика
Зачем, если то, что дано работает?I2C неверно инициализирован.
Это только то, что увидел навскидку.
- Линии: нужно 18(SDA),20(SCL), а не 12,13
- Нет вызова pin mux (hal_gpio_fmux_set(SCL, FMUX_IIC0_SCL); hal_gpio_fmux_set(SDA, FMUX_IIC0_SDA));
- Slave address CHT8310 0x80, а не 0x40
#define I2C_SDA P18
#define I2C_SCL P20
measured_data_t measured_data;
void init_i2c(void) {
hal_gpio_fmux_set(I2C_SCL, FMUX_IIC0_SCL);
hal_gpio_fmux_set(I2C_SDA, FMUX_IIC0_SDA);
...
...
int read_i2c_bytes(uint8 addr, uint8 reg, uint8 * data, uint8 size) {
int i = size;
AP_I2C_TypeDef * pi2cdev = AP_I2C0;
pi2cdev->IC_ENABLE = 0;
pi2cdev->IC_TAR = addr;
HAL_ENTER_CRITICAL_SECTION();
pi2cdev->IC_ENABLE = 1;
pi2cdev->IC_DATA_CMD = reg;
//while(!(pi2cdev->IC_RAW_INTR_STAT & 0x10));
while(i--)
pi2cdev->IC_DATA_CMD = 0x100;
HAL_EXIT_CRITICAL_SECTION();
uint32 to = osal_sys_tick;
i = size;
while(i) {
if(pi2cdev->IC_STATUS & 0x08) { // fifo not empty
...
void deinit_i2c(void) {
AP_I2C_TypeDef * pi2cdev = AP_I2C0;
pi2cdev->IC_ENABLE = 0;
hal_clk_gate_disable(MOD_I2C0);
hal_gpio_pin_init(I2C_SCL, IE);
hal_gpio_pin_init(I2C_SDA, IE);
}
Вы вообще работали с каким MCU?I2C неверно инициализирован.
Это только то, что увидел навскидку.
- Линии: нужно 18(SDA),20(SCL), а не 12,13
typedef enum
{
GPIO_P00 = 0, P0 = GPIO_P00,
...
GPIO_P18 = 12, P18 = GPIO_P18, Analog_IO_5 = GPIO_P18,
GPIO_P20 = 13, P20 = GPIO_P20, Analog_IO_6 = GPIO_P20,
...
GPIO_DUMMY = 0xff,
} gpio_pin_e;
Да, недосмотрел . В исходной прошивке используется Tuya wrapper.Вы вообще работали с каким MCU?
gpio_pin_e tkl_gpio_to_phy6222_gpio(UINT32_T pin_id)
Вроде было обещано другоеУ CHT8310 есть беда - он не соответствует документации или все кривые - влажность занижает ужасно, почти на 10%.
Может на заводе плохо отмыли плату?CHT8310 is a low voltage digital humidity and temperature sensor with ±2%RH(Typ.) accuracy for humidity and ±0.2°C(Typ.) accuracy for temperature.
Each chip is specially calibrated for temperature and humidity accuracy in factory before shipment to customers. There is no need for re-calibration anymore.
Увы, никак. Нет необходимых компетенций . Может ткнёте носом, с чего начать, что посмотреть?как дела с OTA?
Это потребует больше времени, чем всё сделать самому.Может ткнёте носом, с чего начать, что посмотреть?
C перевода java на js.с чего начать, что посмотреть?
Доки дополнены english версиями, прошивка BTH2 переехала и ждет ОТА от @cool2000.
Всё остальное уже работает, включая кнопки и всякие UUID (c Notify) с измерениями T, H, %BAT c информацией по версии и т.д., доступные при соединении.
Ни тем ни другим не владею, от слова совсем и нет необходимого понимания процесса...C перевода java на js
Ещё бы знать, в какое поле его вставлятьПароль для OTA в прошивке "12345678".
В программе PhyOTA, еле различимыми символами, крашенными под фон окна.Ещё бы знать, в какое поле его вставлять