关于TLV5616DA转换的问题
劳烦各位大大了,小弟写了一个关于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的读取顺序不对??? 图片
不知道为什么,是不是程序不对
这个我觉得肯定是你的SPI配置问题 最好看看SPI管脚上的波形 zhangmangui 发表于 2017-3-11 09:21
这个我觉得肯定是你的SPI配置问题 最好看看SPI管脚上的波形
版主大大,这个spi管脚波形咋看,输出的数据速度这么高,示波器读不出吧。或者说循环发送高电平或者低电平来看??? zhangmangui 发表于 2017-3-11 09:21
这个我觉得肯定是你的SPI配置问题 最好看看SPI管脚上的波形
版主大大,我用输出0x0000,延时输出0xffff拿示波器看了,spi输出正常,配置应该没问题。我觉得应该是和TLV引脚设置有问题。不知道tlv5616是不是在收到16位数据之后能自动转换还是一定要拉fs高电平才能刷新 aszlssjn 发表于 2017-3-11 14:05
版主大大,我用输出0x0000,延时输出0xffff拿示波器看了,spi输出正常,配置应该没问题。我觉得应该是和TL ...
必须拉高。 forrest11 发表于 2017-3-11 20:16
必须拉高。
请问我这种拉高的写法对嘛。我用了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); aszlssjn 发表于 2017-3-11 14:05
版主大大,我用输出0x0000,延时输出0xffff拿示波器看了,spi输出正常,配置应该没问题。我觉得应该是和TL ...
这个肯定是通过SPI将数据写入 内部是进入了一个移位寄存器
写完后拉一下类似于片选的引脚 表示完成了也就转换了 用这个试一下看结果:
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引脚控制 aszlssjn 发表于 2017-3-11 13:38
版主大大,这个spi管脚波形咋看,输出的数据速度这么高,示波器读不出吧。或者说循环发送高电平或者低电 ...
SPI的频率高一些也就10M左右吧
一般的示波器都是可以看到的 zhangmangui 发表于 2017-3-11 22:30
SPI的频率高一些也就10M左右吧
一般的示波器都是可以看到的
恩,我管脚测试过了,给高给低都可以,能测出来,应该就是锁存信号的问题了 forrest11 发表于 2017-3-11 22:25
用这个试一下看结果:
SpiaRegs.SPICTL.bit.TALK=1;//FS引脚控制
好勒,我先试试看,谢谢啊哈哈。talk置1是将spistea拉低这样,我原来是先拉低再拉高锁存。您改的这样会不会更加存不进去呢。我明天试试看,也有可能我引脚搞反了。我没测过fs引脚{:lol:} 这是个多通道da,需要设置通道寄存器,再写da寄存器的。 aszlssjn 发表于 2017-3-11 22:45
好勒,我先试试看,谢谢啊哈哈。talk置1是将spistea拉低这样,我原来是先拉低再拉高锁存。您改的这样会不 ...
那就把0和1设置反过来一下。用示波器观察。 zxq6 发表于 2017-3-11 22:49
这是个多通道da,需要设置通道寄存器,再写da寄存器的。
多通道DA什么意思呢,这不是只有一个din引脚嘛??通道寄存器是哪个寄存器呢??{:shocked:} 能测到就说明数据送出了 那就是移位寄存器到转换输出的一个使能控制问题了 aszlssjn 发表于 2017-3-12 12:19
多通道DA什么意思呢,这不是只有一个din引脚嘛??通道寄存器是哪个寄存器呢?? ...
不好意思,记错了。刚刚看了芯片说明书,不是我以前用的那个多通道的DAC。
zxq6 发表于 2017-3-14 09:08
不好意思,记错了。刚刚看了芯片说明书,不是我以前用的那个多通道的DAC。
...
我自己再看看吧哈哈
页:
[1]