打印

DSP驱动DAC8560芯片

[复制链接]
1602|12
手机看帖
扫描二维码
随时随地手机跟帖
沙发
877049204|  楼主 | 2018-1-25 16:32 | 只看该作者
这是8560的特性,看起来还不错,哈哈其实我也不太懂,前人买的,一直没人用,我不想浪费了。采用SPI的方式,寄存器也很简单,8位命令,16位数据,如果要用内部参考的话,要连续写入这两个序列(默认是内部参考)。

QQ截图20180125162852.jpg (190.04 KB )

QQ截图20180125162852.jpg

QQ截图20180125162839.jpg (145.33 KB )

QQ截图20180125162839.jpg

QQ截图20180125162740.jpg (294.84 KB )

QQ截图20180125162740.jpg

使用特权

评论回复
板凳
877049204|  楼主 | 2018-1-25 16:34 | 只看该作者
采用模拟SPI的方式,代码如下
void DAC8560_Write_byte(unsigned char com , unsigned char dat)
{
        unsigned char i = 0;
        DAC8560_FSYNC_LOW;
        DELAY_US(5);
        DAC8560_SCLK_HIGH;
        DELAY_US(5);
        for(i=0;i<8;i++)
        {
                DAC8560_SCLK_HIGH;
//                DELAY_US(5);
                if(com&0x80)
                {
                        DAC8560_DAT_HIGH;
                }
                else
                {
                        DAC8560_DAT_LOW;
                }
                DELAY_US(10);
                DAC8560_SCLK_LOW;
                DELAY_US(10);
                com<<=1;

        }

        for(i=0;i<16;i++)
        {
                DAC8560_SCLK_HIGH;
//                DELAY_US(5);
                if(dat&0x8000)
                {
                        DAC8560_DAT_HIGH;

                }
                else
                {
                        DAC8560_DAT_LOW;
                }
                DELAY_US(10);
                DAC8560_SCLK_LOW;
                DELAY_US(10);
                dat<<=1;
        }

/*        //两个额外的下降沿
        DAC8560_SCLK_LOW;
        DELAY_US(10);
        DAC8560_SCLK_HIGH;
        DELAY_US(10);
        DAC8560_SCLK_LOW;
        DELAY_US(10);
        DAC8560_SCLK_HIGH;
        DELAY_US(10);
        DAC8560_SCLK_LOW;
        DELAY_US(10);*/
        DAC8560_FSYNC_HIGH;
        DELAY_US(10);
}

使用特权

评论回复
地板
877049204|  楼主 | 2018-1-25 16:38 | 只看该作者
使用内部基准 ,两个序列转换过来就是:0x4c+0x0400,0x49+0x0401
DAC8560_Write_byte(0x4c, 0x0400);
DAC8560_Write_byte(0x49, 0x0401);
分析时序,证明程序是正确的

QQ截图20180125163736.jpg (213.86 KB )

QQ截图20180125163736.jpg

使用特权

评论回复
5
877049204|  楼主 | 2018-1-25 17:08 | 只看该作者
程序应该没问题,焊一块DAC芯片接上实际看一看

使用特权

评论回复
6
877049204|  楼主 | 2018-1-27 15:54 | 只看该作者
本帖最后由 877049204 于 2018-1-27 16:19 编辑

碰到一个奇怪的问题,28335的时钟频率是150MHz,这个时钟我用定时器分频计算过,按理来说它的MIPS应该6.7ns左右,但是它执行一条语句的时间花了大概1US,现象如下:
主函数:
      while(1)
      {
//            DAC8560_Dat_Write(SinTable);
            i++;
               if(i>=50)
               {
                       i = 0;
                       GpioDataRegs.GPADAT.bit.GPIO24 = 1;
               }
               GpioDataRegs.GPADAT.bit.GPIO24 = 0;
      }

使用特权

评论回复
7
877049204|  楼主 | 2018-1-27 16:09 | 只看该作者
这样算下来一次加法用了1uS的时间

新建文件2.bmp (376.05 KB )

新建文件2.bmp

使用特权

评论回复
8
877049204|  楼主 | 2018-1-31 09:13 | 只看该作者
焊接完成后,输出慢扫信号波形、正弦波

图片2.png (145.55 KB )

图片2.png

图片1.png (138.59 KB )

图片1.png

1517216848831.jpg (435.96 KB )

1517216848831.jpg

使用特权

评论回复
评论
877049204 2018-9-10 16:44 回复TA
@panhj :QQ号就是我的ID 
panhj 2018-9-10 15:59 回复TA
你好 能加一下qq好友吗 
9
xiaolinfa1987| | 2018-5-23 10:43 | 只看该作者

我用28377s驱动DAC8534,dsp的SPI直接配置外设,数据帧最大只能设置为16bit,而DAC8534每一帧需要24bit(因为前面多了8bit的控制位)。请问怎么解决这个问题?
DAC8534手册要求片选引脚要在收到bit24之后才能拉高,在这之前拉高,数据则无效。而DSP的输出在第16bit就会拉高了。
用普通IO口模拟数据更新太慢了,还要加延时,因此想直接配置外设。

使用特权

评论回复
10
877049204|  楼主 | 2018-9-10 16:47 | 只看该作者
xiaolinfa1987 发表于 2018-5-23 10:43
我用28377s驱动DAC8534,dsp的SPI直接配置外设,数据帧最大只能设置为16bit,而DAC8534每一帧需要24bit(因 ...

不好意思,刚看到你的问题。
可以使用SPI的FIFO功能,将24位数据帧分成两个12位的数据,依次存入SPITXBUF,这样就可以spi成功发送24的帧

使用特权

评论回复
11
xiaolinfa1987| | 2018-9-23 09:47 | 只看该作者
877049204 发表于 2018-9-10 16:47
不好意思,刚看到你的问题。
可以使用SPI的FIFO功能,将24位数据帧分成两个12位的数据,依次存入SPITXBUF ...

可以分3个8位的,多谢!

使用特权

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

本版积分规则

158

主题

1836

帖子

20

粉丝