[DSP编程] SPI正弦波输出问题请教

[复制链接]
1460|6
kendol 发表于 2015-3-1 00:03 | 显示全部楼层 |阅读模式
本帖最后由 kendol 于 2015-3-2 10:45 编辑

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


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


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

代码如下
  1. void F280X_SPIDAC_Update(SPIDAC *p)
  2. {
  3.    
  4. //   _iq Tmp;

  5.    if(p->Rad >= _IQ12(1))
  6.      {
  7.       p->Rad = _IQ12(0);    //  防溢出
  8.      }

  9.    p->Rad += _IQ12(0.005);

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

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

  12.   
  13. }

  14. void F280X_SPIDAC_Transmit2(SPIDAC *p)
  15. {
  16.   
  17.      SpibRegs.SPITXBUF = (p->Sinewave) | 0x0200;    //---不对的
  18.      SpibRegs.SPITXBUF = (p->Sinewave) | 0x0000;   
  19.   
  20. }
上面代码中的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 | 显示全部楼层

在帖子中更新了:D
zhangmangui 发表于 2015-3-2 22:58 | 显示全部楼层
欢迎多多交流  多多分享
您需要登录后才可以回帖 登录 | 注册

本版积分规则

2

主题

7

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部