# SDK-SS88x-DRIVES **Repository Path**: sunny.guo/sdk-ss88x-drives ## Basic Information - **Project Name**: SDK-SS88x-DRIVES - **Description**: 昇生微SS88X(880x/881x/888x)系列的驱动 - **Primary Language**: C - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2022-03-25 - **Last Updated**: 2022-08-25 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # SDK-SS88x-DRIVES #### 介绍 昇生微SS88X系列的驱动, 通过配置config.h完成对Charger、IO的功能配置,本部分仅包含底层驱动,相关应用的参考Core #### 文件架构 [core.h](inc/core.h) - Drives 所有头文件集合 [mcu_regs.h](inc/mcu_regs.h) - #include or #include [reg_ss888x.h](inc/types.h) - SS881x reg definition [reg_ss881x.h](inc/types.h) - SS888x reg definition [types.h](inc/types.h) - types definition 1. adc,包含adc模块初始化,相关调用接口 - [adc.h](inc/adc.h) - [使用流程](doc/adc.md) 2. cc,包含smart pwm模块初始化,相关调用接口 - [cc.h](inc/cc.h) - [使用流程](doc/cc.md) 3. charging,包含charging模块初始化,相关调用接口 - [charging.h](inc/charging.h) - [使用流程](doc/charging.md) 4. cmp,包含比较器模块初始化,相关调用接口 - [cmp.h](inc/cmp.h) 5. crc,包含crc 8/16校验函数 - [crc.h](inc/crc.h) 6. drive,包含IO的配置初始化(功能、上下拉配置)、对其他初始化的调用 - [drive.h](inc/drive.h) 7. eeprom,包含EEPROM模块相关调用接口(仅对SS881x有效) - [eeprom.h](inc/eeprom.h) 8. efr,包含efr寄存器相关调用接口 - [efr.h](inc/efr.h) 9. gpio,包含gpio相关调用接口(占用空间较大,建议调试和SS888x使用) - [gpio.h](inc/gpio.h) 10. ldo,包含LDO模块相关调用接口(仅对SS888x有效) - [ldo.h](inc/ldo.h) 11. power supply,包含PMU模块初始化,STOP模式唤醒源配置 - [power_supply.h](inc/power_supply.h) 12. pwm,包含PWM模块初始化,相关调用接口 - [pwm.h](inc/pwm.h) 13. si2c,包含软件模拟IIC模块初始化,相关调用接口 - [si2c.h](inc/si2c.h) 14. spi,包含SPI(包含软件模式)模块初始化,相关调用接口(仅对SS888x有效) - [spi.h](inc/spi.h) 15. system,包含系统时钟等模块初始化,相关调用接口 - [system.h](inc/system.h) 16. pfo,包含PFO模块初始化,相关调用接口 - [pfo.h](inc/pfo.h) - [使用流程](doc/pfo.md) 17. timer,包含定时器模块初始化,相关调用接口(PWM,CC频率设置) - 定时器配置 - 配置system_timer/timer0/timer1/timer2, - 分频、定时器值 - [timer.h](inc/timer.h) 18. uart,包含串口模块初始化,相关调用接口 - [uart.h](inc/uart.h) - [使用流程](doc/uart.md) 19. uprint,包含串口打印,相关调用接口 - [uprint.h](inc/uprint.h) 20. xdata,包含Xdata初始化,相关调用接口(仅对SS888x有效,需要项目设置配合) - [xdata.h](inc/xdata.h) #### 使用说明 ##### IO使用 ```C /** * P10 IO状态获取,其它IO依次类推:_P01/_P21... * P10切换都IO模式-->P10切换到输入状态-->io电平获取 * 已配置,无更改,可以直接最后一步 * */ uint8_t io_status; _P10_IO_MODE(); _P10_IO_INPUT(); io_status = _P10; /** * P10 IO输出高低电平 * P10切换都IO模式-->P10切换到输出状态-->io电平输出 * 已配置,无更改,可以直接最后一步 * */ _P10_EN(high); // _P10_EN(1); _P10_EN(low); // _P10_EN(0); _P10_IO_MODE(); _P10_IO_OUTPUT(); /** * P10 切换到CC模式 * 对应的CC模块打开,切换仅是IO的模式,并不会改变CC模块 * * */ _P10_IO_CC1(); /** * P01 切换到PWM模式 * 对应的PWM模块打开,切换仅是IO的模式,并不会改变PWM模块 * * */ _P01_IO_PWM1(); /** * P06 切换到TX/RX模式 * 对应的UART模块打开,切换仅是IO的模式,并不会改变UART模块 * * */ _P06_IO_TX0(); _P06_IO_RX0(); /** * P27 切换到TX/RX模式 * 对应的UART模块打开,切换仅是IO的模式,并不会改变UART模块 * 仅限于ss888x * */ _P27_IO_TX1(); _P27_IO_RX1(); /** * P06 切换到ADC模式 * 对应的ADC模块打开,切换仅是IO的模式,并不会改变ADC模块 * * */ _P06_IO_AN4(); /** * P10 切换到外部中断模式 * 对应的外部中断模块打开,切换仅是IO的模式,并不会改变外部中断模块 * * */ _P10_IO_EINT0(); /** * P03 change to RESET(low active) mode * * */ _P03_IO_RESET(); /** * P07 change to PFO mode * * */ _P07_IO_PFO(); /** * 如果需要将IO将特殊功能关掉 * 可以将IO设置成GPIO模式 * 如需默认电平,则可以设置成输出模式 * 注意:此时该单元的功能还在运行,改变的只是IO的映射功能 * 例如: * PFO --> close * _P10_IO_MODE(); * * open PFO * _P07_IO_PFO(); * 这样可以节省模块单元的初始化时间 * * */ _P10_EN(high); // _P10_EN(1); //or _P10_EN(low); // _P10_EN(0); _P10_IO_MODE(); _P10_IO_OUTPUT(); ``` ##### 中断开关 ```C /** * 开关总中断 * 系统调用总中断,为了避免执行错误,应使用以下接口 * IRQ_ENABLE() * IRQ_DISABLE() * */ _EA_INTERRUPT(SET); _EA_INTERRUPT(RESET); // 开关charger中断 _ECHG_INTERRUPT(SET); _ECHG_INTERRUPT(RESET); // 开关比较器中断 _ECMP_INTERRUPT(SET); _ECMP_INTERRUPT(RESET); // 开关IIC0中断 _EIIC0_INTERRUPT(SET); _EIIC0_INTERRUPT(RESET); // 开关UART0中断 _EUART0_INTERRUPT(SET); _EUART0_INTERRUPT(RESET); // 开关定时器0中断 _TIMER0_INTERRUPT(SET); _TIMER0_INTERRUPT(RESET); // 开关定时器1中断 _TIMER1_INTERRUPT(SET); _TIMER1_INTERRUPT(RESET); // 开关定时器2中断 _TIMER2_INTERRUPT(SET); _TIMER2_INTERRUPT(RESET); // 开关定时器2捕获器0中断 _TIMER2_CAPTURE0_INTERRUPT(SET); _TIMER2_CAPTURE0_INTERRUPT(RESET); // 开关定时器2捕获器1中断 _TIMER2_CAPTURE1_INTERRUPT(SET); _TIMER2_CAPTURE1_INTERRUPT(RESET); // 开关定时器2捕获器2中断 _TIMER2_CAPTURE2_INTERRUPT(SET); _TIMER2_CAPTURE2_INTERRUPT(RESET); // 开关定时器2捕获器3中断 _TIMER2_CAPTURE3_INTERRUPT(SET); _TIMER2_CAPTURE3_INTERRUPT(RESET); // 开关系统定时器中断 _SYS_TIMER_INTERRUPT(SET); _SYS_TIMER_INTERRUPT(RESET); // 开关低电压压中断 _ELV_INTERRUPT(SET); _ELV_INTERRUPT(RESET); // 开关过温中断 _EOT_INTERRUPT(SET); _EOT_INTERRUPT(RESET); // 开关VIN过流中断 _EOC_INTERRUPT(SET); _EOC_INTERRUPT(RESET); // 开关VINguoya 中断 _EOV_INTERRUPT(SET); _EOV_INTERRUPT(RESET); // 开关ADC中断 _EADC_INTERRUPT(SET); _EADC_INTERRUPT(RESET); // 开关外部中断0 _EX0_INTERRUPT(SET); _EX0_INTERRUPT(RESET); // 开关外部中断1 _EX1_INTERRUPT(SET); _EX1_INTERRUPT(RESET); // 以下仅使用SS888x // 开关UART1中断 _EUART1_INTERRUPT(SET); _EUART1_INTERRUPT(RESET); // 开关IIC1中断 _EIIC1_INTERRUPT(SET); _EIIC1_INTERRUPT(RESET); // 开关SPI中断 _ESPI_INTERRUPT(SET); _ESPI_INTERRUPT(RESET); // 开关SSP中断 _ESSP_INTERRUPT(SET); _ESSP_INTERRUPT(RESET); ``` #### 参与贡献 1. Fork 本仓库 2. 新建 Feat_xxx 分支 3. 提交代码 4. 新建 Pull Request