目录
SC8721芯片简介
- 输入电压:2.7V~22V
- 输出电压:2.7V~22V
- 控制方式:外部电阻或IIC
- 电路方便:内置mos,外围电路简单
详细信息可自行查看数据手册,
外围电路
电路注意事项,根据手册描述,连接单片机共需要4个管脚,SCL,SDA,CE,CSO,需注意CSO管脚为ADC输入管脚,用于检测电流输出大小。
IIC控制
设备地址
寄存器信息
详细信息可自行查看数据手册,
详细信息可自行查看数据手册,
详细信息可自行查看数据手册,
控制代码
#include "sc8721.h"
#include "delay.h"
#include "myiic.h"
#define SC8721_IIC_DEVICE_ADDR_8BIT 0xC4
#define SC8721_REG_CSO 0x01
#define SC8721_REG_SLOPE_COMP 0x02
#define SC8721_REG_VOUT_SET_MSB 0x03
#define SC8721_REG_VOUT_SET_LSB 0x04
#define SC8721_REG_GLOBAL_CTRL 0x05
#define SC8721_REG_SYS_SET 0x06
#define SC8721_REG_RESERVED 0x07
#define SC8721_REG_FREQ_SET 0x08
#define SC8721_REG_STATUS_1 0x09
#define SC8721_REG_STATUS_2 0x0A
u8 SC8721_ReadReg(u8 reg) {
u8 temp = 0;
IIC_Start();
IIC_Send_Byte(SC8721_IIC_DEVICE_ADDR_8BIT);
IIC_Wait_Ack();
IIC_Send_Byte(reg);
IIC_Wait_Ack();
IIC_Start();
IIC_Send_Byte(SC8721_IIC_DEVICE_ADDR_8BIT + 1);
IIC_Wait_Ack();
temp = IIC_Read_Byte(0);
IIC_Stop();
return temp;
}
static void SC8721_WriteReg(u8 reg, u8 dataa) {
IIC_Start();
IIC_Send_Byte(SC8721_IIC_DEVICE_ADDR_8BIT);
IIC_Wait_Ack();
IIC_Send_Byte(reg);
IIC_Wait_Ack();
IIC_Send_Byte(dataa);
IIC_Wait_Ack();
IIC_Stop();
}
void SC8721_SetVoltage(uint16_t mv) {
uint16_t temp_20mv = 0;
uint8_t fb_dir = 0;
if (mv >= 5000) {
temp_20mv = (mv - 5000) / 20;
} else {
fb_dir = 1;
temp_20mv = (5000 - mv) / 20;
}
delay_ms(2);
SC8721_WriteReg(SC8721_REG_VOUT_SET_MSB, (temp_20mv >> 2));
delay_ms(2);
if (0 == fb_dir) {
SC8721_WriteReg(SC8721_REG_VOUT_SET_LSB, (temp_20mv & 0x03) | 0x18);
} else {
SC8721_WriteReg(SC8721_REG_VOUT_SET_LSB, (temp_20mv & 0x03) | 0x1C);
}
// delay_ms(2);
// SC8721_WriteReg(SC8721_REG_GLOBAL_CTRL, 0x02);
// delay_ms(2);
}
void SC8721_LoadVoltage(void) {
delay_ms(2);
SC8721_WriteReg(SC8721_REG_GLOBAL_CTRL, 0x02);
delay_ms(2);
}
测试板效果图
使用STM32F103C8T6+SC8721+CH224K做了一个升降压测试模块,在测试过程中发现,输出电压只要超过10以上,有几率电源会保护,或者直接烧SC8721,一直没发现到底是什么原因,若有同学完成测试,欢迎留言评论指正。
总结
该芯片带有电流保护,且控制方便,非常适合做成一个小的电源模块使用。
标签:delay,temp,SC8721,IIC,驱动,REG,define From: https://www.cnblogs.com/c951/p/18009218