Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add M5Stack Stick C board #7422

Merged
merged 2 commits into from
Jan 10, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
256 changes: 256 additions & 0 deletions ports/espressif/boards/m5stack_stick_c/axp192.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,256 @@
/*
*
* The MIT License (MIT)
*
* Copyright (c) 2022 Stephen Oliver
* Copyright (c) 2023 CDarius
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in
* all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
* THE SOFTWARE.
*/


#ifndef MICROPY_AXP192_H
#define MICROPY_AXP192_H

#define AXP192_I2C_ADDRESS 0x34

#define AXP192_EXTEN_DCDC2_CTRL 0x10
#define AXP192_EXTEN_DCDC2_CTRL_EXTEN 0b00000100
#define AXP192_EXTEN_DCDC2_CTRL_DCDC2 0b00000001

#define AXP192_DCDC13_LDO23_CTRL 0x12
#define AXP192_DCDC13_LDO23_CTRL_EXTEN 0b01000000
#define AXP192_DCDC13_LDO23_CTRL_LDO3 0b00001000
#define AXP192_DCDC13_LDO23_CTRL_LDO2 0b00000100
#define AXP192_DCDC13_LDO23_CTRL_DCDC3 0b00000010
#define AXP192_DCDC13_LDO23_CTRL_DCDC1 0b00000001

#define AXP192_DCDC2_OUT_VOLTAGE 0x25

#define AXP192_DCDC1_OUT_VOLTAGE 0x26
#define AXP192_DCDC1_OUT_VOLTAGE_3_350V 0b01101010

#define AXP192_DCDC3_OUT_VOLTAGE 0x27


#define AXP192_LDO23_OUT_VOLTAGE 0x28
#define AXP192_LDO23_OUT_VOLTAGE_LDO2_3_0V 0b11000000
#define AXP192_LDO23_OUT_VOLTAGE_LDO2_2_8V 0b10100000
#define AXP192_LDO23_OUT_VOLTAGE_LDO2_MASK 0b11110000
#define AXP192_LDO23_OUT_VOLTAGE_LDO3_3_0V 0b00001100
#define AXP192_LDO23_OUT_VOLTAGE_LDO3_2_8V 0b00001010
#define AXP192_LDO23_OUT_VOLTAGE_LDO3_MASK 0b00001111

#define AXP192_VBUS_IPSOUT 0x30
#define AXP192_VBUS_IPSOUT_IGNORE_VBUSEN 0b10000000
#define AXP192_VBUS_IPSOUT_VHOLD_LIMIT 0b01000000
#define AXP192_VBUS_IPSOUT_VHOLD_VOLTAGE_4_4V 0b00100000
#define AXP192_VBUS_IPSOUT_VHOLD_VOLTAGE_MASK 0b00111000
#define AXP192_VBUS_IPSOUT_VBUS_LIMIT_CURRENT 0b00000010
#define AXP192_VBUS_IPSOUT_VBUS_LIMIT_CURRENT_500mA 0b00000001
#define AXP192_VBUS_IPSOUT_VBUS_LIMIT_CURRENT_100mA 0b00000000

#define AXP192_POWER_OFF_VOLTAGE 0x31
#define AXP192_POWER_OFF_VOLTAGE_2_6V 0b0000
#define AXP192_POWER_OFF_VOLTAGE_2_7V 0b0001
#define AXP192_POWER_OFF_VOLTAGE_2_8V 0b0010
#define AXP192_POWER_OFF_VOLTAGE_2_9V 0b0011
#define AXP192_POWER_OFF_VOLTAGE_3_0V 0b0100
#define AXP192_POWER_OFF_VOLTAGE_3_1V 0b0101
#define AXP192_POWER_OFF_VOLTAGE_3_2V 0b0110
#define AXP192_POWER_OFF_VOLTAGE_3_3V 0b0111
#define AXP192_POWER_OFF_VOLTAGE_MASK 0b0111

#define AXP192_POWER_OFF_BATT_CHGLED_CTRL 0x32
#define AXP192_POWER_OFF_BATT_CHGLED_CTRL_OFF 0b10000000

#define AXP192_CHARGING_CTRL1 0x33
#define AXP192_CHARGING_CTRL1_ENABLE 0b10000000
#define AXP192_CHARGING_CTRL1_VOLTAGE_4_36V 0b01100000
#define AXP192_CHARGING_CTRL1_VOLTAGE_4_20V 0b01000000
#define AXP192_CHARGING_CTRL1_VOLTAGE_4_15V 0b00100000
#define AXP192_CHARGING_CTRL1_VOLTAGE_4_10V 0b00000000
#define AXP192_CHARGING_CTRL1_VOLTAGE_MASK 0b01100000
#define AXP192_CHARGING_CTRL1_CHARGING_THRESH_15PERC 0b00010000
#define AXP192_CHARGING_CTRL1_CHARGING_THRESH_10PERC 0b00000000
#define AXP192_CHARGING_CTRL1_CHARGING_THRESH_MASK 0b00010000
#define AXP192_CHARGING_CTRL1_CURRENT_100mA 0b00000000
#define AXP192_CHARGING_CTRL1_CURRENT_190mA 0b00000001
#define AXP192_CHARGING_CTRL1_CURRENT_280mA 0b00000010
#define AXP192_CHARGING_CTRL1_CURRENT_360mA 0b00000011
#define AXP192_CHARGING_CTRL1_CURRENT_450mA 0b00000100
#define AXP192_CHARGING_CTRL1_CURRENT_550mA 0b00000101
#define AXP192_CHARGING_CTRL1_CURRENT_630mA 0b00000110
#define AXP192_CHARGING_CTRL1_CURRENT_700mA 0b00000111
#define AXP192_CHARGING_CTRL1_CURRENT_780mA 0b00001000
#define AXP192_CHARGING_CTRL1_CURRENT_880mA 0b00001001
#define AXP192_CHARGING_CTRL1_CURRENT_960mA 0b00001010
#define AXP192_CHARGING_CTRL1_CURRENT_1000mA 0b00001011

#define AXP192_CHARGING_CTRL1_CURRENT_MASK 0b00001111

#define AXP192_CHARGING_CTRL2 0x34

#define AXP192_BACKUP_BATT 0x35
#define AXP192_BACKUP_BATT_CHARGING_ENABLE 0b10000000
#define AXP192_BACKUP_BATT_CHARGING_VOLTAGE_2_5V 0b01100000
#define AXP192_BACKUP_BATT_CHARGING_VOLTAGE_3_0V 0b00100000
#define AXP192_BACKUP_BATT_CHARGING_VOLTAGE_3_1V 0b00000000
#define AXP192_BACKUP_BATT_CHARGING_VOLTAGE_MASK 0b01100000
#define AXP192_BACKUP_BATT_CHARGING_CURRENT_400uA 0b00000011
#define AXP192_BACKUP_BATT_CHARGING_CURRENT_200uA 0b00000010
#define AXP192_BACKUP_BATT_CHARGING_CURRENT_100uA 0b00000001
#define AXP192_BACKUP_BATT_CHARGING_CURRENT_50uA 0b00000000
#define AXP192_BACKUP_BATT_CHARGING_CURRENT_MASK 0b00000011

#define AXP192_PEK 0x36
#define AXP192_PEK_SHORT_PRESS_1S 0b11000000
#define AXP192_PEK_SHORT_PRESS_512mS 0b10000000
#define AXP192_PEK_SHORT_PRESS_256mS 0b01000000
#define AXP192_PEK_SHORT_PRESS_128mS 0b00000000
#define AXP192_PEK_SHORT_PRESS_MASK 0b11000000
#define AXP192_PEK_LONG_PRESS_2_5S 0b00110000
#define AXP192_PEK_LONG_PRESS_2_0S 0b00100000
#define AXP192_PEK_LONG_PRESS_1_5S 0b00010000
#define AXP192_PEK_LONG_PRESS_1_0S 0b00000000
#define AXP192_PEK_LONG_PRESS_MASK 0b00110000
#define AXP192_PEK_LONG_PRESS_POWER_OFF 0b00001000
#define AXP192_PEK_PWROK_DELAY_64mS 0b00000100
#define AXP192_PEK_PWROK_DELAY_32mS 0b00000000
#define AXP192_PEK_PWROK_DELAY_MASK 0b00000100
#define AXP192_PEK_POWER_OFF_TIME_12S 0b00000011
#define AXP192_PEK_POWER_OFF_TIME_8S 0b00000010
#define AXP192_PEK_POWER_OFF_TIME_6S 0b00000001
#define AXP192_PEK_POWER_OFF_TIME_4S 0b00000000
#define AXP192_PEK_POWER_OFF_TIME_MASK 0b00000011

#define AXP192_BATT_TEMP_LOW_THRESH 0x38
#define AXP192_BATT_TEMP_HIGH_THRESH 0x39
#define AXP192_BATT_TEMP_HIGH_THRESH_DEFAULT 0b11111100

#define AXP192_IRQ_1_ENABLE 0x40
#define AXP192_IRQ_2_ENABLE 0x41
#define AXP192_IRQ_3_ENABLE 0x42
#define AXP192_IRQ_4_ENABLE 0x43
#define AXP192_IRQ_5_ENABLE 0x4a

#define AXP192_IRQ_1_STATUS 0x44
#define AXP192_IRQ_2_STATUS 0x45
#define AXP192_IRQ_3_STATUS 0x46
#define AXP192_IRQ_4_STATUS 0x47
#define AXP192_IRQ_5_STATUS 0x4d

#define AXP192_IRQ_3_PEK_SHORT_PRESS 0b00000010
#define AXP192_IRQ_3_PEK_LONG_PRESS 0b00000001

#define AXP192_ADC_ACIN_VOLTAGE_H 0x56
#define AXP192_ADC_ACIN_VOLTAGE_L 0x57
#define AXP192_ADC_ACIN_CURRENT_H 0x58
#define AXP192_ADC_ACIN_CURRENT_L 0x59
#define AXP192_ADC_VBUS_VOLTAGE_H 0x5a
#define AXP192_ADC_VBUS_VOLTAGE_L 0x5b
#define AXP192_ADC_VBUS_CURRENT_H 0x5c
#define AXP192_ADC_VBUS_CURRENT_L 0x5d
#define AXP192_ADC_INTERNAL_TEMP_H 0x5e
#define AXP192_ADC_INTERNAL_TEMP_L 0x5f

#define AXP192_ADC_BATT_VOLTAGE_H 0x78
#define AXP192_ADC_BATT_VOLTAGE_L 0x79

#define AXP192_ADC_BATT_POWER_H 0x70
#define AXP192_ADC_BATT_POWER_M 0x71
#define AXP192_ADC_BATT_POWER_L 0x72

#define AXP192_ADC_BATT_CHARGE_CURRENT_H 0x7a
#define AXP192_ADC_BATT_CHARGE_CURRENT_L 0x7b
#define AXP192_ADC_BATT_DISCHARGE_CURRENT_H 0x7c
#define AXP192_ADC_BATT_DISCHARGE_CURRENT_L 0x7d
#define AXP192_ADC_APS_VOLTAGE_H 0x7e
#define AXP192_ADC_APS_VOLTAGE_L 0x7f

#define AXP192_ADC_ENABLE_1 0x82
#define AXP192_ADC_ENABLE_1_BATT_VOL 0b10000000
#define AXP192_ADC_ENABLE_1_BATT_CUR 0b01000000
#define AXP192_ADC_ENABLE_1_ACIN_VOL 0b00100000
#define AXP192_ADC_ENABLE_1_ACIN_CUR 0b00010000
#define AXP192_ADC_ENABLE_1_VBUS_VOL 0b00001000
#define AXP192_ADC_ENABLE_1_VBUS_CUR 0b00000100
#define AXP192_ADC_ENABLE_1_APS_VOL 0b00000010
#define AXP192_ADC_ENABLE_1_TS_PIN 0b00000001

#define AXP192_ADC_ENABLE_2 0x83
#define AXP192_ADC_ENABLE_2_TEMP_MON 0b10000000
#define AXP192_ADC_ENABLE_2_GPIO0 0b00001000
#define AXP192_ADC_ENABLE_2_GPIO1 0b00000100
#define AXP192_ADC_ENABLE_2_GPIO2 0b00000010
#define AXP192_ADC_ENABLE_2_GPIO3 0b00000001

#define AXP192_ADC_TS 0x84
#define AXP192_ADC_TS_SAMPLE_200HZ 0b11000000
#define AXP192_ADC_TS_SAMPLE_100HZ 0b10000000
#define AXP192_ADC_TS_SAMPLE_50HZ 0b01000000
#define AXP192_ADC_TS_SAMPLE_25HZ 0b00000000
#define AXP192_ADC_TS_SAMPLE_MASK 0b11000000
#define AXP192_ADC_TS_OUT_CUR_80uA 0b00110000
#define AXP192_ADC_TS_OUT_CUR_60uA 0b00100000
#define AXP192_ADC_TS_OUT_CUR_40uA 0b00010000
#define AXP192_ADC_TS_OUT_CUR_20uA 0b00000000
#define AXP192_ADC_TS_OUT_CUR_MASK 0b00110000
#define AXP192_ADC_TS_PIN_TEMP_MON 0b00000000
#define AXP192_ADC_TS_PIN_EXTERN_ADC 0b00000100
#define AXP192_ADC_TS_PIN_OUT_ALWAYS 0b00000011
#define AXP192_ADC_TS_PIN_OUT_SAVE_ENG 0b00000010
#define AXP192_ADC_TS_PIN_OUT_CHG 0b00000001
#define AXP192_ADC_TS_PIN_OUT_DIS 0b00000000
#define AXP192_ADC_TS_PIN_OUT_MASK 0b00000011

#define AXP192_GPIO0_FUNCTION 0x90
#define AXP192_GPIO0_FUNCTION_FLOATING 0b00000111
#define AXP192_GPIO0_FUNCTION_LOW_OUTPUT 0b00000101
#define AXP192_GPIO0_FUNCTION_ADC_INPUT 0b00000100
#define AXP192_GPIO0_FUNCTION_LDO_OUTPUT 0b00000010
#define AXP192_GPIO0_FUNCTION_GENERAL_INPUT 0b00000001
#define AXP192_GPIO0_FUNCTION_OPEN_DRAIN_OUTPUT 0b00000000

#define AXP192_GPIO0_LDO_VOLTAGE 0x91
#define AXP192_GPIO0_LDO_VOLTAGE_3_3V 0b11110000
#define AXP192_GPIO0_LDO_VOLTAGE_2_8V 0b10100000
#define AXP192_GPIO0_LDO_VOLTAGE_1_8V 0b00000000


#define AXP192_GPIO1_FUNCTION 0x92
#define AXP192_GPIO1_FUNCTION_FLOATING 0b00000111
#define AXP192_GPIO1_FUNCTION_LOW_OUTPUT 0b00000101
#define AXP192_GPIO1_FUNCTION_ADC_INPUT 0b00000100
#define AXP192_GPIO1_FUNCTION_PWM1_OUTPUT 0b00000010
#define AXP192_GPIO1_FUNCTION_GENERAL_INPUT 0b00000001
#define AXP192_GPIO1_FUNCTION_OPEN_DRAIN_OUTPUT 0b00000000


#define AXP192_GPIO2_FUNCTION 0x93
#define AXP192_GPIO2_FUNCTION_FLOATING 0b00000111
#define AXP192_GPIO2_FUNCTION_LOW_OUTPUT 0b00000101
#define AXP192_GPIO2_FUNCTION_ADC_INPUT 0b00000100
#define AXP192_GPIO1_FUNCTION_PWM2_OUTPUT 0b00000010
#define AXP192_GPIO2_FUNCTION_GENERAL_INPUT 0b00000001
#define AXP192_GPIO2_FUNCTION_OPEN_DRAIN_OUTPUT 0b00000000

#define AXP192_PWM1_DUTY_RATIO 0x9A

#endif