请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
器件型号:MSP432P401R
工具/软件:Code Composer Studio
您好!
我使用 launchpad MSP432P401R 对集成电路 AD9833进行编程。 该元件需要一个我使用计时器生成的时钟源、并通过 SPI (低电平有效)对其进行编程。 时钟源工作正常,但 SPI 协议有问题。 如何修复代码? 我无法看到错误。
谢谢
#include "msp.h" #include #define Elements 5 uint16_t TXData1[元素]={0x2100、0x50C7、0x40、0xC000、0x2000};//16Hz uint16_t TXData2[元素]={0x2100、0x410C、0x40、000 、0x2000};//1uint16_t TXData3[元素]={0x2040、0x20Hz 、0x20Hz、0x20Hz、0x20Hz、0x20Hz、0x20Hz、0x20Hz、0x20Hz、0x20Hz、0x20Hz、0x20Hz、0x20Hz、0x20Hz、0x20Hz、0x20Hz = 0x20Hz = 0x20Hz while (UCB0STAT 和 UCBUSY); P1OUT&=~0x01; UCB0TXBUF=(DATA>>>8)&0xFF; while (!(UCB0IFG&UCTXIFG)); UCB0TXBUF=DATA&0xFF; while (UCB0STAT 和 UCBUSY); P1OUT|=0x01; } int main (void){ uint8_t i = 0; //看门狗计时器 WDT_A->CTL = WDT_A_CTL_PW | WDT_A_CTL_HOLD; //停止 //功能引脚 //SPI P1SEL0 |= BIT5 | BIT6 | BIT7; //将 P1.5、P1.6和 P1.7设置为 SPI 引脚功能 //GPIO P1DIR |= BIT0; P1OUT |= BIT0; ///PWM P2SEL0 |= 0x10; //P2.4 TA0.1 P2SEL1 &= 0x00; //P2.4 TA0.1 P2DIR |= 0x10; //P2.4输出 //配置时钟 CS->KEY = CS_KEY_VAL; //解锁 CS 模块以进行寄存器访问 CS->CTL0 = 0; //重置调优参数 CS->CTL0 = CS_CTL0_DCORSEL_3; //将 DCO 设置为12MHz (标称值、8-16MHz 范围的中心) //选择 ACLK = REFO、SMCLK = MCLK = DCO CS->CTL1 = CS_CTL1_SELA_2 | CS_CTL1_SELESS_3 | CS_CTL1_SELM_3; CS->KEY = 0; //锁定 CS 模块,防止意外访问 //配置计时器 TA0CCR0 = 12-1; //PWM 周期 TA0CCTL1 = TIMER_A_CCTLN_OUTMOD_7; //CR1复位/置位 TA0CCR1 = 6; //CCCR1 PWM 占空比 TA0CTL = TIMER_A_CTL_ssel_SMCLK | TIMER_A_CTL_MC_UP | TIMER_A_CTL_CLR;//SMCLK|UP 模式| TAR 清除 //配置 SPI EUSCI_B0->CTLW0 |= EUSCI_B_CTLW0_SWRST; //将 eUSCI 状态机复位 EUSCI_B0->CTLW0 = EUSCI_B_CTLW0_SWRST | //在复位时保持 eUSCI 状态机 EUSCI_B_CTLW0_MST | //设置为 SPI 主设备 EUSCI_B_CTLW0_SYNC | //设置为同步模式 EUSCI_B_CTLW0_CKPL | //将时钟极性设置为高电平 EUSCI_B_CTLW0_MSB; // MSB 优先 EUSCI_B0->CTLW0 |= EUSCI_B_CTLW0_ssel_ACLK;//EUSCI_B_CTLW0_ssel_ACLK;// ACLK EUSCI_B0->BRW = 0x01; ///2、fBitClock = fBRCLK/(UCBRx+1)。 EUSCI_B0->CTLW0 &=~EUSCI_B_CTLW0_SWRST; //初始化 USCI 状态机 //EUSCI_B0->IFG |= EUSCI_B_IFG_TXIFG;//清除 TXIFG 标志 //AD9833 对于(I = 0;I IFG 和 EUSCI_B_IFG_TXIFG); P1OUT &=~ BIT0; wait(); EUSCI_B0->TXBUF = TXData[i]; P1OUT |= BIT0; */ } //循环 while (1); }