kendol 发表于 2015-3-1 00:03

SPI正弦波输出问题请教

本帖最后由 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

分享一下吧!

kendol 发表于 2015-3-2 10:46

zhangmangui 发表于 2015-3-1 22:39
好的   你的帖子还没有结   
还望你有时间   详细分享一下
供大家学习

在帖子中更新了:)

kendol 发表于 2015-3-2 10:46

海中水 发表于 2015-3-2 09:14
分享一下吧!

在帖子中更新了:D

zhangmangui 发表于 2015-3-2 22:58

欢迎多多交流多多分享
页: [1]
查看完整版本: SPI正弦波输出问题请教