您的位置: OpenADSP社区论坛 -> Blackfin专区 -> 新手上路 -> 【求助】  如何通过UART输出sin正弦波并在示... 
本帖共有1080个阅读者
发表帖子 发表投票 回复主题
【求助】 如何通过UART输出sin正弦波并在示波器上显示
jian2013(论坛新手)
jian2013
头衔:社区公民
帮派:无帮无派
帖数:24
金钱:322
积分:32
注册时间:2013/1/7
楼主信息 | 留言 | Email | 主页 | 编辑 | 管理 | 离线
【求助】 如何通过UART输出sin正弦波并在示波器上显示

我用了两种方法可是都不能在示波器上显示出正弦波:

1、头文件添加了#include <math.h>, 部分主要函数如下:

float Txbuf_1[8]={1,1,1,1,1,1,1,1};

float Txbuf_2[8], PI=3.1415;

which(1)

{

Txbuf_2[8]=sin(1000*PI)*Txbuf_1[8];   //因为UART是[7:0]位一起发,所以加了Txbuf_1[8]。

*pUART_THR=Txbuf_2[8];  // 8位一起通过UART的发送寄存器发送出去。

while(!(*pUART_LSR&0x0020)); //等待发送完成。

}

2、头文件也添加了#include <math.h>, 因为根据离散公式sinx=x-x^3/3!+x^5/5!-...+(-1)^(n-1)*x^(2n-1)/(2n-1)!+...   部分主要函数如下:

float Txbuf_1[8]={1,1,1,1,1,1,1,1};

float Txbuf_2[8], PI=3.1415;

which(1)

{

   double result=x,temp=x;
   double den=x,fac=1;
   int n=1,sign=1;

   x=1000*PI
   while((temp>1e-5)||(temp<-1e-5))        
   {
       n++,fac*=n,den*=x;
       n++,fac*=n,den*=x;
       temp=den/fac;sign=-sign;
       result=sign>0?result+temp:result-temp;  //离散公式sinx=x-x^3/3!+x^5/5!-...+(-1)^(n-1)*x^(2n-1)/(2n-1)!+...
   }        

      Txbuf_2[8]=result*Txbuf_1[8];   //result=sin(1000*PI)
       *pUART_THR=Txbuf_2[8];

          while(!(*pUART_LSR&0x0020)); //等待发送完成。

}

以上两种方法编译都没有出错,就是在示波器上显示不出正弦波,如何改正,求高手指点如何通过UART输出正弦波,并在示波器上显示。



这家伙很懒,什么也没有留下!
等级:论坛新手 参考IP地址:*.*.*.*
2013/2/11 16:07:11
xtqbp(论坛新手)
xtqbp
头衔:社区公民
帮派:无帮无派
帖数:18
金钱:194
积分:18
注册时间:2013/2/16
1信息 | 留言 | Email | 主页 | 编辑 | 管理 | 离线
Txbuf_2[8]=sin(1000*PI)*Txbuf_1[8];   //因为UART是[7:0]位一起发,所以加了Txbuf_1[8]。
这个SIN函数能不能直接用呢?!

       n++,fac*=n,den*=x;
       n++,fac*=n,den*=x;
上面这段代码用逗号能行么?!

我也是初学者,正好 也要用到sin函数!

xtqbp
等级:论坛新手 参考IP地址:*.*.*.*
2013/2/20 13:30:19
jian2013(论坛新手)
jian2013
头衔:社区公民
帮派:无帮无派
帖数:24
金钱:322
积分:32
注册时间:2013/1/7
2信息 | 留言 | Email | 主页 | 编辑 | 管理 | 离线

我用逗号编译,也没提示错误啊,改成分号后,结果也一样。

对了,这个感觉错了,本来想用Txbuf_1[8]同时输出8位的,其实这个Txbuf_1[8]只代表数组的一位。


这家伙很懒,什么也没有留下!
等级:论坛新手 参考IP地址:*.*.*.*
2013/2/25 16:25:33
xtqbp(论坛新手)
xtqbp
头衔:社区公民
帮派:无帮无派
帖数:18
金钱:194
积分:18
注册时间:2013/2/16
3信息 | 留言 | Email | 主页 | 编辑 | 管理 | 离线
论坛热度不够啊....

xtqbp
等级:论坛新手 参考IP地址:*.*.*.*
2013/3/4 11:28:42
尊贵身份标志
andy(论坛版主)
andy
头衔:社区公民
帮派:无帮无派
帖数:2287
金钱:11132
积分:2263
注册时间:2011/6/8
4信息 | 留言 | Email | 主页 | 编辑 | 管理 | 离线

你是要产生正弦波的数据,然后由DA输出吗?如果是,你可以将产生的数据存入buffer中,使用VDSP上自带的波形显示工具,看是否为正弦波的数据。


这家伙很懒,什么也没有留下!
等级:论坛版主 参考IP地址:*.*.*.*
2013/3/4 11:37:00
xtqbp(论坛新手)
xtqbp
头衔:社区公民
帮派:无帮无派
帖数:18
金钱:194
积分:18
注册时间:2013/2/16
5信息 | 留言 | Email | 主页 | 编辑 | 管理 | 离线
C语言中能直接用SIN函数吗?!是不是还要查表啊!?

xtqbp
等级:论坛新手 参考IP地址:*.*.*.*
2013/3/4 13:45:26
尊贵身份标志
andy(论坛版主)
andy
头衔:社区公民
帮派:无帮无派
帖数:2287
金钱:11132
积分:2263
注册时间:2011/6/8
6信息 | 留言 | Email | 主页 | 编辑 | 管理 | 离线

可以直接使用的,在#include <math.h>中已经定义,你用帮助文件搜索sind 或者 sin ,sine能找到一些相关说明。


这家伙很懒,什么也没有留下!
等级:论坛版主 参考IP地址:*.*.*.*
2013/3/5 10:11:07
jian2013(论坛新手)
jian2013
头衔:社区公民
帮派:无帮无派
帖数:24
金钱:322
积分:32
注册时间:2013/1/7
7信息 | 留言 | Email | 主页 | 编辑 | 管理 | 离线
VDSP上自带的波形显示工具, 这工具在哪啊?是软件visual DSP++自带的?

这家伙很懒,什么也没有留下!
等级:论坛新手 参考IP地址:*.*.*.*
2013/3/5 10:19:35
tzg74500(论坛游民)
tzg74500
头衔:社区公民
帮派:无帮无派
帖数:87
金钱:806
积分:110
注册时间:2011/7/31
8信息 | 留言 | Email | 主页 | 编辑 | 管理 | 离线
没明白LZ,你输出正弦,串口如何输出??串口是数字量,怎么能输出模拟???

这家伙很懒,什么也没有留下!
等级:论坛游民 参考IP地址:*.*.*.*
2013/3/5 10:39:55
szjdb(论坛新手)
szjdb
头衔:社区公民
帮派:无帮无派
帖数:43
金钱:418
积分:48
注册时间:2012/3/30
9信息 | 留言 | Email | 主页 | 编辑 | 管理 | 离线
tzg74500兄弟,借楼主宝地请教您一个问题,您的BF533驱动7寸TFT, TFT的时钟DCLK是与CPU公用的33M的有源晶振输出吗?不需要分频吗?

这家伙很懒,什么也没有留下!
等级:论坛新手 参考IP地址:*.*.*.*
2013/3/5 13:54:38
Powered by OpenADSP Copyright © 2010 www.Openadsp.com. All rights reserved.159161 Call, 1 Queries, Processed in 0.015625 second(s),