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.

[参考译文] MSP430FR5969:在输出引脚上不读取 eSCU_A1 SPI 主时钟

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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/1340844/msp430fr5969-escu_a1-spi-master-clock-not-read-on-output-pin

器件型号:MSP430FR5969
主题中讨论的其他器件:MSP430WARE、、、 MSP-EXP430FR5969

我的 eSCU_A1模块的 SPI CLK 输出有问题。 由于我的代码不起作用、我为一个3 SPI 主控器拉取了 eSCU_A0模块示例代码的 TI 示例、并为 eSCU_A1模块修改了该示例。 遗憾的是、该代码也不起作用。 我在 SPI 引脚上放置了一个示波器、

A1 SPI CLK ->(预期=时钟、测量=噪声、无时钟)
A1 SPI SIMO ->(预期=数据包、测量的=数据包)
A1 SPI SOMI ->无驱动器(预期值=噪声、测量值=噪声)

这是测试代码。 我在论坛上搜索过、但无法找到适合我的解决方案的类似问题。 有什么建议吗?

/*-版权-, BSD_EX
 *版权所有(c) 2012、德州仪器(TI)公司
 保留所有权利。
 *
 *以源代码和二进制形式重新分发和使用,有或没有
 *修改,在以下条件允许的条件下
 *满足:
 *
 ** 源代码的重新分发必须保留以上版权
 *   请注意,本条件清单和以下免责声明。
 *
 ** 二进制形式的再分发必须复制上述版权
 *   通知,本条件清单和下述免责声明在
 *   与分发一起提供的文档和/或其他材料。
 *
 ** 德州仪器公司名称或公司名称
 *   其贡献者可用于认可或推广派生的产品
 *   从本软件未经事先书面许可。
 *
 *本软件由版权持有者和贡献者"按原样"提供
 本站明确声明不作出任何种类的所有明示或暗示的保证,包括但不限于关于适销性、适用于
 *对特定产品的适销性和适用性的暗示保证
 *免责声明。 在任何情况下,版权所有者或
 *贡献者对任何直接、间接、偶然、特殊、
 *示例性或后果性损害(包括但不限于:
 *替代产品或服务的采购;使用、数据或利润的损失;
 *或业务中断)然而造成和任何责任理论,
 *无论是合同,严格的责任,或侵权(包括疏忽或
 *其他)因使用本软件而产生的任何原因、
 *即使被告知此类损害的可能性。
 *
 *
 *
 *                      msp430代码示例免责声明
 *
 * MSP430代码示例是自包含的低级程序、通常
 *以高度优化的方式演示单个外设功能或设备特性
 *简洁的方式。 为此、代码可依赖于器件的加电默认值
 *寄存器的值和设置,如时钟配置和小心必须
 *在合并来自几个示例的代码时采取,以避免潜在的侧
 *效果。 有关 GUI、另请参阅 www.ti.com/grace 和 www.ti.com/msp430ware
 *针对外设配置的 API 函数库方法。
 *
 *-/版权-*/
//*****
//  MSP430F59xx 演示- eUSCI_A1、SPI 3线主器件增量数据
//
//  说明:SPI 主器件使用3线制模式与 SPI 从器件通信。 递增
//  数据由从0x01开始的主器件发送。 接收到的数据应
//  与之前的发送相同,TXData = RXData -1。
//  USCI RX ISR 用于处理与 CPU 的通信,通常在 LPM0中。
//  ACLK = 32.768kHz、MCLK = SMCLK = DCO ~1MHz。  BRCLK = ACLK/2
//
//
//                  MSP430FR5969
//-------------------------------------------------------                 
//           /|\|                 
//            | ||                 
//            --|RST             |
//               |                 
//               |            P2.5|->数据输出(UCA1SIMO)
//               |                 
//               |            P2.6|<-数据输入(UCA1SOMI)
//               |                 
//               |            P2.4|->串行时钟输出(UCA1CLK)
//
//*****
#包含

Volatile unsigned char RXData = 0;
Volatile unsigned char TXData;

int main (空)
{
 WDTCTL = WDTPW | WDTHOLD;                //停止看门狗计时器

 //配置 GPIO
 P2SEL1 |= BIT4 | BIT5 | BIT6;            // USCI_A1操作
// P2SEL0 &=~(BIT4 | BIT5 | BIT6);

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

 //配置 USCI_A1以进行 SPI 操作
 UCA1CTLW0 = UCSWRST;                     //**将状态机置于复位状态**
 UCA1CTLW0 |= UCMST | UCSYNC | UCCKPL | UCMSB;// 3引脚8位 SPI 主控
                                           //时钟极性高,MSB
 UCA1CTLW0 |= UCSSEL_SMCLK;              // SMCLK
 UCA1BR0 = 0x02;                          ///2
 UCA1BR1 = 0;                             //
 UCA1MCTLW = 0;                           //无调制
 UCA1CTLW0 &&~UCSWRST;                   //**初始化 USCI 状态机**
 UCA1IE |= UCRXIE;                        //启用 USCI_A1 RX 中断
 TXData = 0x1;                            //保存 TX 数据

 while (1)
 {
   UCA1IE |= UCTXIE;
   __ bis_SR_register (LPM0_bits | GIE);    // CPU 关闭、启用中断
   __delay_cycles (2000);                  //下一次传输之前的延迟
   TXData++;                              //递增发送数据
 }


#if defined (__TI_Compiler_version__)|| defined (__IAR_SYSTEMS_ICC__)
#pragma vector=USCI_A1_vector
__interrupt void USCI_A1_ISR (void)
#Elif 已定义(_ GNU _)
void __attribute__((interrupt (USCI_A1_vector))) USCI_A1_ISR (void)
#else
#错误编译器不受支持!
#endif
{
 switch (__even_in_range (UCA1IV、USCI_SPI_UCTXIFG))
 {
   USCI_NONE:中止;
   案例 USCI_SPI_UCRXIFG:
     RXData = UCA1RXBUF;
     UCA1IFG &=~μ H UCRXIFG;
     __BIC_SR_REGISTER_ON_EXIT (LPM0_BITS);//唤醒以设置下一个 TX
     中断;
   案例 USCI_SPI_UCTXIFG:
     UCA1TXBUF = TXData;                  //发送字符
     UCA1IE &=~UCTXIE;
     中断;
   默认值:中断;
 }

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

    我刚在 Launchpad (2.0版)上运行该代码、可以在 P2.4 (CLK)和 P2.5 (SIMO)上看到信号。  

    您正在使用什么平台?  由于您看到的是 SIMO 上的数据、大概是 SPI 单元正在生成时钟、它们并没有到达引脚/示波器。

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

    您好!

    示例代码应该能够正常工作。 根据 Bruce 的评论是否有任何更新?  

    此致、

    现金豪

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

    我使用的是 MSP-EXP430FR5969开发套件。 如果代码在您的电路板上运行、我将假定引脚有问题、并进行硬件测试。

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

    您好!

    您可以 在此链接中找到 MSP-EXP430FR5969原理图。https://www.ti.com/lit/ug/slau535b/slau535b.pdf。 

    此致、

    现金豪

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

    感谢你的帮助。 我发现问题是 CLK 引脚上的焊点出现断裂。 使用焊铁解决了此问题、电路板现在正在工作。 祝你度过美好的一天!