打印
[DSP编程]

SPI正弦波输出问题请教

[复制链接]
1053|6
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
kendol|  楼主 | 2015-3-1 00:03 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 kendol 于 2015-3-2 10:45 编辑

RT,请教一下坛子里的大侠。
我想通过SPI发送数据到DAC7568完成正弦波输出。现在我用的这个32bit DAC是8通道,12位精度的,它的寄存器配置如下图:


这个DAC的控制位地址位配置图:


然后DSP中SPITXBUF为16位寄存器,我把数据分两次发送:

代码如下
void F280X_SPIDAC_Update(SPIDAC *p)
{
   
//   _iq Tmp;

   if(p->Rad >= _IQ12(1))
     {
      p->Rad = _IQ12(0);    //  防溢出
     }

   p->Rad += _IQ12(0.005);

   p->Sinewave = (_IQ12sinPU(p->Rad) + _IQ12(1))>>1;

//   p->Sinewave = Tmp << 8;   

  
}

void F280X_SPIDAC_Transmit2(SPIDAC *p)
{
  
     SpibRegs.SPITXBUF = (p->Sinewave) | 0x0200;    //---不对的
     SpibRegs.SPITXBUF = (p->Sinewave) | 0x0000;   
  
}
上面代码中的Transmit部分是不对的,在示波器中读不出波形,所以问题就是怎么正确的把Sinewave的数据(Q12)发送到DAC的数据位中?实在是很困扰,烦请会的大侠指点一下菜鸟。

新手第一次发帖,若发错版块希望告知一下:)


我的解决方法:
在上面获取的正弦波为Q12格式,我的做法是把该段数据分为高4位发送和低8位发送(通过相与分别保留高4位和低8位),然后通过移位把它嵌入到DAC的数据位中去,这样就能把正弦波DAC出来了。
有不同解决方法的也希望交流分享一下:)

相关帖子

沙发
kendol|  楼主 | 2015-3-1 19:41 | 只看该作者
已搞定,数据位移位问题。可结贴

使用特权

评论回复
板凳
zhangmangui| | 2015-3-1 22:39 | 只看该作者
kendol 发表于 2015-3-1 19:41
已搞定,数据位移位问题。可结贴

好的   你的帖子还没有结   
还望你有时间   详细分享一下  
供大家学习

使用特权

评论回复
地板
海中水| | 2015-3-2 09:14 | 只看该作者
分享一下吧!

使用特权

评论回复
5
kendol|  楼主 | 2015-3-2 10:46 | 只看该作者
zhangmangui 发表于 2015-3-1 22:39
好的   你的帖子还没有结   
还望你有时间   详细分享一下  
供大家学习

在帖子中更新了:)

使用特权

评论回复
6
kendol|  楼主 | 2015-3-2 10:46 | 只看该作者

在帖子中更新了:D

使用特权

评论回复
7
zhangmangui| | 2015-3-2 22:58 | 只看该作者
欢迎多多交流  多多分享

使用特权

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

本版积分规则

2

主题

7

帖子

0

粉丝