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:没有来自 UCB0 - SPI 模式的数据

Guru**** 2553450 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/782911/msp430g2553-no-data-coming-out-of-ucb0---spi-mode

器件型号:MSP430G2553

我尝试使用 UCB0与 ADC 进行通信、同时使用 UCA0通过 UART 与 PC 进行通信、但我似乎无法从器件上的 P1.7 (SPI OUT)中获得任何结果、也无法获得发送中断。

我已经剥离了代码、因此我甚至不想设置 UART、但仍然不幸运。 我没有连接任何器件、P1.7 (数据表中的 UCB0SIMO)似乎是悬空的、没有数据输出?  

//#include 
#include "msp430g2553.h"

void portCfg()
{
P1SEL |= BIT7 + BIT6 + BIT4;
P1SEL2 |= BIT7 + BIT6 + BIT4;
P1DIR |= BIT4 + BIT0;
P2DIR |= BIT0;
P2OUT |= BIT0;
}

void spiInit()
{
UCB0CTL1 |= UCSWRST;

UCB0CTL1 |= 0x02;
UCB0CTL0 |= UCMSB + UCMST + UCSYNC;

UCB0BR0 |= 0x02;
UCB0BR1 = 0;

UCB0CTL1 &=~UCSWRST;

IE2 |= UCB0TXIE;
}

int main (void)
{
WDTCTL = WDTPW | WDTHOLD;

portCfg();
spiInit();

UCB0TXBUF ='U';

BIS_SR (LPM0 + GIE);
}

#pragma vector = USCIAB0TX_vector
__interrupt void TransmitInterrupt (void)
{
UCB0TXBUF ='U';
} 

在我这里,有没有关于外设使用的明确指南,如设置哪些寄存器,它们做什么,针对各种功能和模式的所有不同代码? 将示例代码的几个位拼接在一起并在末尾划伤我的头似乎让我找不到位置、而该微控制器的数据表中没有列出我需要使用的所有寄存器和速记宏。

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

    您好、Jon、

    开始学习如何正确使用板载外设的最佳方法是从 TI Resource Explorer 导入要使用的外设示例代码

    您可以参考提供的 msp430g2xx3_uscia0_SPI_09.c 和其他 SPI 示例、以了解如何正确配置和使用 USCI SPI 外设。

    然后、您可以执行同样的操作来查找 UART 示例。

    一旦您掌握了两个外设的正确使用方式、您就可以将该功能移植到自己的项目中、并从项目中进行扩展。

    有关外设寄存器的详细信息、请参阅《MSP430G2553器件系列用户指南》(http://www.ti.com/lit/ug/slau144j/slau144j.pdf)

    此致、

    Matt

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

    用户指南是我一直在寻找的文档、这非常有用。

    但是、遗憾的是、我仍然无法解决我的问题。 我已经使用了您提到的 SPI 示例中的代码、将其修改为引用 UCB0而不是 UCA0、并且我无法传输我尝试传输的数据流。

    有什么想法、我的代码可能会出什么问题? 看起来应该相当简单...

    唯一的问题是"UCB0MCTL"显然不存在、所以我不得不忽略这条线、也许我只能在 A 上而不是 B 上设置它?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Jon、

    没有 UCB0MCTL 寄存器、因为 USCI B0外设不支持仅在 USCI A0外设上的 UART。

    您能否插入您实施的修改后的示例代码、以便我可以查看问题所在的位置? 已验证示例代码是否正常工作、因此如果外设和端口初始化被正确移植到 USCI B0模块、那么在传输期间应在 MOSI 引脚上看到 SPI 传输。

    此致、

    Matt
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    是的、经过一段时间后终于点击了...

    在经历了漫长而痛苦的一天之后,我现在已经使一切顺利进行了,感谢 Matt 的帮助:)