This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] CCS/MSP430FR5969:DAC 问题、LTC 1661

Guru**** 2540720 points
Other Parts Discussed in Thread: MSP-FET, MSP430FR5969

请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/570123/ccs-msp430fr5969-dac-problem-ltc-1661

器件型号:MSP430FR5969
主题中讨论的其他器件:MSP-FET

工具/软件:Code Composer Studio

我的 SPI 线路控制 DAC (ltc1661)有问题。 输出电压为零。 我有外部 OSC 8MHz。 用 osciligraphh 上的 SPI 行进行了标记、我认为将日期发送到 LTC1661的速度过快是个问题、可能是我的时钟配置不正常。 PCB 由我自己制造(电源正常、零分流电路)、我有 MSP-FET 闪存。 引脚在代码中的评价中进行了说明。


以下是我的代码:

#include 

void clk








/cds.linear.com/.../1661fb.pdf



();void timer ();void SPI_SendByte (char OUT);void SPI_Send_DAC (unsigned int x);unsigned int Trim_wave[24]={0、0x50、0xA0、0x140、0x190、0x1E0、0x230、0x280、0x320、0x370、0x3720、0xB0 ~、0120、0X120、0X120、C0、0X0、0XDCDC0、0xC0、0xC0、0xC0、0xC0、0_0、0X0、0XDAC1 = 0xC0、0xC0、0xC0、0xC0、0xC0、0xC0、0xDCD_0、0xC0、0xC0、0xC0、0xC0、0xDAC1 = 0xC0、0xC0、0xC0、

/*SPI端口*/
#define SPI_CLKBIT2//CLKP2.2
#define SPI_MISOBIT7//MISOP1.7
#define SPI_MOSIBIT6//MOSIP1.6

/*
www.mouser.com/.../LFSPXO018045Bulk-939147.pdf
*/
#define ExternalPJTIT6//外部晶振输出

int 索引;

void main (

LD){= WDTTRF|WTOP1TFP0=

WTS= WTS= WTS0| WTOWTRF_WTOW= WTOW0| WTRF_WTOW= WTOW0| WTOWDTSIL ~| WTOW0| WTRL = WTOWTOW0| WTO

PM5CTL0 &=~LOCKLPM5;
FRCTL0 = FRCTLPW | naccess_1;//更改 naccess_x 值以添加适当数量的等待状态
clk ();
index = 0;
timer ();
_BIS_SR (LPM3_bits + GIE);
}


void clk ()
{
CSCTL0_H = CSKEY >> 8;//解锁时钟寄存器
CSCTL1 = DCOFSEL_6;//将 DCO 设置为8MHz
CSCTL2 = SELA_LFXTCLK | SELESS__HFXTCLK | SELM_DCOCLK;
CSCTL3 = DIVA__1 | DIVM_1;//将所有分频器设置为1
CSCTL0_H = 0;
}

void TIE (

= CC1TA0)计时器(= 0) // CCR0中断使能
TA1CCR0 = 50000;
TA1CTL = tassel_2 + MC_1 + TACLR; // SMCLK、upmode、clear TAR
}

void SPI ()
{
P1SEL1 |= SPI_MISO;
P1SEL1 |= SPI_MOSI;// USCI_B0
P2SEL1 |= SPI_CLK; // USCI_B0\
//为 SPI UCB0CTL0配置 UCSI B0
|= UCSWRST;//复位 USCI B0
UCB0CTL0 |= UCMST+UCSYNC+UCMSB;
UCB0CTL0 |= UCCKPH | UCMSB | UCMODE_UC0 | UCSYNC0主器件、UCS8引脚、非活动边沿、读/非活动边沿、UCS8引脚 同步
UCB0CTL0 = UCSSEL_2;//时钟源 SMCLK、
UCB0BR0 = 0x02;
UCB0BR1 = 0;//无调制
UCB0CTL1 &=~UCSWRST;//启用 USCI B0
}

void SPI_SendByte (char)
{
UCB0TXBUF = UCSWRST;
//启用 USC0Dc 0_t


(unsigned SPI);while UCB0Tx_dac (void)

unsigned int 输出= 0;
unsigned int temp = x;
temp = temp << 2;
温度|= 0xF000;
输出= temp;
SPI_SendByte (输出>> 8);
SPI_SendByte (output);
}

//计时器 A0中断服务例程
#pragma vector=Timer1_A0_vector
__interrupt void Timer1_A0_ISR (void)
{
P1OUT ^= BIT2;
TA1CCR0 += 50000;
SPI_Send_DAC (trial_wave[index]);
index++;
if (index = 120)

};INDEX = 0

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    根据 LTC1661数据表、在 CS 引脚被拉至高电平之前、DAC 将不会响应、这在代码中不会完成。 我看不到 PJSEL0 (位4至7)或 CSCTL4 (LFXTOFF 和 HFXTOFF 位)被正确设置以启用 LFXT 和 HFXT、即使它们分别源自 ACLK 和 SMCLK、或者适当的故障标志循环以确保它们正确振荡。 您可以通过将时钟输出到引脚来验证时钟功能。 LTC1661支持高达10MHz 的 SPI CLK、但我不认为它从 MSP430FR5969接收到任何内容、请查看 msp430fr59xx_cs 示例。

    此致、
    Ryan
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您必须将 CS/~LD 引脚置为有效、以便 DAC 侦听 SPI 传输、并且在传输完成后-将刚刚接收的数据加载到 DAC 中。 如果不切换 CS/~LD 引脚、则无法正常工作。 请参阅芯片数据表、第4页、时序图。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    "PJSEL0 |=外部晶振;"外部晶振为 PJ.6。 如果我检查了故障标志、程序将进入循环:

    DO
    {
    CSCTL5 &=~HFXTOFFG;//清除 XT2故障标志
    SFRIFG1 &=~OFIFG;
    }
    while (SFRIFG1&OFIFG); 

    我认为它可以堆栈、因为激励不是来自 MSP430。
    我只需设置晶体时钟的输出(http://www.mouser.com/ds/2/741/LFSPXO018045Bulk-939147.pdf)
    是的、我在设置 CS 引脚时出错了。 问题迎刃而解。 我检查了示波器处的信号、但所有信号都为零。 有什么想法、我在哪里犯错?  

    感谢 Ryan、
    此致

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    是的、好的、但这不是问题的解决方案。

    谢谢 Ilmars
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    eUSCI 模块从引用 XT2的 SMCLK 提供其时钟源、如果这没有正确振荡(如 HFXTOFFG 被置位所示)、那么您将无法操作 SPI。 您需要查看您的 XT2晶振硬件设计、并确保它遵循应用报告 SLAA322中的建议。 您还应返回到 TI 提供的 msp430fr59xx_cs_04.c 示例、并确保在使用 SPI 之前可以将 SMCLK (源自 XT2)正确输出到引脚上。

    此致、
    Ryan