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.

[参考译文] CCS/MSP430FR6043:示例代码

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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/858918/ccs-msp430fr6043-sample-code

器件型号:MSP430FR6043

工具/软件:Code Composer Studio

您能否向我发送与水表 USS 模块相关的示例代码?

此致、

Sumit

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

    您好、Sumit、

    http://www.ti.com/tool/MSP-ULTRASONIC-DESIGN-CENTER

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

    您好、Ling、

    没有关于 USS 的示例代码。 您能告诉我这些代码吗

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

    您好、Sumit、

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

    您好、Ling、  

    您能否为 USS 模块共享独立代码?

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

    您好、Sumit、

    我们没有独立的代码。 我们建议客户使用 USS 设计中心来开发应用。

    谢谢、

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

    我有一个代码、您能告诉我该程序中的结果变量是什么以及代码的调试方式

    #include

    #define OSCTYPE_CRYAL OSCTYPE_1

    void HSPLL_init (void);
    void SAPH_init (void);
    void SDHS_init (void);

    unsigned int flush_address[10]、flush_data[1024]、i;


    #if defined (__TI_Compiler_version__)
    #pragma DATA_SECTION (结果、".leaRAM")
    #pragma RETAIN (结果)
    unsigned int results[1024]={0};
    #Elif defined (_IAR_systems_icc_)
    #pragma LOCATION = 0x5000
    _no_init unsigned int 结果[1024];
    #pragma REQUIRED =结果
    其他
    错误编译器不受支持!
    #endif

    int main (空)

    WDTCTL = WDTPW | WDTHOLD;//停止 WDT

    //将 P1.0配置为 LED 的输出
    P1OUT &=~BIT0;
    P1DIR |= BIT0;

    //禁用 GPIO 上电默认高阻抗模式以激活
    //先前配置的端口设置
    PM5CTL0 &=~LOCKLPM5;

    //根据 MCLK 的器件数据表的要求配置一个 FRAM 等待状态
    //在配置时钟系统之前在8MHz 以上运行。
    FRCTL0 = FRCTLPW | NWAITS_1;

    //时钟系统设置
    CSCTL0_H = CSKKEY_H;//解锁 CS 寄存器
    //每个器件勘误表在将频率更改为之前将分频器设置为4
    //防止因过冲瞬态而超出规格运行
    CSCTL3 = DIVA__4 | DIVM_4;//针对勘误表将所有相应的时钟源设置为4分频
    CSCTL1 = DCOFSEL_4 | DCORSEL;//将 DCO 设置为16MHz
    //延迟~10us 以使 DCO 稳定。 60个周期= 20个周期缓冲器+(10us /(1/4MHz))
    //__delay_cycles (60);
    CSCTL3 = DIVA__1 | DIVM_1 | DIVM__1;//针对16MHz 运行将所有分频器设置为1
    CSCTL3 = DIVA__1 | DIVM_1 | DIVM__1;// MCLK = SMCLK = 16MHz
    CSCTL0_H = 0;//锁定 CS 寄存器

    SAPH_INIT();
    SDHS_INIT();
    HSPLL_init();

    //将 TA2.1配置为每秒1次,以触发脉冲生成并切换 LED
    TA2CCR0 = 9400;
    TA2CCR1 = 4700;
    TA2CCTL1 = OUTMOD_7 | CCIE;//启用输出信号以触发 PPG、启用中断
    TA2CTL = TASSEL_ACLK | TACLR | MC_UP;//源自 ACLK (VLO)的定时器、清零定时器

    while (1)

    _bis_SR_register (LPM0_bits | GIE);//输入 LPM3 w 中断
    __no_operation();//进行调试

    void HSPLL_init (void)

    //配置 USSXT 振荡器
    HSPLLUSSXTLCTL = OSCTYPE_CRYAL | USSXTEN;

    //将定时器设置为在 LPM 中等待晶振稳定时间= 4096个时钟用于晶振谐振器。
    //对于8MHz XTAL、4096个时钟= 512us。 使用 VLO = 9.4kHz、等待5个计时器时钟周期= 532us。
    TA4CCR0 = 5;
    TA4CCTL0 = CCIE;//启用中断
    TA4CTL = TASSEL_ACLK | TACLR | MC_UP;//源自 ACLK (VLO)的定时器、清零定时器
    _bis_SR_register (GIE);//输入 LPM3、带中断
    __no_operation();//进行调试

    //检查振荡器是否稳定
    while ((HSPLLUSSXTLCTL 和 OSCSTATE)==0);

    //引脚上的输出振荡器
    HSPLLUSSXTLCTL &=~XTOUTOFF;

    //初始化 PLL
    //使用 PLLM 设置从我们的8MHz 输入获取80MHz 输出
    //公式:PLL 输出时钟频率 x 2 =输入时钟频率 x (PLLM+1)
    //输入时钟频率= 8MHz
    //所需的 PLL 输出时钟频率= 80MHz
    // PLLM = 19
    HSPLLCTL = PLLM4 | PLLM1 | PLLM0 | PLLINFREQ;//PLLM = 19、PLL 输入频率> 6MHz

    //为 UUPS 加电以启动 PLL
    UUPSCTL |= USSPWRUP;

    //等待 UUPS 上电
    while (((UUPSCTL & upstate_3)!= upstate_3);

    //等待 PLL 锁定
    while (!(HSPLLCTL 和 PLL_LOCK));

    void SAPH_init (void)

    //设置 PPG 设置
    SAPKEY = KEY;//解锁 SAPH 寄存器
    SAPHPGC = PLEV_0 | pPOL_0 | 0x000A;// 10个激励脉冲、0个停止脉冲、非活动时输出低电平、高极性
    SAPHPGLPER = 40;//低相位= 4 HSPLL 周期= 50ns
    SAPHPGHPER = 40;//高相位= 4 HSPLL 周期= 50ns
    SAPHPGCTL = TRSEL_2 | PPGCHSEL_0 | PGSEL_0;// TA2.1触发器、CH0输出、寄存器模式
    // SAPHPGCTL = TRSEL_2 | PPGCHSEL_1 | PGSEL_0;// TA2.1触发器、CH1输出、寄存器模式

    //将 PHY 设置为在专用 CH0_OUT 引脚上输出 PPG
    SAPHOSEL = PCH0SEL__PPGSE;//将 PPG 输出到 ch0
    // SAPHOSEL = PCH1SEL__PPGSE;//将 PPG 输出到 CH1

    // SAPHICTL0 &=~MUXCTL;// MUXCTL = 0
    // SAPHICTL0 &=~MUXSEL_0;//选择 CH0作为输入

    SAPHICTL0 &=~MUXCTL;// MUXCTL = 0
    SAPHICTL0 |= MUXSEL_1;//选择 CH1作为输入

    SAPHBCTL &=~ASQBSC;
    SAPHBCTL &= PGABSW;//Rx 偏置开关关闭(启用)。
    SAPHBCTL &= CH1EBSW;
    SAPHBCTL |= CPDA;

    //启用 PPG
    SAPHPGCTL |= PPGEN;

    void SDHS_init (void)

    //使用寄存器模式设置 SDHS
    SDHSCTL0 = TRGSRC_0 | AUTOSSDIS_1 | DALGN_1 | DFMSEL_1;//软件触发、稳定延迟后自动采样启动
    SDHSDTCDA = 0x0008;
    SDHSCTL1 = OSR_1;// OSR = 10 (80MHz/10 = 8MSPS)。 CS 必须设置 MCLK >= 8MHz。
    SDHSCTL2 = 256;// SMPSZ = 256个样本
    SDHSCTL6 = 0x1A;// PGA 增益0.1dB
    SDHSCTL7 = 0xC;// MODOPTI = 0xC (80MHz PLL 输出频率)
    SDHSDTCDA = 0;// DTC 传输数据到 LEA RAM 的开始
    SDHSIMSSC = ACQDONE;//启用采集完成中断(在传输256个采样后)
    SDHSCTL3 = TRIGEN_1;//启用触发
    SDHSCTL4 = SDHSON;//打开 SD 并开始转换
    __DELAY_CYCLES (320);// PGA 最坏情况下的延迟40uS 稳定时间


    //计时器 A2中断服务例程
    #if defined (__TI_Compiler_version__)|| Defined (__IAR_systems_ICC__)
    #pragma vector = TIMER2_A1_vector
    _interrupt void Timer2_A1_ISR (void)
    #Elif defined (_GNU_)
    void __attribute__((中断(TIMER2_A1_Vector)) Timer2_A1_ISR (void)
    其他
    错误编译器不受支持!
    #endif

    switch (__evo_in_range (TA2IV、TAIV__TAIFG))

    案例 TAIV__NONE:break;//无中断
    案例 TAIV__TACCR1:
    SDHSCTL5 &=~SSTRT;
    SDHSCTL5 |= SSTRT;//开始转换
    中断;
    案例 TAIV__TAIFG:中断;//溢出
    默认值:break;

    // SDHS 中断服务例程
    #if defined (__TI_Compiler_version__)|| Defined (__IAR_systems_ICC__)
    #pragma vector = SDHS_vector
    _interrupt void SDHS_ISR (void)
    #Elif defined (_GNU_)
    void __attribute__((中断(SDHS_vector))) SDHS_ISR (void)
    其他
    错误编译器不受支持!
    #endif

    switch (__event_in_range (SDHSIIDX、IIDX_6))

    案例 IIDX_0:中断;//无中断
    案例 IIDX_1:中断;// OVF 中断
    案例 IIDX_2:// ACQDONE 中断
    P1OUT ^= BIT0;//切换 LED 以显示新周期
    _delay_cycles (10000);
    __no_operation();//在此处放置断点以查看结果
    中断;
    案例 IIDX_3:中断;// SSTRG 中断
    案例 IIDX_4:中断;// DTRDY 中断
    案例 IIDX_5:中断;// WINHI 中断
    案例 IIDX_6:中断;// WINLO 中断
    默认值:break;


    //计时器 A4中断服务例程
    #if defined (__TI_Compiler_version__)|| Defined (__IAR_systems_ICC__)
    #pragma vector = TIMER4_A0_vector
    _interrupt void Timer4_A0_ISR (void)
    #Elif defined (_GNU_)
    void __attribute__((中断(TIMER4_A0_vector)) Timer4_A0_ISR (void)
    其他
    错误编译器不受支持!
    #endif

    //停止计时器并从 LPM 唤醒
    TA4CTL = MC__STOP;
    _BIC_SR_REGISTER_ON_EXIT (LPM3_BITS | GIE);
    __no_operation();

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

    您好、Sumit、

    我们建议客户使用 USS 设计中心来开发应用。

    您可以参考 TI EVM 示例项目源代码进行进一步研究。

     http://www.ti.com/product/MSP430FR6043/technicaldocuments 上的技术文档

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

    您好、ling、

    您能给我解释一下这个代码行吗

    #if defined (__TI_Compiler_version__)
    #pragma DATA_SECTION (结果、".leaRAM")
    #pragma RETAIN (结果)
    unsigned int results[1024]={0};
    #Elif defined (_IAR_systems_icc_)
    #pragma LOCATION = 0x5000
    _no_init unsigned int 结果[1024];
    #pragma REQUIRED =结果
    其他
    错误编译器不受支持!
    #endif

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

    http://processors.wiki.ti.com/index.php/Placing_Variables_in_Specific_Memory_Location_-_MSP430