打印

输出正弦波的问题

[复制链接]
1256|24
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
Rangar|  楼主 | 2017-11-16 15:51 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我要用F5529输出正弦波,下面是我的程序,但是就是没有波形,跪求各位大神帮忙看看是什么原因
#include<msp430F5529.h.h>
#include "HAL_Dogs102x6.h"

#define Sclk_HIGH      P4OUT |= BIT5
#define SCLK_LOW       P4OUT &= ~BIT5
#define CS_HIGH        P4OUT |= BIT4
#define CS_LOW         P4OUT &= ~BIT4
#define FS_HIGH        P2OUT |= BIT0
#define FS_LOW         P2OUT &= ~BIT0
#define DIN_HIGH       P6OUT |= BIT0
#define DIN_LOW        P6OUT &= ~BIT0

void port_init();
void init_clk();
void Dac5616_Init();
void TimerB_init();
void Dac_5616();
unsigned  int temp, temp1;


unsigned int sin[120]={0x800,0x86b,0x8d5,0x940,0x9a9,0xa11,0xa78,0xadd,0xb40,
0xba1,0xbff,0xc5a,0xcb3,0xd08,0xd59,0xda7,0xdf1,0xe37,0xe78,0xeb5,0xeed,0xf20,
0xf4e,0xf77,0xf9b,0xfb9,0xfd2,0xfe6,0xff4,0xffd,0xfff,0xffd,0xff4,0xfe7,0xfd3,
0xfba,0xf9c,0xf78,0xf4f,0xf21,0xeee,0xeb6,0xe7a,0xe39,0xdf3,0xda9,0xd5c,0xd0a,
0xcb5,0xc5d,0xc02,0xba4,0xb43,0xae0,0xa7b,0xa14,0x9ac,0x943,0x8d9,0x86e,0x803,
0x798,0x72d,0x6c3,0x659,0x5f1,0x58a,0x525,0x4c2,0x461,0x403,0x3a7,0x34f,0x2fa,
0x2a8,0x25a,0x210,0x1cb,0x189,0x14c,0x114,0xe1,0xb2,0x89,0x65,0x46,0x2d,0x19,
0xb,0x3,0x0,0x2,0xa,0x18,0x2b,0x44,0x62,0x86,0xae,0xdc,0x10f,0x147,0x183,0x1c4,
0x20a,0x253,0x2a1,0x2f2,0x347,0x39f,0x3fa,0x458,0x4b9,0x51c,0x581,0x5e7,0x650,
0x6b9,0x723,0x78e};

void init_clk()     
{
  unsigned int i;   
  BCsctL1 &= ~XT2OFF;   //打开XT2高体振荡器
  do
  {
    ifg1 &= ~OFIFG;     //清除晶振失败标志
    for (i = 0xFF; i > 0; i--); //等待8MHZ晶体起振
  }
  while ((IFG1 & OFIFG) != 0);  //晶振失效标志仍然存在?
  BCSCTL2 |= SELM_2;  //MCLK和SMCLK选择高频晶振
  BCSCTL2 |= SELS;
}

void Dac5616_Init(void)
{
  P2DIR |= BIT0;
  P4DIR |= (BIT4 + BIT5);
  P6DIR |= BIT0;
}

void Dac_5616(unsigned int data)
{
  unsigned int i;

  CS_HIGH;
  SCLK_HIGH;
  FS_HIGH;
  CS_LOW;
  FS_LOW;
  
  for (i=0; i<16; i++)
  {
    if (data & 0x8000) DIN_HIGH;
    else DIN_LOW;
    SCLK_LOW;
    data = data << 1;
    SCLK_HIGH;
                  
  }
  FS_HIGH;
  CS_HIGH;        
}

void delay (int x)
{
  unsigned int i, j = 1;
  while(1)
  {
    for (i = 0; i < x; i++)
    {
      for (j = 0; j < 5000; j++)
      ;;      
    }
    break;
  }

}

void port_init()
{
  temp = 0;
  temp1 = 0;
}

void TimerB_init()
{
  TbccR0 = 1;
  TBCTL |= TBSSEL_2 + TBCLR + MC_1;
  TBCCTL0 = CCIE;
}

#pragma vector = TIMERB0_VECTOR
__interrupt void Timer_B (void)
{
  temp++;     
  if (temp == 120)
  {
    temp = 0;
  }
  temp1 = sin[temp];
  Dac_5616(temp1);
}

void main( void )
{
  // Stop watchdog timer to prevent time out reset
  //unsigned temp;
  WDTCTL = WDTPW + WDTHOLD;
  //Dogs102x6_init();
  //Dogs102x6_backlightInit();
  //Dogs102x6_setBacklight(5);
  //Dogs102x6_setcontrast(8);
  //Dogs102x6_clearScreen();
  init_clk();
  port_init();
  Dac5616_Init();
  TimerB_init();
  
  _EINT();
  while(1);
}

相关帖子

沙发
Stannis| | 2017-11-16 16:34 | 只看该作者
首先要确保TimerB中断得到相应,这个通过仿真是能看到的。
然后要确定SPI输出波形没问题,可以通过示波器观察。

使用特权

评论回复
板凳
xiaoyaodz| | 2017-11-16 16:41 | 只看该作者
没有波形可能是DAC输出的问题。

使用特权

评论回复
地板
febgxu| | 2017-11-16 16:41 | 只看该作者
楼主怎么不使用sin或者cos函数直接计算?

使用特权

评论回复
5
sdlls| | 2017-11-16 16:42 | 只看该作者
建议楼主检查DAC输出电路。

使用特权

评论回复
6
pixhw| | 2017-11-16 16:42 | 只看该作者
如果正常main函数里面输出怎么样

使用特权

评论回复
7
xiaoyaodz| | 2017-11-16 16:43 | 只看该作者
DAC电路是怎么设计的?

使用特权

评论回复
8
febgxu| | 2017-11-16 16:43 | 只看该作者
数表应该没有问题的。

使用特权

评论回复
9
pixhw| | 2017-11-16 16:43 | 只看该作者
定时器的能否正常运行?

使用特权

评论回复
10
sdlls| | 2017-11-16 16:43 | 只看该作者
如果输出频率过大,可能DAC无法输出的。

使用特权

评论回复
11
Brand2| | 2017-11-16 16:43 | 只看该作者
要确保硬件电路没问题

使用特权

评论回复
12
Soraka| | 2017-11-16 16:53 | 只看该作者
F5529没有DAC模块吧???我记得只有ADC

使用特权

评论回复
13
Garen2| | 2017-11-16 17:07 | 只看该作者
F5529没有DAC,得用外设DA

使用特权

评论回复
14
Ryze| | 2017-11-16 17:18 | 只看该作者
TLV5616

使用特权

评论回复
15
Varus| | 2017-11-16 17:24 | 只看该作者
输出正弦波时钟要怎么配置

使用特权

评论回复
16
angerbird| | 2017-11-16 22:14 | 只看该作者
这个的看下DA输出的信号是否太弱了

使用特权

评论回复
17
houjiakai| | 2017-11-18 22:07 | 只看该作者
你的DAC有问题吗

使用特权

评论回复
18
youtome| | 2017-11-18 22:07 | 只看该作者
是不是速度太快了?

使用特权

评论回复
19
cemaj| | 2017-11-18 22:08 | 只看该作者
楼主这个使用数组速度快吗?

使用特权

评论回复
20
cehuafan| | 2017-11-18 22:08 | 只看该作者
楼主测量IO的信号了吗

使用特权

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

本版积分规则

154

主题

763

帖子

0

粉丝