7105|7

20

帖子

0

TA的资源

一粒金砂(中级)

楼主
 

关于430F5529DA输出正弦波和AD采集 [复制链接]

这次要用MSP430F5529来输出正弦波,可用外设DA,不知道选什么芯片,也不知道程序怎么写

最新回复

while(1);只是执行一遍???  详情 回复 发表于 2015-10-20 22:01
 
点赞 关注

回复
举报

20

帖子

0

TA的资源

一粒金砂(中级)

沙发
 

这是题目

QQ截图20140711153612.png (131.79 KB, 下载次数: 0)

QQ截图20140711153612.png

QQ截图20140711153627.png (36.13 KB, 下载次数: 0)

QQ截图20140711153627.png
 
 

回复

20

帖子

0

TA的资源

一粒金砂(中级)

板凳
 
外设DA用TLV5616,现在问题是怎么输出正弦波。。跪求各位大神帮妹纸写个输出正弦波的程序
 
 
 

回复

20

帖子

0

TA的资源

一粒金砂(中级)

4
 
#include
#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       P7OUT |= BIT0
#define DIN_LOW        P7OUT &= ~BIT0

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);
  P7DIR |= 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();
  /*char string[6];
  Dac5616_Init();
  
  P1DIR |= BIT7;
  P1REN |= BIT7;    //上拉电阻
  P1OUT |= BIT7;
  P2DIR |= BIT2;
  P2REN |= BIT2;    //上拉电阻
  P2OUT |= BIT2;
  
while(1)
{
  if (0 == (P2IN & BIT2))
  {
    delay(5);
    if (0 == (P2IN & BIT2))
    {
      temp = temp + 8;
      if (temp == 4096)
      {
        temp = 0;
      }
      Dac_5616(temp);
    }
  }
  string[0] = temp/1000 + '0';
  string[1] = temp/100%10 + '0';
  string[2] = temp/10%10 + '0';
  string[3] = temp%10 + '0';
  string[4] = '\0';
  Dogs102x6_stringDraw(3, 10, "STEP", DOGS102x6_DRAW_NORMAL);
  Dogs102x6_stringDraw(3, 60, string, DOGS102x6_DRAW_NORMAL);
  if (0 == (P1IN & BIT7))
  {
    delay(5);
    if (0 == (P1IN & BIT7))
    {
      temp = temp - 8;
      if (temp == 0)
      {
        temp = 4096;
      }
      Dac_5616(temp);
    }
  }
  string[0] = temp/1000 + '0';
  string[1] = temp/100%10 + '0';
  string[2] = temp/10%10 + '0';
  string[3] = temp%10 + '0';
  string[4] = '\0';
  Dogs102x6_stringDraw(3, 10, "STEP", DOGS102x6_DRAW_NORMAL);
  Dogs102x6_stringDraw(3, 60, string, DOGS102x6_DRAW_NORMAL);
}*/
  //init_clk();
  port_init();
  Dac5616_Init();
  TimerB_init();
  
  _EINT();
  while(1);
}
为什么我这个程序无法输出正弦波?
 
 
 

回复

101

帖子

1

TA的资源

一粒金砂(中级)

5
 
楼主可不可以交流一下,我还不会的感觉

点评

我也不会。。。  详情 回复 发表于 2014-7-16 09:20
 
 
 

回复

20

帖子

0

TA的资源

一粒金砂(中级)

6
 
够了 发表于 2014-7-15 16:13
楼主可不可以交流一下,我还不会的感觉

我也不会。。。
 
 
 

回复

101

帖子

1

TA的资源

一粒金砂(中级)

7
 
好吧,楼主努力
 
 
 

回复

9

帖子

1

TA的资源

一粒金砂(初级)

8
 
while(1);只是执行一遍???
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/9 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表