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.

[参考译文] MSP430FR2633:使用 MSP430FR2633的 SPI 接口时钟选择

Guru**** 2382630 points
Other Parts Discussed in Thread: MSP430FR2633, MSP430FR2533, UNIFLASH
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/912010/msp430fr2633-clock-selection-for-spi-interface-using-msp430fr2633

器件型号:MSP430FR2633
主题中讨论的其他器件: MSP430FR2533UNIFLASH

您好!

我正在使用 MSP430FR2633开发32个关键电容式触控 PCB。

在此过程中、我尝试实现 SPI 接口、因为我在 CCS 中完成了初始化之后;

//初始化为主控方
EUSCI_A_SPI_initMasterParam param ={0};
param.selectClockSource = EUSCI_A_SPI_CLOCKSOURCE_SMCLK;

param.clockSourceFrequency = CS_getSMCLK();
param.desiredSpiClock = 50000;
param.msbFirst = EUSCI_A_SPI_MSB_FIRST;
param.clockPhase = EUSCI_A_SPI_PHASE_DATA_Changed_ONFIRST_capted_on_next;
param.clockPolarity = EUSCI_A_SPI_CLOCKPOLARITY_INACT_LOW;
param.spiMode = EUSCI_A_SPI_3引脚;
EUSCI_A_SPI_initMaster (EUSCI_A1_base、&param);

我不使用外部晶体或任何其他外部时钟源,因此  我应该使用哪个时钟函数,而不是"CS_getSMCLK()"?

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

    使用  CS_getSMCLK()有什么问题?

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

    SMCLK 的根时钟源可以 是 REFO。 它无需外部晶体即可工作。

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

    是否未为外部晶体振荡器定义此函数?

    我不使用 外部晶体振荡器、而是使用内部时钟、因此我应该在 SPI 初始化为主代码时使用哪个函数进行 SPI 通信?  

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

     

    是的 SMCLK 将在没有外部晶体振荡器的情况下工作、因为获取 SMCLK 的函数是  CS_TurnOnSMCLK ();  此外、该函数 不返回任何值

    但对于我要实现的 SPI 协议通信、我参考了 TI 的示例代码"eusci_a_spi_ex1_master"、其中包含以下语句:

    //初始化主设备
    EUSCI_A_SPI_initMasterParam param ={0};
    param.selectClockSource = EUSCI_A_SPI_CLOCKSOURCE_SMCLK;
    param.clockSourceFrequency =  CS_getSMCLK();  
    param.desiredSpiClock = 50000;
    param.msbFirst = EUSCI_A_SPI_MSB_FIRST;
    param.clockPhase = EUSCI_A_SPI_PHASE_DATA_Changed_ONFIRST_capted_on_next;
    param.clockPolarity = EUSCI_A_SPI_CLOCKPOLARITY_INACT_LOW;
    param.spiMode = EUSCI_A_SPI_3引脚;
    EUSCI_A_SPI_initMaster (EUSCI_A1_base、&param);

    在这里是函数  CS_getSMCLK (); 返回 uint32_t 变量值,因此我不能使用  CS_turnOnSMCLK (); 而不是  CS_getSMCLK ();

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

    cs_getSMCLK()返回一个数字,特别是 SMCLK 当前运行的时钟频率(可能是1000000UL,意思是1MHz)。  这正是"clockSourceFrequency"字段所需的内容。 您也可以只写入 param.clockSourceFrequency=1000000UL、但如果更改 SMCLK 速度、则必须记住更改它。

    当系统启动时、SMCLK 从 DCO (无晶振)以大约1MHz 的频率自动开始运行。 您无需启动它。

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

    好的、感谢您的解决方案、我将尝试并告诉您它的结果。

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

    大家好、Bruce、

    感谢您帮助回答问题。

    伊斯天

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

    大家好、我现在获得时钟信号、但仍然无法在 MSP430FR2533和 RFID MFRC522之间建立 SPI 通信。  

    我的编码文件如下:e2e.ti.com/.../tm_5F00_stm_5F00_mfrc_5F00_522.c

    e2e.ti.com/.../eusci_5F00_a_5F00_spi.he2e.ti.com/.../0334.main.c

    请建议任何更正。

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

    您的测试案例是什么? 您如何知道自己没有成功?

    --

    > EUSCI_A_SPI_transmitData (EUSCI_A0_BASE、12);

    这看起来有点奇怪。 您是否意味着类似于(在循环中)的东西:

    > EUSCI_A_SPI_transmitData (EUSCI_A0_BASE、buffer[i]);

    --

    >buffer[1]= EUSCI_A_SPI_receiveData (EUSCI_A0_BASE);

    您需要等待 SPI 在此处完成。 尝试在此行前面加上以下内容:

    > EUSCI_A_SPI_isBusy (EUSCI_A0_BASE);

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

    好的、会尝试这个、

    或者我能尝试一下  

    >_DELAY_CYCLES (100);

    而不是   

    > EUSCI_A_SPI_isBusy (EUSCI_A0_BASE);

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

    除此之外、我还面临另一个问题、我的 MSP430 USB 调试接口给出了以下错误:

    >  

    MSP430:文件加载程序:验证失败:地址0x0D106处的值不匹配请验证目标存储器和存储器映射。
    MSP430:GEL:文件:C:\Users\admin\workspace_v10\Cap_32_30_5\Debug\Cap_32_30_5.out:发生数据验证错误、文件加载失败。

    经过5到6个随机操作后、程序 自动调试、而无需对代码进行任何更改。

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

    是的。 但它并不那么强大。  

    尝试不使用验证、CCS 将首先从器件中读取代码、并将其与工作区中的现有工程进行比较。 您的 MCU 中的代码可能已更改。  

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

    您好、伊斯天、

    我尝试了您建议的解决方案、但它不起作用。

    我还尝试了论坛中关于以下链接的建议解决方案、但它也不起作用。

    https://e2e.ti.com/support/microcontrollers/msp430/f/166/t/648591?CCS-MSP430FR5969-File-Loader-Data-verification-failed-Please-verify-target-memory-and-memory-map-

    那么、硬件方面是否可能存在问题?

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

    或使用 UNIFLASH 会有所帮助?

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

    您好!

    我已检查 UNIFLASH、

    UNIFLASH 的所有选项都存在于 CCS 中、因此我想 UNIFLASH 几乎不会有任何用途。

    等待响应、无法进一步开发、因为由于存储器进入写保护模式、此时卡住。

    谢谢你。

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

    您好!

    您可以尝试使用 uniflash 擦除整个主存储器和信息存储器。