打印
[STM32F1]

想输出一个幅值3.3V的正弦波,我的程序错在哪里?

[复制链接]
1637|14
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
sdtsd|  楼主 | 2014-8-18 14:41 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
想输出一个幅值3.3V的正弦波,我的程序错在哪里?
#include "stdio.h"
#include "math.h"
#include "sys.h"
#include "dac.h"

#define pi 3.14159

int main(void)
{
        int m;
        int x[720];
       
        Dac1_Init();       
       
        for(m=0;m<720;m++)
        {
                x[m]=4095*sin(2*pi*m/720);
               
          DAC_SetChannel1Data(DAC_Align_12b_R, x[m]);
        }
}

沙发
songchenping| | 2014-8-18 14:44 | 只看该作者
你用的什么DAC芯片啊?多少位的?是否超出步进了?

使用特权

评论回复
板凳
sdtsd|  楼主 | 2014-8-18 14:48 | 只看该作者
songchenping 发表于 2014-8-18 14:44
你用的什么DAC芯片啊?多少位的?是否超出步进了?

STM32呀,12位,没有超出步进吧

使用特权

评论回复
地板
IJK| | 2014-8-18 17:10 | 只看该作者
1. 问题是什么?
2. DAC_SetChannel1Data 之后,似乎要有1条输出指令,还应该有一定延时

使用特权

评论回复
5
mmuuss586| | 2014-8-18 18:20 | 只看该作者

1、DA有输出吗?
还是一直输出不变啊?

使用特权

评论回复
6
sdtsd|  楼主 | 2014-8-18 19:10 | 只看该作者
mmuuss586 发表于 2014-8-18 18:20
1、DA有输出吗?
还是一直输出不变啊?

没有输出,而且我要是连续的正弦波,那个正弦函数部分表达式应该怎么写?

使用特权

评论回复
7
mmuuss586| | 2014-8-18 19:14 | 只看该作者
sdtsd 发表于 2014-8-18 19:10
没有输出,而且我要是连续的正弦波,那个正弦函数部分表达式应该怎么写? ...

先让DA有正确的输出;
正弦波的表格,程序初始化的时候,用函数先生成到数组;

主程序产生正弦波,查表就好了,这样速度快点;

使用特权

评论回复
8
icecut| | 2014-8-18 19:29 | 只看该作者
同意楼上.多浪费多少条计算啊

使用特权

评论回复
9
yangbinge| | 2014-8-19 08:16 | 只看该作者
用什么测的? 想设定正弦波的频率是多少?

使用特权

评论回复
10
戈卫东| | 2014-8-19 08:25 | 只看该作者
正弦的值有负的吧?
把负值传过去是不会得到负的输出的。

使用特权

评论回复
11
sdtsd|  楼主 | 2014-8-19 09:40 | 只看该作者
本帖最后由 sdtsd 于 2014-8-19 09:50 编辑
yangbinge 发表于 2014-8-19 08:16
用什么测的? 想设定正弦波的频率是多少?

想设定正弦波频率为1KHZ,如何用sin函数写出表达式

使用特权

评论回复
12
yangbinge| | 2014-8-19 09:56 | 只看该作者
本帖最后由 yangbinge 于 2014-8-19 09:58 编辑

我觉得还是如楼上的所说,查表得到值,会好一点。
具体输出时要加定时器,根据频率、还有一个周期有几个数值来确定  时间间隔,定时输出正弦波的数值。

使用特权

评论回复
13
luckypwp| | 2014-8-19 11:22 | 只看该作者
没有加电压偏置,如何输出负电压。
计算太慢了,只能实验室玩玩,要实用建议查表吧。

使用特权

评论回复
14
zh_sl| | 2014-8-19 12:13 | 只看该作者
程序没有大循环

使用特权

评论回复
15
cool_coder| | 2014-8-19 13:27 | 只看该作者
本帖最后由 cool_coder 于 2014-8-19 13:28 编辑

改成这样试试:

unsigned short x[m];
...
x[m]=(unsigned short)(2048*(1+sin(2*pi/720*m)));

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

13

主题

26

帖子

0

粉丝