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.

[参考译文] MSP430FR2676:MSP430FR2676

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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/1422857/msp430fr2676-msp430fr2676

器件型号:MSP430FR2676
Thread 中讨论的其他器件: CCStudio

工具与软件:

大家好、团队成员:

我对 msp430fr2676微控制器还比较陌生。 我试图在 CC Studio 上查看微控制器的寄存器、却找不到  CAPTIOxCTL 寄存器(CapTouch Registers)进行调试。 能否请大家对此进行评论一下、我已经附上了可以在调试时看到的寄存器的屏幕截图。

我期待收到您的回复。

非常感谢
Criton

.

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

    尊敬的 Criton:

    与所有其他 MSP430外设寄存器不同、CapTIvate 寄存器不会面向终端用户。  这样做的主要原因是外设的复杂性。  公开这些信息将允许篡改寄存器、这可能导致外设无法正常运行、并成为 TI 的支持问题。  因此、可以使用带 API 的 CapTIvate 库、让用户无需了解寄存器和位及其功能即可操控外设功能。

    也就是说、您查找寄存器的具体原因是什么?

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

    大家好、Dennis Lehman、

    我正在浏览寄存器以了解其工作原理、以便可以相应地激活其他外设。 例如、我想在电容引脚0等检测到触控时激活 GPIO。 我从 CapTIvate 设计中心开始、它在这里为传感器设计生成代码、然后使用 CC Studio 上传代码。  

    是否需要将极具吸引力的库下载到 CCStudio 中?  

    非常感谢、此致、
    Criton  

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

    尊敬的 Criton:

    如果您尚未发现 CapTIvate 技术指南、我建议您先在软件一章中了解库 API 的工作原理、然后在该章中的"操作方法"部分中了解如何读取传感器的简单示例。  

    CapTIvate 库作为您从 GUI 生成的每个 CapTIvate 工程的一部分提供。  它包含基本模块(本质上是 HAL 层)(用于操作 CapTIvate 寄存器的硬件抽象)和高级模块(具有传感器特定的处理功能)。

    基础和高级处理函数位于项目的"CapTIve"路径中、位于 Base 和 Advanced 文件夹下、并编译到.lib (对于 CCS 项目)和.R43 (对于 IAR 项目)中。 这些模块没有可用的源代码。  除了.lib 模块之外、基本函数和高级函数也作为预编程函数存在于存储器的 MSP430的 ROM 部分中。  在器件的 ROM 部分中查找基本函数和高级函数可释放程序存储器(FRAM)中约12KB 的空间、从而为应用提供更多空间。

    还有一个通信模块、该模块具有 MSP430向 GUI 传送传感器数据和控制信息所需的 UART 和 I2C 驱动程序。  这些函数利用 MSP430 driverlib 函数、"driverlib"文件夹下的每个项目中也包含这些函数。  driverlib 源代码可用、但通常您不需要它。  CapTIvate 库使用的 driverlib 函数调用会执行与 GUI 通信所需的所有操作、但您可以将它们重新用于在使用 GUI 完成后您的应用程序。  例如、当使用 CAPT-PGMR 时、可以重复使用 I2C 驱动程序函数与 PCB 上的 I2C 器件通信、或使用 UART 将数据发送到 PC 终端应用程序。

    最后是应用层、它是您的代码所在的位置。 通常、您需要将所有传感器处理代码放入所谓的"回调"函数中。  回调函数在测量传感器后自动调用、因此无需担心何时运行传感器处理代码。  您可能需要在此处执行某些操作、例如在按下按钮时打开/关闭 LED。  可通过直接访问端口寄存器或使用其中一个 driverlib 函数来设置/清除 GPIO 引脚来实现此目的。

    再次通读"软件"一章、您应该获得最需要的一切。

    就是这样。  

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

    大家好、Dennis Lehman、

    非常感谢您对详细信息的答复。 如果有任何疑问、我会继续解答。

    此致、
    Criton

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

    好的。  我将继续并关闭此帖子、但可以在30天内通过其他问题重新打开它。  过去30天、您将需要创建一个新模块。

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

    尊敬的 Dennis:

    我是从设计指南开始的。 它生成了一个代码、我随后进行了修改、如下所示。 在调试时、我无法获得 UART 输出终端。 我使用 Tera Term、并使用 MSP 编程器将其连接到终端。 每当我按下传感器但不按下 UART 时、我使 LED 正常工作。 您能告诉我会出什么问题吗? 我已附上下面的代码

    非常感谢、此致、
    Criton


    #include <msp430.h>                      // Generic MSP430 Device Include
    #include "CAPT_CommConfig.h"
    #include "UART.h"
    #include "UART_Definitions.h"
    #include "driverlib.h"                   // MSPWare Driver Library
    #include "captivate.h"                   // CapTIvate Touch Software Library
    #include "CAPT_App.h"                    // CapTIvate Application Code
    #include "CAPT_BSP.h"                    // CapTIvate EVM Board Support Package
    #include "intrinsics.h"
    #include "UART_Definitions.h"
    #include "stddef.h"
    
    // Assumes SMCLK = 2MHZ
    #define BAUD_19200
    
    #ifdef BAUD_9600
    // EUSCI runs @ 9600
    #define UART_SAMPLING_MODE    (EUSCI_A_UART_OVERSAMPLING_BAUDRATE_GENERATION)
    #define UART_PRESCALER                                              (13)
    #define UART_FIRST_STAGE_MOD                                        (0)
    #define UART_SECOND_STAGE_MOD                                       (69)
    
    #elif defined BAUD_19200
    // EUSCI runs @ 19.2K
    #define UART_SAMPLING_MODE      (EUSCI_A_UART_OVERSAMPLING_BAUDRATE_GENERATION)
    #define UART_PRESCALER                                                (6)
    #define UART_FIRST_STAGE_MOD                                          (8)
    #define UART_SECOND_STAGE_MOD                                         (17)
    
    #elif defined BAUD_38400
    // EUSCI runs @ 38.4K
    #define UART_SAMPLING_MODE      (EUSCI_A_UART_OVERSAMPLING_BAUDRATE_GENERATION)
    #define UART_PRESCALER                                                (3)
    #define UART_FIRST_STAGE_MOD                                          (4)
    #define UART_SECOND_STAGE_MOD                                         (4)
    
    #elif defined BAUD_57600
    // EUSCI runs @ 57.6K
    #define UART_SAMPLING_MODE      (EUSCI_A_UART_OVERSAMPLING_BAUDRATE_GENERATION)
    #define UART_PRESCALER                                                (2)
    #define UART_FIRST_STAGE_MOD                                          (2)
    #define UART_SECOND_STAGE_MOD                                         (187)
    
    #elif defined BAUD_115200
    // EUSCI runs @ 115.2K
    #define UART_SAMPLING_MODE      (EUSCI_A_UART_LOW_FREQUENCY_BAUDRATE_GENERATION)
    #define UART_PRESCALER                                                (17)
    #define UART_FIRST_STAGE_MOD                                          (0)
    #define UART_SECOND_STAGE_MOD                                         (74)
    
    #elif defined BAUD_230400
    // EUSCI runs @ 230.4K
    #define UART_SAMPLING_MODE      (EUSCI_A_UART_LOW_FREQUENCY_BAUDRATE_GENERATION)
    #define UART_PRESCALER                                                (8)
    #define UART_FIRST_STAGE_MOD                                          (0)
    #define UART_SECOND_STAGE_MOD                                         (214)
    
    #elif defined BAUD_250000
    // EUSCI runs @ 250K
    #define UART_SAMPLING_MODE      (EUSCI_A_UART_LOW_FREQUENCY_BAUDRATE_GENERATION)
    #define UART_PRESCALER                                                (8)
    #define UART_FIRST_STAGE_MOD                                          (0)
    #define UART_SECOND_STAGE_MOD                                         (0)
    
    #else
    #warning "NO BAUD RATE SELECTED"
    #endif
    
    
      const tUARTPort g_myUartPort =
    {
        .pbReceiveCallback = NULL,
        .pbErrorCallback = 0,
        .peripheralParameters.selectClockSource = EUSCI_A_UART_CLOCKSOURCE_SMCLK,
        .peripheralParameters.clockPrescalar = UART_PRESCALER,
        .peripheralParameters.firstModReg = UART_FIRST_STAGE_MOD,
        .peripheralParameters.secondModReg = UART_SECOND_STAGE_MOD,
        .peripheralParameters.parity = EUSCI_A_UART_NO_PARITY,
        .peripheralParameters.msborLsbFirst = EUSCI_A_UART_LSB_FIRST,
        .peripheralParameters.numberofStopBits = EUSCI_A_UART_ONE_STOP_BIT,
        .peripheralParameters.uartMode = EUSCI_A_UART_MODE,
        .peripheralParameters.overSampling = UART_SAMPLING_MODE
    };
    
    
    void main(void)
    {
    	//
    	// Initialize the MCU
    	// BSP_configureMCU() sets up the device IO and clocking
    	// The global interrupt enable is set to allow peripherals
    	// to wake the MCU.
    	//
       
    	WDTCTL = WDTPW | WDTHOLD;
        P6OUT &= ~BIT0;                         // Clear P1.0 output latch for a defined power-on state
        P6DIR |= BIT0;                        // Set P1.0 to output direction
    	BSP_configureMCU();
    	//__bis_SR_register(GIE);
        UART_openPort(&g_myUartPort);        // Open Uart for communication
        UART_transmitBuffer("\n\rHello World!\n\r", sizeof("\n\rHello World!\n\r")); // welcome message
    
    	//
    	// Start the CapTIvate application
    	//
    	CAPT_appStart();
    
    	//
    	// Background Loop
    	//
    	while(1)
    	{
    		//
    		// Run the captivate application handler.
    		//
    	    LED1_ON;
            if(CAPT_appHandler()==true)
             {
                P6OUT = BIT0;   // led on port 6 turns on
                UART_transmitBuffer("\n\rHello World!\n\r", sizeof("\n\rHello World!\n\r")); // interuupt message
             }
            else 
                {
                    P6OUT = ~BIT0; // led on port six turns off
                }
    		//
    		// This is a great place to add in any 
    		// background application code.
    		//
    		__no_operation();
    
    		//
    		// End of background loop iteration
    		// Go to sleep if there is nothing left to do
    		//
    		CAPT_appSleep();
    		
    	} // End background loop
    } // End main()
    

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

    此问题已解决、我看到了有关 R24/R25的论坛博文。 我将 FTDI 连接到 MCU 的 Rx 和 TX 引脚、并将 PC 连接到 PC。