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.

[参考译文] MSP430FR6.9891万:在SlaveMode中,UCCKPH=1时,不中断USCIA0接口

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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/582915/msp430fr69891-no-interrupt-from-uscia0-interface-in-slavemode-with-ucckph-1

部件号:MSP430FR6.9891万
主题中讨论的其他部件: MSP430FR6989

你好

我正在使用带有MSP430FR6.9891万的LaunchPad评估套件。

我想在从属模式下使用SPI接口USCIA0,4引脚模式有源高,并启用时钟相位标记UCCKPH=1

我有UCA0IE设置,也设置了GIE。 在逻辑分析器上,我可以看到UCA0STE引脚变高,时钟工作,数据(SIMO)正确,但中断未激活。

我可以观察到,如果我不设置UCCKPH (UCCKPH=0),中断就会工作,而且如果我使用UCSWRST=0 (不正确)配置SPI接口,它也会工作。

我正在将CCS 7与GNU编译器(GNU 6.2 v.1.16 DOMNIUM技术有限公司)配合使用

此处我的配置:

void初始化Uca0Spi(void){

//为SPI操作配置USI_A0
UCA0CTLW0 = UCSWRST; //**将状态机置于复位**
#IF (RX_MODE ==1)
UCA0CTLW0 |= UCSYNC | UCMSB | UCCKPH | UCMODE_1;
#else
UCA0CTLW0 |= UCSYNC | UCMSB | UCCKPH;
#endif

UCA0CTLW0 &=~UCSWRST;
#IF (RX_MODE ==1)
UCA0IE |= UCRXIE;
__no_operation();
#endif
} 

有什么想法?

提前感谢

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

    您正在使用什么主设备,其时钟配置是什么(相位和极性)? 您是否考虑过在更改相位时更改时钟极性(UCCKPL)? 当中断工作时,您是否收到了正确的数据? 如果是这样,则MSP430FR69这么 多的SPI配置似乎是正确的,并且不会出现问题。 您应该检查CCS调试器内的eUSCI寄存器,以确保它们与预期一样,如果未设置UCSRST,则很可能无法正确修改它们。 请提供您提到的逻辑分析器屏幕截图。

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

    我正在使用一个收发器芯片,它充当时钟速率9600的SPI主控器。 在检测到同步字词后,它会激活从属设备。 不,我没有更改时钟相位,因为它应该是这样的(UCCKPH=1,UCCKPL=0)。 它也在MSP430FR6..系列指南中列出。

    如果在配置接口时未设置重置标志,我将获得Corret数据,但我对此解决方案不信任,因为它不是正确的方式。

    此致

    Claudio

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    就这样,我们在同一页面上,主时钟处于非活动状态,低电平,数据在第一个UCLK边缘捕获/在第二个边缘更改? 您在逻辑分析器屏幕截图中使用UCCKPL =0且UCCKPH =1,但没有得到中断? 您是否尝试手动控制STE引脚或使用了3线模式? 没有SPI USCI勘误表可用于了解此行为。

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

    是的。 我尝试手动控制STE引脚,结果没有出现不同的行为。 我还尝试了基本工作的3引脚模式(调用中断例程),但我没有直接来自SPI接口的计时信息,到目前为止,我未能通过端口中断获得正确的同步。

    此致

    Claudio

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    这似乎是一个涉及STE引脚的计时问题,您是否检查了数据表表表5-20和图5-18中的所有规格并确认没有违反规格? STE引脚高电平之前发生了什么情况? 我在SOMI线路上看到脉冲,在MSP430从属设备设置为活动状态之前,CLK正在驱动。

    进一步查看器件勘误文档后,我发现了一个实例,在以下情况下使用USCI 4引脚SPI从属模式:UCCKPH =1,当数据在STE变为非活动状态之前加载到传输缓冲区(1),当STE处于非活动状态时,当UCLK上出现下降时钟边缘时, 将导致UCxTXIFG设置错误。 写入传输缓冲区将覆盖其当前内容,导致意外覆盖,因此在这些情况下传输缓冲区中的数据可能会丢失。 很遗憾,没有解决方法,如果遇到勘误,建议客户不要在UCCKPH = 1的情况下使用4引脚SPI从属模式。 即使FR6989错误表中没有记录,您的问题也可能与此类似。

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

    对我来说,问题已经解决了。 我可以设法重新配置SPI主中继器并更改时钟极性,因此我可以避免设置UCCKPH标志,而是现在设置UCCKPL标志。 也许我会试着在其他时间找出真正的问题。

    非常感谢您。

    也许我会在一段时间后在勘误表上找到一个更新;)

    此致

    Claudio

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

    您好,Claudio:

    您为什么使用UCCKPH=1?

    您的图片将显示所提供时钟的UCCKPL=1和UCCKPH=0信号。

    此致,

    Peter Weber