TI中文支持网
TI专业的中文技术问题咨询交流网站

MSP430G 系列USI 中SPI 传输16位数据

有没有大佬帮忙看看,我传输16位数据,这样写对吗?

void Spi_Init()
{
USICTL0 |= USIPE7 + USIPE6 + USIPE5 + USIMST + USIOE; // Port, SPI master
USICTL1 |= USIIE; // USI计数器中断启用
USICKCTL = USIDIV_4 + USISSEL_2; // /16 SMCLK
USICTL0 &= ~USISWRST; // USI released for operation
USISR = 0xfff0; // init装载数据
USICNT |= USI16B; //启用16位寄存器
USICNT |= 16; // init装载计数
}

uint Spi_RW(uint Send_Val)
{
uint Rec_Val;
USISR = Send_Val;
while(!(USIIFG & USICTL1)); //等待数据发送完成
USICTL1 &= ~USIIFG;
USICNT = 16;
while(!(USIIFG & USICTL1)); //等待数据发送完成
USICNT = 16;
Rec_Val = USISR;
USICTL1 &= ~USIIFG;
return (Rec_Val);
}

Susan Yang:

这个我们是有专门的例程的

dev.ti.com/…/node

msp430g2xx3_usci_spi_standard_master.cUSCI_A0, SPI 3-Wire Master multiple byte RX/TX
msp430g2xx3_usci_spi_standard_slave.cUSCI_A0, SPI 3-Wire Slave multiple byte RX/TX

何帅帅:

回复 Susan Yang:

你提供的这个例程是USCI的,不是USI。USI只有一个移位寄存器,USCI有TX和RX两个,不太一样吧

Susan Yang:

回复 何帅帅:

不好意思,最近看2553比较多,下意识就认为是ucsi了。

您可以参考下下面的代码

github.com/…/msp430_spi.c

何帅帅:

回复 Susan Yang:

非常感谢,很有帮助

Susan Yang:

回复 何帅帅:

很高兴能帮到您

赞(0)
未经允许不得转载:TI中文支持网 » MSP430G 系列USI 中SPI 传输16位数据
分享到: 更多 (0)