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.

关于MSP430F5341的时钟问题

Other Parts Discussed in Thread: MSP430F5341

在单片机时钟初始化的时候,例程上对于ACLK,SMCLK,MCLK的配置如下:

P1DIR |= BIT0;                            // ACLK set out to pins  

P1SEL |= BIT0;                           

P2DIR |= BIT7;                            // SMCLK set out to pins  

P2SEL |= BIT7;                             

P4DIR |= BIT7;                            // MCLK set out to pins  

P4SEL |= BIT7;    

UCSCTL3 |= SELREF_2;                      // Set DCO FLL reference = REFO  

UCSCTL4 |= SELA_2;                        // Set ACLK = REFO

在单片机引脚定义上只能看到对ACLK的输出端为P1.0,SMCLK和MCLK并无说明,这两句是如何将SMCLK和MCLK对应到P2.7和P4.7引脚上的?能否配置到其他引脚?如果只要使用MCLK不用SMCLK,直接将第三四句屏蔽可以吗?

  • 楼主你好,你看的是哪个例程?对于5x系列的430, 可以使用port mapping功能将MCLK和SMCLK map到某个具有port map功能的管脚上。应该还有其他代码设置PxMAPy寄存器的代码。

  • step by step 说:

    楼主你好,你看的是哪个例程?对于5x系列的430, 可以使用port mapping功能将MCLK和SMCLK map到某个具有port map功能的管脚上。应该还有其他代码设置PxMAPy寄存器的代码。

    嗯 ,谢谢你,我用的是这个例程,前面有Port mapping的话:

     PMAPPWD = 0x02D52;                        // Enable Write-access to modify port mapping registers

     P4MAP7 = PM_MCLK;  

     PMAPPWD = 0;  

    还有个问题请教您,我用的是MSP430F5341芯片,如果用B0组的SPI做数据通信接口,port map需要如何配置吗?我现在把初始化配置好了,但是spi的时钟没有波形,但是输出端口可以按设置发出数据,这是什么原因呢?

                    

  • 你好,

         UCB0用作SPI口应该不需要用到port map功能,直接配置好相关pin的dir和sel寄存器就可以了,楼主可以把你的初始化代码和发送数据的代码post出来。

  • 下面是我的SPI初始化程序,我看例程中只有配置SEL寄存器,没有DIR寄存器的配置,是否选为外围模式它的输入输出就已经定下来了?DIR是否必须?

    我还有个问题:

    1、我配置B0组口为SPI模式,配置成3线制和4线制的UCMODE0模式下,在时钟引脚P3.2输出的为1.4v左右的锯齿波,通过更改BR寄存器的波特率配置可以近似调整成方波的状态,而且频率和设置一样,但是高电平始终达不到输入电平(我给430供电3.3v)。

    然后我改程序为直接测试IO口输出,把时钟引脚配置成普通IO口模式,通过高低电平反向输出方波,发现输出波形幅值还是1.4v左右,然后测试了B组的另外几个口,发现只有P3.0输出电压是3.3v,而片选P2.7和输出P3.1的输出都是1.4v,这是什么原因呢?

    2、SPI在配置成4线制的MODE1模式时,时钟输出就完全没有了,这又是为什么呢?

    希望大神点拨!!!感谢感谢

     

     

    ////spi////    

    P3SEL |= BIT0+BIT1+BIT2;                       // P3.0,1,2,选为外围模式。  

    P2SEL |= BIT7;                            // P2.7 option select,选择为外围设备通信模式,片选      

     //while(!(P3IN&0x04));                      // 读取时钟端,p3.2,If clock sig from mstr stays low,说明它未在spi模式    

    UCB0CTL1 |= UCSWRST;                      // **Put state machine in reset**,软件复位使能,时钟选为SMCLK。                                 

    UCB0CTL1 |= UCSSEL__ACLK;                              // 时钟选为ACLK。  

    UCB0CTL0 |= UCCKPL+UCMSB+UCMODE1+UCMST+UCSYNC;                  // mode1=0x40,4-pin, 8-bit SPI master,片选为低电平有效。                                                           // UCSYNC=1同步模式使能,UCCKPL=1下降沿触发,UCMST=1主模式,UCMSB=1MSB先高后低八位。                                                           // Clock polarity high, MSB    

    UCB0BR0 = 0x02;                              // /2,必须倍频,BR0控制低8,BR1控制高8位  

    UCB0BR1 = 0;                              //  

    UCB0MCTL = 0;

     

    UCB0CTL1 &= ~UCSWRST;                     // **Initialize USCI state machine**   //

    UCB0IE |= UCRXIE;                         // Enable USCI_A0 RX interrupt,接收中断使能