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.

[参考译文] MSP430F5418A:MSP430 SPI从属接收问题

Guru**** 2587365 points
Other Parts Discussed in Thread: MSP430F5418A

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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/616900/msp430f5418a-msp430-spi-slave-receive-issue

部件号:MSP430F5418A

 我们的应用程序正在将同步接口作为SPI从属接口实现。 通信协议为半双工,因此驱动程序正在接收或传输。 时钟相位和极性由标准定义,我们无法更改它们。 它可以运行数天,数月和永久,但有时UCB0会在每个接收字节的第7个时钟边缘之后发出接收中断。 接收缓冲区中的数据或者移动一位,或者有时传输缓冲区中的内容移动一个字节。 在每次接收事务之前,都会重置和配置UCI。 有时需要几个POR来清除该情况,并且数周内不会再次出现。 它只有系统的1个组件,对整个器件进行电源循环非常不方便,必须以物理方式打开装置才能重置MSP430。 它已经开始出现在现场,变得非常麻烦。 我附上了良好和不良接收序列的捕获。 接收中断设置清除IO引脚,使我们知道何时发生。

SPI接收初始化

{
	volatile uint8_t	dummy;
	// SPI communication
	StopFlashWrite = true;
	UCB0CTL1			= UCSWRST;
	RcvState = R_DEVT_1;
	RcvCount = 0;
	XmtCount = 0;
	校验和			= FALSE;
	错误代码			= 0;
	UCB0TXBUF			= 0xDE;
	P3SEL 		= CEAmoSi | CEAClock;
	P3DIR				&=~(CEAMiSo | CEAmoSi | CEAClock);
	UCB0CTL0			= UCMSB + UCSYNC + UCCKPH;
	UCB0CTL1			&=~UCSWRST;//释放重置
	虚拟				= UCB0RableXBUF;
	ENRxInterrupt (
)

正确的接收计时

计时不正确显示整个握手。 收到4个字节时,确定消息已损坏,接收中止。

相同的捕获,更高的分辨率。

此致,

Paul Terricciano

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

    您好,Paul:

    非常感谢您的详细帖子-说明和屏幕截图非常有帮助!

    您所观察到的问题似乎是由USCI40勘误表引起的。 我已提供MSP430F5418A 的错误表中的片段供您参考

    此外,这里还有一些线程,它们讨论了此勘误表以及变通办法的工作原理。

    请尝试此变通办法,并告诉我是否可以解决此问题。

    此致,

    詹姆斯

    MSP客户应用程序

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    James,
    我们已经阅读了USCI40勘误表,尽管它似乎仅涉及我们尚未发现的传输问题。 根据变通办法,我们已尝试在接收中断处理程序中写入传输缓冲区,但这没有产生任何影响。 我们尝试将外设置于RESET (复位)状态,UCB0CTL1 = UCSWRST;这种状态持续时间过长,超过一秒,这似乎有帮助,但对产品性能非常不利。 我们没有机会调整此重置保持时间。 是否有详细的说明,以便我尝试解释我们在系统的其他部分可能会采取的措施来触发这种情况?

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

    您好,Paul:

    感谢您的回复和尝试变通办法。

    根据您对该问题可能需要数天,数月甚至更长时间才能发生的描述,我怀疑SPI时钟信号上出现了来自操作环境,PCB上附近的噪声轨迹,PCB上的另一个设备等的噪音。 如果发生故障,可能MSP430F5418A会将其视为SPI时钟边缘,从而导致接收到的数据发生偏移。 我看到您共享了逻辑分析器数据,这非常有用。 但是,如果存在某个范围,则可能需要使用该范围来捕获该小问题。

    什么是主SPI设备? 除了MSP430F5418A之外,是否还有其它从SPI器件? 如果是,是否可以由任何其他从SPI设备(除了MSP430F5418A)导致SPI时钟信号出现故障?

    对于将USCI模块保持在MSP430F5418A的复位或电源循环中,主SPI器件需要知道从SPI器件何时复位以保持相互同步。 如果MSP430F5418A脱离重置,则很可能无法与主SPI器件同步。 我认为这就是为什么它有时会起作用,但并不总是起作用的原因。

    此致,

    詹姆斯

    MSP客户应用程序

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

    我只是检查一下您是否能够解决此问题。

    此致,

    詹姆斯

    MSP客户应用程序