搜索
bottom↓
回复: 4

请坛中的兄弟指点如何在春风电源2。2中的Key2Sign实现18V-30V的正弦波电压或特定数

[复制链接]

出0入0汤圆

发表于 2011-10-25 19:55:37 | 显示全部楼层 |阅读模式
我认识了点汇编,并未用过STM32编程,但又想开发数控电源的功能,请坛友帮忙,我试写如下程序:
/* Private variables ---------------------------------------------------------*/  
const unsigned int sin_table[256]=  
{  
0x8000,0x8323,0x8647,0x8969,0x8c8a,0x8fa9,0x92c5,0x95df,0x98f5,0x9c07,0x9f16,0xa21f,  
0xa523,0xa821,0xab19,0xae0b,0xb0f5,0xb3d8,0xb6b3,0xb985,0xbc4f,0xbf0f,0xc1c6,0xc472,  
0xc714,0xc9ab,0xcc37,0xceb7,0xd12a,0xd392,0xd5ec,0xd839,0xda79,0xdcaa,0xdece,0xe0e2,  
0xe2e8,0xe4df,0xe6c6,0xe89d,0xea64,0xec1b,0xedc1,0xef56,0xf0da,0xf24c,0xf3ad,0xf4fd,  
0xf63a,0xf765,0xf87d,0xf983,0xfa76,0xfb57,0xfc24,0xfcde,0xfd85,0xfe19,0xfe99,0xff06,  
0xff5f,0xffa5,0xffd7,0xfff5,0xffff,0xfff6,0xffd9,0xffa9,0xff64,0xff0d,0xfea1,0xfe22,  
0xfd90,0xfcea,0xfc31,0xfb65,0xfa86,0xf993,0xf88f,0xf777,0xf64e,0xf512,0xf3c4,0xf264,  
0xf0f2,0xef70,0xeddc,0xec37,0xea81,0xe8bb,0xe6e5,0xe4ff,0xe309,0xe104,0xdef1,0xdcce,  
0xda9e,0xd85f,0xd613,0xd3b9,0xd153,0xcee0,0xcc61,0xc9d6,0xc740,0xc49e,0xc1f3,0xbf3d,  
0xbc7d,0xb9b4,0xb6e2,0xb408,0xb125,0xae3c,0xab4a,0xa853,0xa555,0xa251,0x9f48,0x9c3a,  
0x9928,0x9612,0x92f9,0x8fdc,0x8cbe,0x899d,0x867b,0x8357,0x8034,0x7d10,0x79ed,0x76ca,  
0x73a9,0x708a,0x6d6d,0x6a54,0x673d,0x642b,0x611c,0x5e12,0x5b0e,0x580f,0x5517,0x5225,  
0x4f3a,0x4c57,0x497b,0x46a8,0x43de,0x411d,0x3e66,0x3bb9,0x3916,0x367e,0x33f2,0x3171,  
0x2efd,0x2c95,0x2a3a,0x27ec,0x25ab,0x2379,0x2154,0x1f3f,0x1d38,0x1b40,0x1958,0x1780,  
0x15b8,0x1400,0x1259,0x10c3,0xf3e,0xdca,0xc68,0xb18,0x9d9,0x8ad,0x794,0x68c,  
0x598,0x4b6,0x3e8,0x32c,0x284,0x1ef,0x16d,0xff,0xa5,0x5e,0x2b,0xb,  
0x0,0x8,0x23,0x53,0x96,0xec,0x156,0x1d4,0x265,0x30a,0x3c2,0x48d,  
0x56a,0x65b,0x75f,0x875,0x99d,0xad8,0xc25,0xd84,0xef4,0x1076,0x1209,0x13ad,  
0x1561,0x1726,0x18fb,0x1ae0,0x1cd5,0x1ed9,0x20eb,0x230d,0x253d,0x277a,0x29c6,0x2c1e,  
0x2e84,0x30f6,0x3374,0x35fe,0x3894,0x3b35,0x3de0,0x4095,0x4354,0x461c,0x48ee,0x4bc8,  
0x4ea9,0x5193,0x5483,0x577b,0x5a78,0x5d7c,0x6084,0x6392,0x66a4,0x69b9,0x6cd3,0x6fef,  
0x730d,0x762e,0x7950,0x7c73  
};  

int sin-out(void)

unsigned int i
while(l)
{  
for(i=0;i<256;i++)  
{  
DAC_SetChannel1Data(DAC_Align_12b_L, sin_table);  
//DAC_SetChannel2Data(DAC_Align_12b_L, 0xffff);  
DelayI(20)  
}

出0入0汤圆

发表于 2011-10-25 22:14:00 | 显示全部楼层
大体思路是这样,事先存好一个电压和持续时间信息的表,依次去读并输出。

为了波形精确,应单独设个定时器,DA输出放在定时中断里。

我也没用春风电源试过,纸上谈兵。

出0入0汤圆

发表于 2011-10-26 11:23:26 | 显示全部楼层
沙发

出0入0汤圆

 楼主| 发表于 2011-10-27 20:02:02 | 显示全部楼层
我看了几次春风电源的程序,是不是将正弦波幅值量化为浮点数再转为0X的数制的数组,然后依序执行类似SetDacU(),OutPut()子函数便可以输出正弦波?

出0入0汤圆

 楼主| 发表于 2011-10-28 22:09:19 | 显示全部楼层
另一试写的程序;
void sinout (void)
{
unsigned int i;

for(i=0;i<32;i++)
Dacu=(u16)sin_table[];
DacI=500;
Out_on();
delayI(10);
SetDacu((float)Dacu/100);
SetDacI((float)DacI/1000);
delayI(1000);
}
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-4-29 17:20

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表