打印
[DSP编程]

关于TLV5616DA转换的问题

[复制链接]
1837|18
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
劳烦各位大大了,小弟写了一个关于spi口输出值到TLV5616进行da转换的程序,发现端口输出电压没有变化,希望大家帮我看看,谢谢。
void main(void)
{
        char temp;
        InitSysCtrl();
        Init_SPI();
        SpiaRegs.SPICTL.bit.TALK=1;//FS引脚控制
        TX_SPI(0X016a);
        SpiaRegs.SPICTL.bit.TALK=0;//FS引脚控制
        while(1);
}
主函数里通过控制TALK位所连FS引脚下降沿进行读取转换。发送完毕后将FS拉高完成
发送函数
void TX_SPI(char c)
{
        while(SpiaRegs.SPISTS.bit.BUFFULL_FLAG==1);
        SpiaRegs.SPITXBUF=c;
        while(SpiaRegs.SPISTS.bit.BUFFULL_FLAG==1);
}
。。。。。。其他应该没问题初始化中SpiaRegs.SPIBRR=0x07;
不知道是不是tlv5616的读取顺序不对???

相关帖子

沙发
aszlssjn|  楼主 | 2017-3-10 23:06 | 只看该作者
图片

猎豹截图20170310230344.png (41.63 KB )

猎豹截图20170310230344.png

使用特权

评论回复
板凳
aszlssjn|  楼主 | 2017-3-10 23:08 | 只看该作者
不知道为什么,是不是程序不对

猎豹截图20170310230719.png (73.3 KB )

猎豹截图20170310230719.png

使用特权

评论回复
地板
zhangmangui| | 2017-3-11 09:21 | 只看该作者
这个我觉得肯定是你的SPI配置问题    最好看看SPI管脚上的波形

使用特权

评论回复
5
aszlssjn|  楼主 | 2017-3-11 13:38 | 只看该作者
zhangmangui 发表于 2017-3-11 09:21
这个我觉得肯定是你的SPI配置问题    最好看看SPI管脚上的波形

版主大大,这个spi管脚波形咋看,输出的数据速度这么高,示波器读不出吧。或者说循环发送高电平或者低电平来看???

使用特权

评论回复
6
aszlssjn|  楼主 | 2017-3-11 14:05 | 只看该作者
zhangmangui 发表于 2017-3-11 09:21
这个我觉得肯定是你的SPI配置问题    最好看看SPI管脚上的波形

版主大大,我用输出0x0000,延时输出0xffff拿示波器看了,spi输出正常,配置应该没问题。我觉得应该是和TLV引脚设置有问题。不知道tlv5616是不是在收到16位数据之后能自动转换还是一定要拉fs高电平才能刷新

使用特权

评论回复
7
forrest11| | 2017-3-11 20:16 | 只看该作者
aszlssjn 发表于 2017-3-11 14:05
版主大大,我用输出0x0000,延时输出0xffff拿示波器看了,spi输出正常,配置应该没问题。我觉得应该是和TL ...

必须拉高。

使用特权

评论回复
8
aszlssjn|  楼主 | 2017-3-11 22:06 | 只看该作者

请问我这种拉高的写法对嘛。我用了3个不同的值从spi发送出去,隔一段时间发送一个,发现程序完整跑一次发送电平才变化一次,复位后又再重跑发送三个又变化一次,和程序期望结果不一样,按理说应该是变化三次才对吧。  
        。。。。。。
        前面省略  
        SpiaRegs.SPICTL.bit.TALK=1;//FS引脚控制
        TX_SPI(0X4000);
        SpiaRegs.SPICTL.bit.TALK=0;//FS引脚控制
        for(i=0;i<50;i++)
        for(j=0;j<=10000;j++);
                SpiaRegs.SPICTL.bit.TALK=1;//FS引脚控制
                TX_SPI(0X4fff);
                SpiaRegs.SPICTL.bit.TALK=0;//FS引脚控制
        for(i=0;i<50;i++)
        for(j=0;j<=10000;j++);
                SpiaRegs.SPICTL.bit.TALK=1;//FS引脚控制
                TX_SPI(0X4000);
                SpiaRegs.SPICTL.bit.TALK=0;//FS引脚控制
        while(1);

使用特权

评论回复
9
zhangmangui| | 2017-3-11 22:24 | 只看该作者
aszlssjn 发表于 2017-3-11 14:05
版主大大,我用输出0x0000,延时输出0xffff拿示波器看了,spi输出正常,配置应该没问题。我觉得应该是和TL ...

这个肯定是通过SPI将数据写入   内部是进入了一个移位寄存器
写完后拉一下类似于片选的引脚    表示完成了  也就转换了

使用特权

评论回复
10
forrest11| | 2017-3-11 22:25 | 只看该作者
用这个试一下看结果:

SpiaRegs.SPICTL.bit.TALK=1;//FS引脚控制
        for(i=0;i<50;i++);
        for(j=0;j<=10000;j++);
        SpiaRegs.SPICTL.bit.TALK=0;//FS引脚控制
        TX_SPI(0X4000);

                SpiaRegs.SPICTL.bit.TALK=1;//FS引脚控制
        for(i=0;i<50;i++)
        for(j=0;j<=10000;j++);
                SpiaRegs.SPICTL.bit.TALK=0;//FS引脚控制

                TX_SPI(0X4fff);
                SpiaRegs.SPICTL.bit.TALK=1;//FS引脚控制
        for(i=0;i<50;i++)
        for(j=0;j<=10000;j++);
                SpiaRegs.SPICTL.bit.TALK=0;//FS引脚控制

                TX_SPI(0X40ff);
                SpiaRegs.SPICTL.bit.TALK=1;//FS引脚控制

使用特权

评论回复
11
zhangmangui| | 2017-3-11 22:30 | 只看该作者
aszlssjn 发表于 2017-3-11 13:38
版主大大,这个spi管脚波形咋看,输出的数据速度这么高,示波器读不出吧。或者说循环发送高电平或者低电 ...

SPI的频率高一些也就10M左右吧  
一般的示波器都是可以看到的

使用特权

评论回复
12
aszlssjn|  楼主 | 2017-3-11 22:39 | 只看该作者
zhangmangui 发表于 2017-3-11 22:30
SPI的频率高一些也就10M左右吧  
一般的示波器都是可以看到的

恩,我管脚测试过了,给高给低都可以,能测出来,应该就是锁存信号的问题了

使用特权

评论回复
13
aszlssjn|  楼主 | 2017-3-11 22:45 | 只看该作者
forrest11 发表于 2017-3-11 22:25
用这个试一下看结果:

SpiaRegs.SPICTL.bit.TALK=1;//FS引脚控制

好勒,我先试试看,谢谢啊哈哈。talk置1是将spistea拉低这样,我原来是先拉低再拉高锁存。您改的这样会不会更加存不进去呢。我明天试试看,也有可能我引脚搞反了。我没测过fs引脚

使用特权

评论回复
14
zxq6| | 2017-3-11 22:49 | 只看该作者
这是个多通道da,需要设置通道寄存器,再写da寄存器的。

使用特权

评论回复
15
forrest11| | 2017-3-11 22:55 | 只看该作者
aszlssjn 发表于 2017-3-11 22:45
好勒,我先试试看,谢谢啊哈哈。talk置1是将spistea拉低这样,我原来是先拉低再拉高锁存。您改的这样会不 ...

那就把0和1设置反过来一下。用示波器观察。

使用特权

评论回复
16
aszlssjn|  楼主 | 2017-3-12 12:19 | 只看该作者
zxq6 发表于 2017-3-11 22:49
这是个多通道da,需要设置通道寄存器,再写da寄存器的。

多通道DA什么意思呢,这不是只有一个din引脚嘛??通道寄存器是哪个寄存器呢??

使用特权

评论回复
17
zhangmangui| | 2017-3-12 20:50 | 只看该作者
能测到就说明数据送出了   那就是移位寄存器到转换输出的一个使能控制问题了

使用特权

评论回复
18
zxq6| | 2017-3-14 09:08 | 只看该作者
aszlssjn 发表于 2017-3-12 12:19
多通道DA什么意思呢,这不是只有一个din引脚嘛??通道寄存器是哪个寄存器呢?? ...

不好意思,记错了。刚刚看了芯片说明书,不是我以前用的那个多通道的DAC。

使用特权

评论回复
19
aszlssjn|  楼主 | 2017-3-14 17:19 | 只看该作者
zxq6 发表于 2017-3-14 09:08
不好意思,记错了。刚刚看了芯片说明书,不是我以前用的那个多通道的DAC。
...

我自己再看看吧哈哈

使用特权

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

本版积分规则

5

主题

20

帖子

0

粉丝