工具/软件:Code Composer Studio
您好,
我是微处理器的新手,我认为用SPI协议连接两个MSP430G2553是一个很好的练习。 我已经在下面编写了代码,并且具有以下连接,但我尚未设法在主设备和从设备之间传输正确的信息。 大多数情况下,我在两侧只收到0。
我希望您能提供一些帮助或指导。
非常感谢。
Kamil
MSP430_1 <=>MSP430_2
GND <=> GND
WFP 1.5 <=>WFP 1.5
WFP 1.7 <=>WFP 1.6
WFP 1.6 <=>WFP 1.7
#include <MSP4S.h>
#define SSI_SCLK_PIN BIT5.
#define SSI_SOMI_PIN BIT6.
#define SSI_SIMO_PIN BIT7
void ssI_Init(无符号char从属){
UCB0CTL1 |= UCSWRST;//设置软件
如果(从属){
UCB0CTL0 || UCCKPH | UCMSB | UCSYNC;// 3引脚,8位SPI从属设备
}其他{
UCB0CTL0 || UCMST | UCCKPH | UCMSB | UCSYNC;// 3引脚,8位SPI主控制器
UCB0CTL1 |= UCSSEL_2;// SMCLK
UCB0BR0 = 0x01;// 1:1
UCB0BR1 = 0;
}
P1SEL || SSI_SCLK_PIN | SSI_SOMI_PIN | SSI_SIMO_PIN;// WFP 1.5 = SCLK, 1.6 = SOMI, WFP 1.7 = SIMO
P1SEL2 |= SSI_SCLK_PIN | SSI_SOMI_PIN | SSI_SIMO_PIN;
UCB0CTL1 &=~UCSWRST;//透明软件
__DELAY周期(50万);
}
void ssI_Transfer (const unsigned char tx_buf,unsigned char *rx_buf,unsigned char rx_len){
无符号字符I;
对于(i=0;i<rx_len;i++){
while (!(UC0IFG和UCB0TXIFG));
UCB0TXBUF = I? 0xFF:tx_buf;
while (!(UC0IFG和UCB0RXIFG));
Rx_buf[i]= UCB0RXBUF;
}
}
/**
主要c
*/
内部主(无效)
{
无符号字符A;
WDTCTL = WDTPW | WDTHOLD;//停止看门狗计时器
SSI_Init(1);
而(1){
SSI_Transfer (23,&A,1);
}
}