|
本帖最后由 xsh2005105326 于 2020-12-30 14:19 编辑
上一篇帖子说到了TPS61170这货:基于SEPIC拓扑结构实现升降压DC To DC的设计
可以当作数控电源使用,调压控制方式有两种:PWM和ES单线模式。上次测试PWM模式下发现纹波较大,这次换ES模式,实际测试纹波有下降,参考下图
另外说说这个ES协议时许:
1. 首先使能进入ES检测窗口,不低于1ms,我程序1.5ms左右
2. CTRL脚拉高260us后拉低260us,再拉高1ms,进入ES模式
3. 发送ES起始信号:CTRL拉高2us以上,再拉低
4. 发送一个字节地址,0x72;
5. 发送结束信号:CTRL拉低2us以上,再拉高;
6. 发送调压数据,bit7 是RFA,0代表不需要TPS61170反馈,1意味着发送完数据后会返回ACKN信号;bit6和bit5是A1,A0地址信号,默认0,bit4~bit0是对应的FB电压值,0到1.229V,共32级
逻辑0:先低电平后高电平,低电平时间是高电平的2倍,高电平时间2-180us
逻辑1:先低电平后高电平,高电平时间是低电平的2倍,低电平时间2-180us
实测参考程序如下:
注:Timer0_Delay100us函数实际是10us左右
#define set_PWM P15 = 1;
#define clr_PWM P15 = 0;
#define PWM_STAR { set_PWM;Timer0_Delay100us(3);clr_PWM;}//命令起始位,拉高最小2us,此处30us
#define PWM_STOP { clr_PWM;Timer0_Delay100us(3);set_PWM;}//命令结束位,拉低最小2us,最大360us,此处30us
#define PWM_H { clr_PWM;Timer0_Delay100us(1);set_PWM;Timer0_Delay100us(3);}//数据1
#define PWM_L { clr_PWM;Timer0_Delay100us(3);set_PWM;Timer0_Delay100us(1);}//数据0
void volset(UINT8 addr,UINT8 vol_data)
{
UINT8 i;
//进入ES模式
set_PWM;
Timer0_Delay100us(30);//延时300us
clr_PWM;
Timer0_Delay100us(30);//延时300us
set_PWM;
Timer0_Delay100us(100);//延时1ms
/***************
发送8位地址
****************/
PWM_STAR;
for(i = 0;i < 8;i ++)
{
if(addr&0x80)
{
PWM_H;
}
else
{
PWM_L;
}
addr = addr << 1;
}
PWM_STOP;
/***************
发送8位数据
****************/
PWM_STAR;
for(i = 0;i < 8;i ++)
{
if(vol_data&0x80)
{
PWM_H;
}
else
{
PWM_L;
}
vol_data = vol_data << 1;
}
PWM_STOP;
} |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有帐号?注册
x
阿莫论坛20周年了!感谢大家的支持与爱护!!
知道什么是神吗?其实神本来也是人,只不过神做了人做不到的事情 所以才成了神。 (头文字D, 杜汶泽)
|