请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
器件型号: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