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.

[参考译文] MSP432P401R:怀疑msp432的时钟速率

Guru**** 2595800 points


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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/640436/msp432p401r-doubt-about-clock-rate-with-the-msp432

部件号:MSP432P401R
主题中讨论的其他部件:MSPWARE

您好,我对MSP432的时钟频率有一个疑问。

我使用TM4C129 UC已有一段时间...为我设置时钟频率很简单,只需使用以下命令:

ui32SysClock = MAP_SysClockFreqSet(((sysctl_XTal_25MHz|)
sysctl_OSC |
sysctl_use_pll |
sysctl_CFG_VCO_480),1.2亿); 

现在我已经转至msp432,在下一个代码中,我不知道UC工作时钟频率,我只能看到I2C工作时钟频率为3 MHz:

/* DriverLib定义*/
#include <ti/devices/msp432p4xx/driverlib/driverlib.h>/*

标准定义*/
#include <stdint.h>
#include <stdbool.h>
#include <string.h>/*

I2C从属地址*/
#define slaver_address 0x68
#define NUM_OF_REC_Bytes 15

/* Variables */
const uint8_t TXData[2]={0x6b,0x00};
static uint8_t RXData[NUM_OF_REC_Bytes];
static volatile UINT32_t xferIndex;
static volatile stopSent;

/* I2C Master Configuration Parameter */
const eConfig
{ I2cConfig = I2I2_I2_I2I2_Config
EUSCI_B_I2C_CLOCKSOURCE_SMCLK, // SMCLK时钟源
300万, // SMCLK = 3MHz
EUSCI_B_I2C_SET_DATA_RATE_400KBPS, //所需的I2C时钟为100kHz
0, //无字节计数器阈值
EUSCI_B_I2C_NO_AUTO_STOP //无自动停止
};

int main(void){

/*禁用监视程序*/
MAP_WDT_A_HoldTimer();
/*
cs_setDCOCenteredFrequency (CS_DCO_Frequency_48);
cs_setReference振 荡器频率(CS_REFO_128KHZ);
cs_initClockSignal (CS_MCLK,CS_REFOLCLK_SELECT,CS_CLock_diver_1);
cs_initClockSignal (CS_SMCLK,CS_REFOLCLK_SELECT,CS_CLock_diver_1);
PCM_setPowerState(PCM_AM_LH_VCORE0);
*/
MAP_GPIO_setAsPeripheralModuleFunctionInputPin (GPIO端口P1,GPIO_PIN6 + GPIO_PIN7,GPIO主要模块功能);
stopSent =假;
memset (RXData,0x00,NUM_OF_REC_Bytes);

/*在100kHz的频率下将I2C主设备初始化到SMCLK,没有自动停止*/
MAP_I2C_INITMaster (EUSCI_B0_BASE,&i2cConfig);

/*指定从属地址*/
MAP_I2C_setSlaveAddress (EUSCI_B0_BASE,SLAVE_ADDRESS);

/*启用I2C模块以启动操作*/
MAP_I2C_enableModule (EUSCI_B0_BASE);
MAP_Interrupt_enableInterrupt (INT_EUSCIB0);
MAP_Interrupt_enableSleepOnIsrExit();

I2C_masterSendMultiByteStart (EUSI_B0_BASE,TXData[0]);
同时(MAP_I2C_MASTOISStopSent (EUSCI_B0_BASE));
I2C_masterSendMultiByteFinish (EUSI_B0_BASE,TXData[1]);
同时(MAP_I2C_MASTOISStopSent (EUSCI_B0_BASE));



同时(1)
{
同时(MAP_I2C_MASTOISStopSent (EUSCI_B0_BASE));
interrup_enableSleepOnIsrExit();
I2C_masterSendMultiByteStart (EUSI_B0_BASE,0x3B);

xferIndex = 0;
MAP_I2C_masterReceiveStart (EUSCI_B0_BASE);
MAP_I2C_enableInterrupt (EUSCI_B0_BBASE,EUSCI_B_I2C_receive _INTERRUPT0);
MAP_PCM_GotoLPM0InterruptSafe ();

}
}/***************************************************************************************


* eUSCIB0 ISR。 此
ISR内发生重复的启动和发送/接收操作*。
***************** /
void EUSCIB0_IRQHandler (void)
{
UINT_FAST16_t状态;

状态= MAP_I2C_getEnabledInterruptStatus (EUSCI_B0_BASE);
MAP_I2C_clearInterruptFlag (EUSCI_B0_BASE,STATUS);

/*将字节接收到接收缓冲区。 如果我们已收到所有字节,
*发送停止条件*/
IF (状态和EUSCI_B_I2C_Receive_INTERRUPT0)
{
IF (xferIndex == NUM_OF_REC_Bytes -2)
{
MAP_I2C_DisableInterrupt (EUSCI_B0_BASE,EUSCI_B_I2C_Receive_INTERRUPT0);
MAP_I2C_enableInterrupt (EUSCI_B0_BBASE,EUSCI_B_I2C_STOP_INTERRUPT);

I2C_masterReceiveMultiByteStop (EUSCI_B0_BASE);
RXData[xferIndex+]= I2C_masterReceiveMultiByteNext(EUSI_B0_base);
}
否则
{
RXData[xferIndex+]= MAP_I2C_masterReceiveMultiByteNext(EUSI_B0_base);
}
}
否则,如果(状态和EUSCI_B_I2C_STOP_INTERRUPT)
{
MAP_Interrupt_DisableSleepOnIsrExit();
MAP_I2C_DisableInterrupt (EUSCI_B0_BBASE,EUSCI_B_I2C_STOP_INTERRUPT);
}
} 

这是 mspware中主从通信代码的修改,在orde中,要与MPU6050通信UC,代码正在处理一些不属于当前问题的问题,我需要知道的是:

 此工作中时钟频率的值是多少? 如何将其设置为48 MHz?   

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

    MSP432可通过两个不同的时钟源以48MHz运行;它们可以来自内部DCO,也可以用于HFXT。

    对于HFXT,您可以在此处查看示例: dev.ti.com/.../

    对于DCO,您可以在此处获取一个想法: dev.ti.com/.../

    在您的应用程序中,您似乎根本不是在设置时钟系统。 因此,设备默认以REFO的3MHz运行。

    另请开始使用SimpleLink MSP432 SDK。 此SDK包含MSPWare拥有的所有功能,但还包括许多功能,包括从MSPWare对驱动程序库进行的错误修复和更新。 我们不再支持MSPWare软件包,因为SimpleLink MSP432 SDK中现在已包含所有内容。

    另请确保您没有使用包含我们不再支持的试验性预发行硅的黑色板。 有关详细信息,请参阅以下链接的第3部分。 www.ti.com/.../slaa700