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.
您好!
我将 msp430fr4133 launchpad 用作主控模式、将另一个 msp430fr4133控制器板用作从控模式。
我只需将数据从主器件发送到从器件、然后监控回传数据。
我只想在 LCD 上显示接收到的数据。 但我没有得到任何结果。
请提供任何帮助。 我的代码在这里。
**** 主控器件*******
#include
#include "global.h"
unsigned char RXData = 0;
unsigned char TXData;
int main (空)
{
WDTCTL = WDTPW | WDTHOLD; //停止看门狗计时器
P5SEL0 |= BIT0 | BIT1 | BIT2 | BIT3; //将4-SPI 引脚设置为第二个功能
UCB0CTLW0 |= UCSWRST; //**将状态机置于重置中**
UCB0CTLW0 |= UCMST|UCSYNC|UCCKPL|UCMSB|UCMODE_1_UCSTEM; // 4引脚、8位 SPI 主器件
//时钟极性高,MSB
UCB0CTLW0 |= UCSSEL_SMCLK; //选择 SMCLK
UCB0BR0 = 0x01; ///2、fBitClock = fBRCLK/(UCBRx+1)。
UCB0BR1 = 0;
// UCA0MCTLW = 0; //无调制
UCB0CTLW0 &=~UCSWRST; //**初始化 USCI 状态机**
UCB0IE |= UCRXIE; //启用 USCI_A0 RX 中断
TXData = 0x01; //保留 TX 数据
PM5CTL0 &=~LOCKLPM5;//禁用 GPIO 上电默认高阻抗模式
//激活先前配置的端口设置
while (1)
{
UCB0IE |= UCTXIE; //启用 TX 中断
_bis_SR_register (LPM0_bits | GIE); //启用全局中断,进入 LPM0
_DELAY_CYCLES (2000); //下次传输前延迟
TXData++; //递增发送数据
//__delay_cycles (20000);
}
}
#if defined (__TI_Compiler_version__)|| Defined (__IAR_systems_ICC__)
#pragma vector=USCI_B0_vector
_interrupt void USCI_B0_ISR (void)
#Elif defined (_GNU_)
void __attribute__((中断(USCI_B0_vector)) USCI_B0_ISR (void)
其他
错误编译器不受支持!
#endif
{
开关(__evo_in_range (UCB0IV、USCI_SPI_UCTXIFG))
{
USCI_NONE 案例:中断; //向量0 -无中断
USCI_SPI_UCRXIFG 案例:
RXData = UCB0RXBUF;
UCB0IFG &=~UCRXIFG;
_BIC_SR_REGISTER_ON_EXIT (LPM0_BITS);//唤醒以设置下一个 TX
LCDDataOut (RXData、pos1); //在 LCD 上显示接收数据
中断;
USCI_SPI_UCTXIFG 案例:
UCB0TXBUF = TXData; //发送字符
UCB0IE &=~UCTXIE;
中断;
默认值:break;
}
}
(三 从属方********
#include
int main (空)
{
WDTCTL = WDTPW|WDTHOLD; //停止看门狗计时器
P5SEL0 |= BIT0 | BIT1 | BIT2 | BIT3; //将4-SPI 引脚设置为第二个功能
UCB0CTLW0 |= UCSWRST; //**将状态机置于重置中**
UCB0CTLW0 |= UCSYNC|UCCKPL|UCMSB|UCMODE_1|UCSTEM; // 4引脚、8位 SPI 从器件
//时钟极性高,MSB
UCB0CTLW0 |= UCSSEL_SMCLK; //选择 SMCLK
UCB0BR0 = 0x01; ///2、fBitClock = fBRCLK/(UCBRx+1)。
UCB0BR1 = 0;
// UCB0MCTLW = 0;//无调制
UCB0CTLW0 &=~UCSWRST; //**初始化 USCI 状态机**
UCB0IE |= UCRXIE; //启用 USCI_A0 RX 中断
PM5CTL0 &=~LOCKLPM5; //禁用 GPIO 上电默认高阻抗模式
//激活先前配置的端口设置
_bis_SR_register (LPM0_bits | GIE); //输入 LPM0,启用中断
}
#pragma vector=USCI_B0_vector
_interrupt void USCI_B0_ISR (void)
{
while (!(UCB0IFG&UCTXIFG)); // USCI_A0 TX 缓冲器就绪?
UCB0TXBUF = UCB0RXBUF; //回显接收到的数据
}
尊敬的 Dennis:
谢谢!!
我的问题是、我无法在主 MSP430 launchpad 板的 MISO 引脚上获取任何数据。
在这里、我的主板是 msp430fr4133 launchpad、而从板是我们设计的另一个 msp430fr4133控制器板。
我将 SCLK、MOSI、MISO、CS、VDD、GND 引脚连接到从板。
我的代码中是否有任何问题?