static int yas_power_up(void) { uint8_t reg; int i; if (yas_write_reg(YAS_CTRL_REG2, YAS_CTRL_REG2_SRST) < 0) return YAS_ERROR_DEVICE_COMMUNICATION; for (i = 0; i < YAS_SOFTRESET_COUNT_MAX; i++) { module.cbk.usleep(YAS_SOFTRESET_WAIT_TIME); if (yas_read_reg(YAS_CTRL_REG2, ®) < 0) continue; if (reg == 0x00) break; } if (i == YAS_SOFTRESET_COUNT_MAX) return YAS_ERROR_DEVICE_COMMUNICATION; if (yas_write_reg(YAS_DATA_CTRL_REG, module.odr)) return YAS_ERROR_DEVICE_COMMUNICATION; if (yas_write_reg(YAS_CTRL_REG1 , YAS_CTRL_REG1_PC1 | YAS_CTRL_REG1_RES | YAS_CTRL_REG1_GSEL ) < 0) return YAS_ERROR_DEVICE_COMMUNICATION; module.cbk.usleep(module.startup_time); return YAS_NO_ERROR; }
static int yas_init(void) { uint8_t id = 0; if (module.initialized) return YAS_ERROR_INITIALIZE; module.cbk.usleep(YAS_POWERUP_TIME); if (module.cbk.device_open(YAS_TYPE_ACC) < 0) return YAS_ERROR_DEVICE_COMMUNICATION; if (yas_read_reg(YAS_WHO_AM_I, &id) < 0) { module.cbk.device_close(YAS_TYPE_ACC); return YAS_ERROR_DEVICE_COMMUNICATION; } printk("who_am_i_val:%02x\n", id); accel_product_id = id; if (id != YAS_WHO_AM_I_VAL) { module.cbk.device_close(YAS_TYPE_ACC); return YAS_ERROR_CHIP_ID; } module.enable = 0; module.delay = YAS_DEFAULT_SENSOR_DELAY; module.position = YAS_DEFAULT_POSITION; yas_set_odr(module.delay); yas_power_down(); module.cbk.device_close(YAS_TYPE_ACC); module.initialized = 1; return YAS_NO_ERROR; }
static int yas_init(void) { uint8_t id; if (module.initialized) return YAS_ERROR_INITIALIZE; module.cbk.usleep(YAS_STARTUP_TIME); if (module.cbk.device_open(YAS_TYPE_ACC) < 0) return YAS_ERROR_DEVICE_COMMUNICATION; if (yas_read_reg(YAS_BGW_CHIPID, &id) < 0) { module.cbk.device_close(YAS_TYPE_ACC); return YAS_ERROR_DEVICE_COMMUNICATION; } if (id != YAS_BGW_CHIPID_VAL) { module.cbk.device_close(YAS_TYPE_ACC); return YAS_ERROR_CHIP_ID; } module.enable = 0; module.delay = YAS_DEFAULT_SENSOR_DELAY; module.position = YAS_DEFAULT_POSITION; yas_set_sd(module.delay); yas_power_down(); module.cbk.device_close(YAS_TYPE_ACC); module.initialized = 1; return YAS_NO_ERROR; }