# SS88x-SDK-EXAMPLE **Repository Path**: sunny.guo/ss88x-sdk-example ## Basic Information - **Project Name**: SS88x-SDK-EXAMPLE - **Description**: 昇生微SS880系列、SS881系列、SS888系列驱动和示例 - **Primary Language**: C - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2022-04-12 - **Last Updated**: 2022-05-18 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 使用说明 ```C # 克隆项目 git clone https://gitee.com/sunny.guo/ss88x-sdk-example.git ss88x-sdk-example # 初始化子模块 git submodule init # 更新子模块 git submodule update # or 更新子模块为远程项目的最新版本 git submodule update --remote # 或者使用递归克隆整个项目 git clone https://gitee.com/sunny.guo/ss88x-sdk-example.git --recursive ``` 打开Prj/ss80x.uvproj即可 ### [VS code配置说明](Doc/vscode.md) ### [keil配置说明](Doc/keil.md) ### 系统配置 使用[config.h](Core/inc/config.h), 对系统进行初步配置,编译后即可运行基本功能。 由于本sdk采用约定配置,如果需要对[定时器](#timer)、[STOP唤醒源](#power_supply)等进行调整,请在Drives文件夹下找到相应的模块进行配置。 示例操作和Demo板可参考[示例](Doc/example.md) *** 文件架构分为**Core**和**Drives** ### [app文件夹](#Core) 此文件夹,主要放置主要放置应用的,如显示、和中断处理等 ### [Drives文件夹](#Drives) 此文件夹,驱动函数,最好通过相应的函数和宏定义进行调用,后续更新主要集中在此文件夹 ### [config配置](Core/inc/config.h) #### Application config(应用配置,用户自定义) ```C /* Battery's full voltage in mV */ #define CONFIG_BAT_FULL_VOLTAGE (4450) /* DCIN charger max current, unit is mA*/ #define CONFIG_DC_CHARGER_MAX_CURRENT (450) /* 0, CHIP_SS880X; 1, CHIP_SS881X, 2, CHIP_SS888X*/ #define CONFIG_IC_TYPE (CHIP_SS881X) /* * 0, do not enable debug; * 1, using simulator debug; * 2, using uart debug */ #define CONFIG_USING_DEBUG (2) ``` ***CONFIG_IC_TYPE*** 是由于880、881和888系列芯片的资源不一致,做了相应配置 #### GPIO 模式配置 ```C /**============================================================================= * GPIO config * ============================================================================= * GPIO_NO_USE * GPIO_MODE_OUTPUT !< Output Push Pull Mode * GPIO_MODE_INPUT !< Input Floating Mode * GPIO_MODE_NTC !< NTC Mode * GPIO_MODE_ADC !< ADC Mode * GPIO_MODE_PWM !< PWM Mode * GPIO_MODE_CC !< CC Mode * GPIO_MODE_CMP !< CMP Mode * GPIO_MODE_TS !< TS Mode * GPIO_MODE_TX0 !< UART0 TX Mode * GPIO_MODE_RX0 !< UART0 RX Mode * GPIO_MODE_MT0 !< UART0 RX/TX Mode * GPIO_MODE_TX1 !< UART1 TX Mode * GPIO_MODE_RX1 !< UART1 RX Mode * GPIO_MODE_MT1 !< UART1 RX/TX Mode * GPIO_MODE_EINT !< EINT Mode *===========================================================================*/ #define GPIO_P00_MODE (GPIO_MODE_PWM) #define GPIO_P01_MODE (GPIO_MODE_INPUT) #define GPIO_P02_MODE (GPIO_MODE_OUTPUT) #define GPIO_P03_MODE (GPIO_MODE_INPUT) #define GPIO_P04_MODE (GPIO_MODE_INPUT) #define GPIO_P05_MODE (GPIO_MODE_INPUT) #define GPIO_P06_MODE (GPIO_MODE_TX0) #define GPIO_P07_MODE (GPIO_MODE_CC) #define GPIO_P10_MODE (GPIO_MODE_INPUT) #define GPIO_P11_MODE (GPIO_MODE_RX0) #define GPIO_P12_MODE (GPIO_MODE_INPUT) #define GPIO_P13_MODE (GPIO_MODE_INPUT) #define GPIO_P14_MODE (GPIO_MODE_EINT) #define GPIO_P15_MODE (GPIO_MODE_OUTPUT) #define GPIO_P16_MODE (GPIO_MODE_OUTPUT) #define GPIO_P17_MODE (GPIO_MODE_OUTPUT) #define GPIO_P20_MODE (GPIO_MODE_TX1) #define GPIO_P21_MODE (GPIO_MODE_INPUT) #define GPIO_P22_MODE (GPIO_MODE_INPUT) #define GPIO_P23_MODE (GPIO_MODE_INPUT) #define GPIO_P24_MODE (GPIO_MODE_INPUT) #define GPIO_P25_MODE (GPIO_MODE_INPUT) #define GPIO_P26_MODE (GPIO_MODE_OUTPUT) #define GPIO_P27_MODE (GPIO_MODE_RX1) // P30 default open drain #define GPIO_P30_MODE (GPIO_MODE_INPUT) /**=========================================================================== * GPIO_NOPULL !< No Pull-up or Pull-down activation * GPIO_PULLUP !< Pull-up activation * GPIO_PULLDOWN !< Pull-down activation *===========================================================================*/ #define GPIO_P00_PULL (GPIO_NOPULL) #define GPIO_P01_PULL (GPIO_NOPULL) #define GPIO_P02_PULL (GPIO_NOPULL) #define GPIO_P03_PULL (GPIO_NOPULL) #define GPIO_P04_PULL (GPIO_NOPULL) #define GPIO_P05_PULL (GPIO_NOPULL) #define GPIO_P06_PULL (GPIO_NOPULL) #define GPIO_P07_PULL (GPIO_NOPULL) #define GPIO_P10_PULL (GPIO_NOPULL) #define GPIO_P11_PULL (GPIO_NOPULL) #define GPIO_P12_PULL (GPIO_NOPULL) #define GPIO_P13_PULL (GPIO_NOPULL) #define GPIO_P14_PULL (GPIO_NOPULL) #define GPIO_P15_PULL (GPIO_NOPULL) #define GPIO_P16_PULL (GPIO_NOPULL) #define GPIO_P17_PULL (GPIO_NOPULL) #define GPIO_P20_PULL (GPIO_NOPULL) #define GPIO_P21_PULL (GPIO_NOPULL) #define GPIO_P22_PULL (GPIO_NOPULL) // P23~P30 no support pulldown #define GPIO_P23_PULL (GPIO_NOPULL) #define GPIO_P24_PULL (GPIO_NOPULL) #define GPIO_P25_PULL (GPIO_NOPULL) #define GPIO_P26_PULL (GPIO_NOPULL) #define GPIO_P27_PULL (GPIO_NOPULL) #define GPIO_P30_PULL (GPIO_NOPULL) ``` GPIO的配置选项,在这里配置好,相应的功能会自动打开。 如果没有配置,Drives中的驱动有可能没有展开,此处为了节省空间,没有次需求,可到具体的驱动出,将宏定义的预编译删除。 如果有复用的功能IO,也只会打开一种,串口配置成MT(半双工,单线),切换RX/TX时需要手动切换。 *** # 目录结构 *** ## Core - [config.h](Core/inc/config.h) - ***application config*** ### main - [main.c](Core/src/main.c) - all initialization, and the main loop ### EXAMPLE - [example.h](Core/inc/example.h) - xxx - [EXAMPLE](Core/src/EXAMPLE) - [smooth_estimation_battery.c](Core/src/EXAMPLE/example.c) - xx ### common - [COMMON](Core/src/COMMON) 一些常用的模块 #### debug - [debug.h](Core/inc/debug.h) - debug config - [debug.c](Core/src/COMMON/debug.c) - define printf APIs #### init - [init.h](Core/inc/init.h) - init value - [init.c](Core/src/COMMON/init.c) - all initialization function #### interrupt - [interrupt.h](Core/inc/interrupt.h) - interrupt config - [interrupt.c](Core/src/COMMON/interrupt.c) - interrupt handle ## Drives 可参考[驱动说明](Drives/README.md) ## library - [lib](lib) > library ## project - [prj](prj) > project files - [Listings](prj/Listings) - automatically generate - [Object](prj/Object) - automatically generate - [Output](prj/Output) - automatically generate - [ss88x_fw.bin](prj/Output/ss88x_fw.bin) is commonly used to burn fireware