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.

[参考译文] MSP430G2553:使用示波器读取SPI问题

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

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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/618963/msp430g2553-spi-reading-using-oscilloscope-issue

部件号:MSP430G2553

您好,TI:

我遇到两个MSP430G2553板之间的SPI通信问题。

我所做的是我创建了一个主版本和一个从版本,在这里我从主版本发送一个字节,然后在从版本中接收它,我正确地接收了它。

现在的问题是,我想使用模拟发现来显示发送的数据包(因为下一个步骤是用TMS320C5402 DSP替换从属设备),所以我只需要验证通信是否打开,我遇到的问题是在模拟发现中 (使用波形)我没有得到发送的字节(0xAA),但我得到了几个不同的值,如果我错过了什么或什么,我不会得到?

这是我正在使用的代码

#include <MSP430-h>
#include <msp430g2553.h>/*



WFP 1.0 -> SS (未使用)
* WFP -> miso
* WFP 1.2 -> MOSI
* WFP 1.4 -> CLK
* WFP 1.1 1.5 -> STE (未使用)
*
**/

#define SS_PIN BIT0
#define miso_PIN BIT1
#define MOSI_PIN BIIT2
#define CLK_PIN BIT4
#define STE_PIN Bit5


void main (void){
WDTCTL = WDTPW + WDTHOLD; //停止看门狗计时器


BCSCTL1 = CALC1_1MHz; //将DCO设置为1MHz
DCOCTL = CALDCO_1MHz;

P1SEL = Miso_PIN | MOSI_PIN | CLK_PIN;//| STE_PIN;
P1SEL2 = Miso_PIN | MOSI_PIN | CLK_PIN;//| STE_PIN;

UCA0CTL1 = UCSWRST;
UCA0CTL0 |= UCCKPH + UCMSB + UCMST + UCSYNC;// 3引脚,8位SPI主控制器
UCA0CTL1 |= UCSSEL_2;// SMCLK
UCA0BR0 |= 0x02;///2
UCA0BR1 = 0;//
UCA0MCTL = 0;//无调制
UCA0CTL1 &=~UCSWRST;//**初始化USCI状态机**


_ BIS_SR (GIE); //启用中断
i=0;
同时(1)
{
当(!(IFG2 & UCA0TXIFG));// USI_A0 TX缓冲器就绪?
UCA0TXBUF = 0xAA;//通过SPI发送0xAA到从属设备

P1OUT ^= BIT0;
__delay_cycles(1000);
}
}

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

    您是否能够成功使用SPI在两个MSP430G2553之间进行通信? 此外,我对模拟发现不是很熟悉,但我发现在您的MSP430代码中,您不使用芯片选择信号,而是在您的模拟发现屏幕截图中,您将芯片选择设置为低有效。 您是否认为这可能导致问题?

    此致,
    Caleb Overbay
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    对于实际的测试方案,可能不需要这样做,但您在每个字节之后都切换了WFP 1.0 ,而没有将此引脚配置为输出。 此外,如果以后要将其用作从属选择(SS_PIN),则在将内容复制到TX缓冲区后立即将其设置为高,将导致传输错误。 例如,您必须等待完成传输,然后才能通过轮询RX中断标志来停用从属设备。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好,

    您是否能够解决此问题? 如果是,您是否可以将您的解决方案发布到论坛,以帮助可能遇到相同问题的其他人?

    此致,
    Caleb Overbay