请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
部件号:MSP430F5529 我尝试在主模式下使用SPI输出字节的波形。 在32 KHz下使用REFOCLK时,此功能按预期工作。 但是,在4 MHz或DCOCLK (20 MHz)使用XT2时,波形看起来完全错误,如所附图片所示。 为什么会发生这种情况? 是我需要它们的某些特殊设置还是MSP430F5529在这些速度下不能运行SPI?
第一个图像:输出频率为4MHz以上,第二个图像:输出频率为32KHz
显然,4+ MHz没有输出正确的波形,而32 KHz是。
int main (void) { WDTCTL = WDTPW | WDTHOLD; //停止看门狗计时器 SetVcoreUp(0x01); //直接从数据表中获取功率 SetVcoreUp(0x02); SetVcoreUp(0x03); __bis_sr_register (SCG0); //禁用FLL P5SEL ||(BIT2 + BIT3); //设置晶体端口 UCSCTL6 &=~XT2OFF; //启用XT2 UCSCTL3 |= SELREF_2; //设置FLL UCSCTL4 |=拉美经济体系2; //也设置ACLK UCSCTL6 |= XT2DRIVE_0; //选择XT2所需的电源 做 { UCSCTL7 &=~(XT2OFFG + XT1LFOFFG + DCOFFG); //清除故障标志 SFRIFG1 &=~OFIFG; //清除通用振荡器故障标志 } 同时(SFRIFG1和OFIFG); //如果故障,OFIFG&SFRIFG1将不为零(TRUE) UCSCTL4 |=TELS__XT2CLK; P1DIR ||(BIT0 + BIT2); P2DIR || BIIT2; //将WFP 2.2 设置为外出方向以监控时钟 P2SEL || BIIT2; //选择WFP 2.2 作为SMCLK输出 __BIC_SR_REGISTER (SCG0); //启用FLL UCB0CTL1 = UCSWRST; //将UCSI置于重置状态以进行配置 UCB0CTL0 ||(UCSYNC + UCMST + UCMSB + UCCKPH); //启用设置:SPI模式(UART的插入)+主+ MOST SIG字节 P3SEL || BIT0; //端口选择 P3DIR |= BIT0; UCB0CTL1 || UCSSEL1; //禁用UCSI重置状态并选择SMCLK源 UCB0CTL1 &=~UCSWRST; //启用UCSI 同时(1) { 同时(!(UCB0IFG和UCTXIFG)); //延迟到UCB0TXBUF为空 UCB0TXBUF = 0xEE; //传输1110.111万 __DELAY周期(1万); } 返回0;}
P.s.,我知道SPI是同步的,但我需要这些高速,因为我实际上只是用它作为波形,而不是与SPI从属通信

